@ -5,60 +5,88 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.cron.CronUtil ;
import cn.hutool.cron.task.Task ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.baomidou.mybatisplus.core.toolkit.Wrappers ;
import com.dsic.gj_erp.bean.pgd.PgdQgjh ;
import com.dsic.gj_erp.bean.xiaochi.CutPlan ;
import com.dsic.gj_erp.bean.xiaochi.User ;
import com.dsic.gj_erp.bean.xiaochi.Device ;
import com.dsic.gj_erp.bean.xiaochi.XiaochiUser ;
import com.dsic.gj_erp.mapper.xiaochi.CutPlanMapper ;
import com.dsic.gj_erp.service.pgd.PgdQgjhService ;
import lombok.AllArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
import org.springframework.stereotype.Service ;
import javax.annotation.PostConstruct ;
import java.util.* ;
import java.util.stream.Collectors ;
@Service
@Slf4j
@AllArgsConstructor
public class XiaoChiService {
private final PgdQgjhService qgjhService ;
private final CutPlanMapper mapper ;
//fixme 小池查询逻辑有出入,暂时不启用
/ * *
* 小 池 同 步 , 先 使 用 手 动 拉 取 方 式 , 让 钢 加 人 员 进 行 检 查
* 后 续 改 为 自 动 拉 取
* /
// @PostConstruct
public void handler ( ) {
List < User > users = new User ( ) . selectAll ( ) ;
Map < String , User > userMap = new HashMap < > ( ) ;
List < XiaochiUser > users = new XiaochiUser ( ) . selectAll ( ) ;
List < Device > devices = new Device ( ) . selectAll ( ) ;
Map < String , XiaochiUser > userMap = new HashMap < > ( ) ;
users . forEach ( item - > {
userMap . put ( item . getEmployeeNumber ( ) , item ) ;
} ) ;
Map < Integer , Device > deviceMap = new HashMap < > ( ) ;
devices . forEach ( item - > {
deviceMap . put ( item . getId ( ) , item ) ;
} ) ;
this . exe ( userMap , deviceMap ) ;
}
private void exe ( Map < String , XiaochiUser > userMap , Map < Integer , Device > deviceMap ) {
log . info ( "========小池同步开始===========" ) ;
//todo sql查询时过滤划线数据
List < CutPlan > cutPlans = mapper . getCutPlanList ( DateUtil . lastMonth ( ) . toString ( ) , DateUtil . today ( ) )
. stream ( ) . filter ( item - > StrUtil . isNotEmpty ( item . getNestKakuyakuDate ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < PgdQgjh > list = new ArrayList < > ( ) ;
cutPlans . forEach ( item - > {
PgdQgjh one = qgjhService . getOne ( Wrappers . < PgdQgjh > lambdaQuery ( )
. eq ( PgdQgjh : : getCzbh , item . getNestExtC02 ( ) )
. eq ( PgdQgjh : : getTlth , item . getNestNameSub1 ( ) )
. eq ( PgdQgjh : : getKw , item . getNestExtC03 ( ) )
. eq ( PgdQgjh : : getPl , item . getNestExtC04 ( ) )
) ;
if ( ObjectUtil . isNotEmpty ( one ) ) {
PgdQgjh _item = new PgdQgjh ( ) ;
_item . setId ( one . getId ( ) ) ;
Optional . of ( userMap . get ( item . getNestExtC05 ( ) ) )
. ifPresent ( user - > _item . setFkry ( userMap . get ( item . getNestExtC05 ( ) ) . getName ( ) ) ) ;
Optional . of ( deviceMap . get ( item . getNestCutHo ( ) ) )
. ifPresent ( user - > _item . setQgsbbh ( deviceMap . get ( item . getNestCutHo ( ) ) . getMachineName ( ) ) ) ;
_item . setFkrq ( DateUtil . format ( DateUtil . date ( ) , "yyyy/MM/dd HH:mm:ss" ) ) ;
_item . setQgksrq ( item . getQgkssj ( ) ) ;
if ( StrUtil . isNotEmpty ( item . getQgjssj ( ) ) ) {
_item . setQgjsrq ( item . getQgjssj ( ) ) ;
_item . setZt ( "09" ) ;
}
list . add ( _item ) ;
}
} ) ;
qgjhService . updateBatchById ( list , 500 ) ;
log . info ( "========小池同步完成===========" ) ;
}
private void exeAuto ( Map < String , XiaochiUser > userMap , Map < Integer , Device > deviceMap ) {
//CronUtil默认为分钟,目前未使用CronUtil.setMatchSecond(true)启动秒级任务,以下表示每30分钟执行一次
//每30分钟执行一次,获取小池今日加工并且未更新切割计划派工单的数据去更新派工单
CronUtil . schedule ( "*/30 * * * * *" , ( Task ) ( ) - > {
List < CutPlan > cutPlans = new CutPlan ( ) . selectList ( Wrappers . < CutPlan > lambdaQuery ( )
. eq ( CutPlan : : getNestKakuyakuDate , DateUtil . today ( ) )
. notExists ( "select b.czbh as nest_ext_c02,b.kw as nest_ext_c03 ,b.pl as nest_ext_c04 from pgd_qgjh b where b.czbh=tbl_nest_mast.nest_ext_c02 and b.tlth=tbl_nest_mast.nest_name_sub1 and b.kw=tbl_nest_mast.nest_ext_c03 and b.pl=tbl_nest_mast.nest_ext_c04 and (b.qgksrq is null or qgjsrq is null )" )
) ;
List < PgdQgjh > list = new ArrayList < > ( ) ;
cutPlans . forEach ( item - > {
PgdQgjh one = qgjhService . getOne ( Wrappers . < PgdQgjh > lambdaQuery ( )
. eq ( PgdQgjh : : getCzbh , item . getNestExtC02 ( ) )
. eq ( PgdQgjh : : getTlth , item . getNestNameSub1 ( ) )
. eq ( PgdQgjh : : getKw , item . getNestExtC03 ( ) )
. eq ( PgdQgjh : : getPl , item . getNestExtC04 ( ) )
) ;
if ( ObjectUtil . isNotEmpty ( one ) ) {
PgdQgjh _item = new PgdQgjh ( ) ;
_item . setId ( one . getId ( ) ) ;
Optional . of ( userMap . get ( item . getNestExtC05 ( ) ) )
. ifPresent ( user - > _item . setFkry ( userMap . get ( item . getNestExtC05 ( ) ) . getName ( ) ) ) ;
_item . setFkrq ( DateUtil . format ( DateUtil . date ( ) , "yyyy/MM/dd HH:mm:ss" ) ) ;
_item . setQgksrq ( item . getQgkssj ( ) ) ;
if ( StrUtil . isNotEmpty ( item . getQgjssj ( ) ) ) {
_item . setQgjsrq ( item . getQgjssj ( ) ) ;
_item . setZt ( "09" ) ;
}
list . add ( _item ) ;
}
} ) ;
qgjhService . updateBatchById ( list , 500 ) ;
this . exe ( userMap , deviceMap ) ;
} ) ;
CronUtil . start ( ) ;
}