Просмотр исходного кода

Merge branch 'mode-min-unit' into mode-min-unit-xh

sucheng 1 год назад
Родитель
Сommit
9afef18955

+ 2 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -83,7 +83,8 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     List<String> checkConflict(@Param("checkConflictVos") List<CheckConflictVo> checkConflictVos);
 
     List<ApsProcessOperationProcessEquDo> getConflictId(@Param("equId") String equId,@Param("id") String id,
-                               @Param("startTime")Date startTime,@Param("endTime") Date endTime);
+                               @Param("startTime")Date startTime,@Param("endTime") Date endTime,
+                               @Param("processway") String processway);
 
     @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND PROCESSDEVICEID = #{processdeviceid} AND ID != #{apsProcessOperationProcessEquDoId} AND (WAITREPORTID IS NOT NULL AND WAITREPORTID != '')")
     List<ApsProcessOperationProcessEquDo> selectOtherDeviceList(@Param("processdeviceid") String processdeviceid, @Param("apsProcessOperationProcessEquDoId") String apsProcessOperationProcessEquDoId);

+ 107 - 79
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -31,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.rongwei.bscommon.sys.service.ApsService;
+
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
@@ -182,7 +183,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             logger.error("所选坯料计划:{}存在冲突", blankIds);
             return R.error("请先解决排程冲突在发布");
         }
-       // 如果 订单排程交货期>承诺交货期 抛出异常信息
+        // 如果 订单排程交货期>承诺交货期 抛出异常信息
         List<ApsProductionOrderDo> dataByBlankId = apsProcessOperationDao.getDataByBlankId(blankIds);
         if (!dataByBlankId.isEmpty()) {
             String collect = dataByBlankId.stream()
@@ -199,7 +200,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             log.error("当前坯料计划不存在工序作业明细");
             return R.error("无法根据坯料计划找到工序作业明细");
         }
-         // 判断是否存在强制冲突不为空的数据
+        // 判断是否存在强制冲突不为空的数据
         boolean b = processOperationProcessEquDos.stream().anyMatch(info -> StringUtils.isNotBlank(info.getConflictdes()));
         if (b) {
             log.error("存在强制冲突无法发布");
@@ -210,8 +211,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             // 更新工序作业生产状态
             apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>()
                     .eq(ApsProcessOperationDo::getBlankid, blankId)
-                    .eq(ApsProcessOperationDo::getProcessstatus,TO_BE_PUBLISHED)
-                    .set(ApsProcessOperationDo::getProcessstatus,TO_BE_STARTED)
+                    .eq(ApsProcessOperationDo::getProcessstatus, TO_BE_PUBLISHED)
+                    .set(ApsProcessOperationDo::getProcessstatus, TO_BE_STARTED)
                     .set(ApsProcessOperationDo::getLockmark, LOCKMARK_Y));
             // 工序作业信息
             List<ApsProcessOperationDo> processOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
@@ -406,7 +407,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             if (LOCKMARK_N.equals(lockMark)) {
                 boolean b = apsProcessOperationDos.stream().allMatch(info -> COMPLETED.equals(info.getProcessstatus()) ||
                         PROCESSING.equals(info.getProcessstatus()));
-                if(b){
+                if (b) {
                     return R.error("所选作业都已开工,不可以解锁,不能锁定");
                 }
             }
@@ -448,21 +449,21 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     public R unlock(List<ApsProcessOperationDo> apsProcessOperationDos) {
         // 获取待发布的工序作业
         List<ApsProcessOperationDo> unlockProcessInfo = apsProcessOperationDos.stream()
-                .filter(info ->TO_BE_STARTED.equals(info.getProcessstatus()) || TO_BE_PUBLISHED.equals(info.getProcessstatus()))
+                .filter(info -> TO_BE_STARTED.equals(info.getProcessstatus()) || TO_BE_PUBLISHED.equals(info.getProcessstatus()))
                 .collect(Collectors.toList());
         // 执行解锁作业的工序作业信息
         List<String> processIds = unlockProcessInfo.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList());
         // 获取工序作业对应的坯料计划信息(坯料计划生产状态=待开工)
         List<String> blankIds = apsProcessOperationDos.stream().map(ApsProcessOperationDo::getBlankid).collect(Collectors.toList());
         List<ApsBlankOrderDo> apsBlankOrderDos = this.list(new LambdaQueryWrapper<ApsBlankOrderDo>().in(ApsBlankOrderDo::getId, blankIds).eq(ApsBlankOrderDo::getProductstatus, TO_BE_STARTED));
-        if(!apsBlankOrderDos.isEmpty()){
+        if (!apsBlankOrderDos.isEmpty()) {
             blankIds = apsBlankOrderDos.stream().map(ApsBlankOrderDo::getId).collect(Collectors.toList());
             // 待加工的工序作业执行撤回操作
             publishCancel(blankIds);
             List<ApsProcessOperationDo> list = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>().eq(ApsProcessOperationDo::getBlankid, blankIds));
             processIds.addAll(list.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList()));
         }
-        if(processIds.isEmpty()){
+        if (processIds.isEmpty()) {
             log.error("暂无需要执行解锁的工序作业");
             return R.error("暂无需要执行解锁的工序作业信息");
         }
@@ -573,7 +574,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 先删除所有作业的明细
         List<String> blankids = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
         processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                .in(ApsProcessOperationProcessEquDo::getBlankid, blankids).eq(ApsProcessOperationProcessEquDo::getLockmark,"n"));
+                .in(ApsProcessOperationProcessEquDo::getBlankid, blankids).eq(ApsProcessOperationProcessEquDo::getLockmark, "n"));
         logger.info("作业明细删除结束..: " + blankids);
         // 排程结果保存
         List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
@@ -595,9 +596,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     apsProcessOperationProcessEqu.setTenantid(process.getEquipment().getFactoryid());
                     apsProcessOperationProcessEqu.setPlanstartdate(Date.from(process.getStartTime().atZone(ZoneId.systemDefault()).toInstant()));
                     apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
-                    if("小卷成退".equals(process.getProcessType()) || "小卷包装".equals(process.getProcessType())){
+                    if ("小卷成退".equals(process.getProcessType()) || "小卷包装".equals(process.getProcessType())) {
                         apsProcessOperationProcessEqu.setPlanprocessrall(process.getMinThPcNum());
-                    }else{
+                    } else {
                         apsProcessOperationProcessEqu.setPlanprocessrall(1);
                     }
                     apsProcessOperationProcessEqu.setHasconflict(process.getHasConflict());
@@ -1811,71 +1812,72 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
         //判断是否是新增
         int count = this.count(new QueryWrapper<ApsBlankOrderDo>().lambda().eq(ApsBlankOrderDo::getId, apsBlankOrderDo.getId()));
-        if(count != 0) {
+        if (count != 0) {
             LambdaUpdateWrapper<ApsBlankOrderDo> blankUpdateWrapper = new UpdateWrapper<ApsBlankOrderDo>().lambda();
             blankUpdateWrapper.eq(ApsBlankOrderDo::getId, apsBlankOrderDo.getId());
 
-            blankUpdateWrapper.set(ApsBlankOrderDo::getProductionorderid,apsBlankOrderDo.getProductionorderid());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getBlanknumber,apsBlankOrderDo.getBlanknumber());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getMaterialname,apsBlankOrderDo.getMaterialname());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getMaterialcode,apsBlankOrderDo.getMaterialcode());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getBlanktype,apsBlankOrderDo.getBlanktype());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getProducttype,apsBlankOrderDo.getProducttype());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getAlloy,apsBlankOrderDo.getAlloy());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getAlloystatus,apsBlankOrderDo.getAlloystatus());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getThickness,apsBlankOrderDo.getThickness());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getProwidth,apsBlankOrderDo.getProwidth());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getProlength,apsBlankOrderDo.getProlength());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getSinglerollweight,apsBlankOrderDo.getSinglerollweight());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getNumberunit,apsBlankOrderDo.getNumberunit());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRollnum,apsBlankOrderDo.getRollnum());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getTotalweight,apsBlankOrderDo.getTotalweight());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getPreparematerial,apsBlankOrderDo.getPreparematerial());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getDefectiveproduct,apsBlankOrderDo.getDefectiveproduct());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getPreparematerialbatchno,apsBlankOrderDo.getPreparematerialbatchno());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getOutputorderproduct,apsBlankOrderDo.getOutputorderproduct());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getOutputfinishproduct,apsBlankOrderDo.getOutputfinishproduct());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getOutputmaterial,apsBlankOrderDo.getOutputmaterial());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getProductstatus,apsBlankOrderDo.getProductstatus());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getTenantid,apsBlankOrderDo.getTenantid());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoption,apsBlankOrderDo.getRoption());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getDeleted,apsBlankOrderDo.getDeleted());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRemark,apsBlankOrderDo.getRemark());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getCreatedate,apsBlankOrderDo.getCreatedate());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getCreateuserid,apsBlankOrderDo.getCreateuserid());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getModifydate,apsBlankOrderDo.getModifydate());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getModifyuserid,apsBlankOrderDo.getModifyuserid());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getCreateusername,apsBlankOrderDo.getCreateusername());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getModifyusername,apsBlankOrderDo.getModifyusername());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getProducttypeid,apsBlankOrderDo.getProducttypeid());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getInputreportdescribe,apsBlankOrderDo.getInputreportdescribe());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getCraftrouteid,apsBlankOrderDo.getCraftrouteid());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getLockmark,apsBlankOrderDo.getLockmark());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getIsstag,apsBlankOrderDo.getIsstag());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getSchedulingstatus,apsBlankOrderDo.getSchedulingstatus());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getPlanhavematerialdate,apsBlankOrderDo.getPlanhavematerialdate());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getDeliverydate,apsBlankOrderDo.getDeliverydate());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getScheduledatestart,apsBlankOrderDo.getScheduledatestart());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getScheduledateend,apsBlankOrderDo.getScheduledateend());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getPromisedatestart,apsBlankOrderDo.getPromisedatestart());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getPromisedateend,apsBlankOrderDo.getPromisedateend());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getPlannedproductionworkshop,apsBlankOrderDo.getPlannedproductionworkshop());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getBlankoutmatertype,apsBlankOrderDo.getBlankoutmatertype());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getBlankoutmaterspecification,apsBlankOrderDo.getBlankoutmaterspecification());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getProcessoutmaterspecification,apsBlankOrderDo.getProcessoutmaterspecification());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRouteproducttypeid,apsBlankOrderDo.getRouteproducttypeid());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutemetal,apsBlankOrderDo.getRoutemetal());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutemetalstate,apsBlankOrderDo.getRoutemetalstate());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutethinckstr,apsBlankOrderDo.getRoutethinckstr());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutethickend,apsBlankOrderDo.getRoutethickend());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutewodthstr,apsBlankOrderDo.getRoutewodthstr());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutewidthend,apsBlankOrderDo.getRoutewidthend());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutelengthstr,apsBlankOrderDo.getRoutelengthstr());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutelengthend,apsBlankOrderDo.getRoutelengthend());
-            blankUpdateWrapper.set(ApsBlankOrderDo::getBlankappearance,apsBlankOrderDo.getBlankappearance());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getProductionorderid, apsBlankOrderDo.getProductionorderid());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getBlanknumber, apsBlankOrderDo.getBlanknumber());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getMaterialname, apsBlankOrderDo.getMaterialname());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getMaterialcode, apsBlankOrderDo.getMaterialcode());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getBlanktype, apsBlankOrderDo.getBlanktype());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getProducttype, apsBlankOrderDo.getProducttype());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getAlloy, apsBlankOrderDo.getAlloy());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getAlloystatus, apsBlankOrderDo.getAlloystatus());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getThickness, apsBlankOrderDo.getThickness());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getProwidth, apsBlankOrderDo.getProwidth());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getProlength, apsBlankOrderDo.getProlength());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getSinglerollweight, apsBlankOrderDo.getSinglerollweight());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getNumberunit, apsBlankOrderDo.getNumberunit());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRollnum, apsBlankOrderDo.getRollnum());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getTotalweight, apsBlankOrderDo.getTotalweight());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getPreparematerial, apsBlankOrderDo.getPreparematerial());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getDefectiveproduct, apsBlankOrderDo.getDefectiveproduct());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getPreparematerialbatchno, apsBlankOrderDo.getPreparematerialbatchno());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getOutputorderproduct, apsBlankOrderDo.getOutputorderproduct());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getOutputfinishproduct, apsBlankOrderDo.getOutputfinishproduct());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getOutputmaterial, apsBlankOrderDo.getOutputmaterial());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getProductstatus, apsBlankOrderDo.getProductstatus());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getTenantid, apsBlankOrderDo.getTenantid());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoption, apsBlankOrderDo.getRoption());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getDeleted, apsBlankOrderDo.getDeleted());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRemark, apsBlankOrderDo.getRemark());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getCreatedate, apsBlankOrderDo.getCreatedate());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getCreateuserid, apsBlankOrderDo.getCreateuserid());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getModifydate, apsBlankOrderDo.getModifydate());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getModifyuserid, apsBlankOrderDo.getModifyuserid());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getCreateusername, apsBlankOrderDo.getCreateusername());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getModifyusername, apsBlankOrderDo.getModifyusername());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getProducttypeid, apsBlankOrderDo.getProducttypeid());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getInputreportdescribe, apsBlankOrderDo.getInputreportdescribe());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getCraftrouteid, apsBlankOrderDo.getCraftrouteid());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getLockmark, apsBlankOrderDo.getLockmark());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getIsstag, apsBlankOrderDo.getIsstag());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getSchedulingstatus, apsBlankOrderDo.getSchedulingstatus());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getPlanhavematerialdate, apsBlankOrderDo.getPlanhavematerialdate());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getDeliverydate, apsBlankOrderDo.getDeliverydate());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getScheduledatestart, apsBlankOrderDo.getScheduledatestart());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getScheduledateend, apsBlankOrderDo.getScheduledateend());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getPromisedatestart, apsBlankOrderDo.getPromisedatestart());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getPromisedateend, apsBlankOrderDo.getPromisedateend());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getPlannedproductionworkshop, apsBlankOrderDo.getPlannedproductionworkshop());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getBlankoutmatertype, apsBlankOrderDo.getBlankoutmatertype());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getBlankoutmaterspecification, apsBlankOrderDo.getBlankoutmaterspecification());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getProcessoutmaterspecification, apsBlankOrderDo.getProcessoutmaterspecification());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRouteproducttypeid, apsBlankOrderDo.getRouteproducttypeid());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutemetal, apsBlankOrderDo.getRoutemetal());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutemetalstate, apsBlankOrderDo.getRoutemetalstate());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutethinckstr, apsBlankOrderDo.getRoutethinckstr());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutethickend, apsBlankOrderDo.getRoutethickend());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutewodthstr, apsBlankOrderDo.getRoutewodthstr());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutewidthend, apsBlankOrderDo.getRoutewidthend());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutelengthstr, apsBlankOrderDo.getRoutelengthstr());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getRoutelengthend, apsBlankOrderDo.getRoutelengthend());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getBlankappearance, apsBlankOrderDo.getBlankappearance());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getMaxheatroll, apsBlankOrderDo.getMaxheatroll());
 
             this.update(blankUpdateWrapper);
-        }else {
+        } else {
             this.save(apsBlankOrderDo);
         }
 
@@ -1905,20 +1907,46 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 String processoperationequid = progressWork.getProcessoperationequid();
                 //在制品对应的工序作业输出物料ID
                 String joboutputmaterialid = progressWork.getJoboutputmaterialid();
-                //该对应工序作业的已借调卷数=已借调卷数+1
-                this.baseMapper.processAddSecondRoll(processoperationid);
+//                //该对应工序作业的已借调卷数=已借调卷数+1
+//                this.baseMapper.processAddSecondRoll(processoperationid);
 //                //将在制品的作业输出物料ID对应的所有后道工序作业的所有作业明细的待加工料卷批次号去掉“{批次号},”
 //                this.baseMapper.processDeleteBatchNumber(batchnumber, processoperationid);
                 //查找该在制品作业明细ID对应的后道作业明细中,其工序作业的输入物料ID是该在制品的作业输出物料ID的所有作业明细,
                 //将这些作业明细的待加工料卷批次号去掉“{批次号},”
                 this.baseMapper.updateBatchNumberByBorrow(batchnumber, processoperationequid, joboutputmaterialid);
-                //处理后续工序状态
-                Map<String, Object> params2 = new HashMap<>();
-                params2.put("processId", processoperationid);
-                R r2 = apsProcessOperationService.updateBorrowProcess(params2);
-                if (!r2.getCode().equals("200")) {
-                    return R.error(r2.getMsg());
+
+                //更新工序作业的一借调卷数
+                ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(processoperationid);
+                Integer secondroll = apsProcessOperationDo.getSecondroll() + 1;
+
+                ApsProcessOperationDo needUpdateProcess = new ApsProcessOperationDo();
+                needUpdateProcess.setId(processoperationid);
+                needUpdateProcess.setSecondroll(secondroll);
+                apsProcessOperationService.updateById(needUpdateProcess);
+
+                /**
+                 * 如果已借调卷数>已取消卷数
+                 * 本次取消卷数=1
+                 * 根据本次取消卷数更新对应工序作业的取消卷数
+                 */
+                if (secondroll > apsProcessOperationDo.getCancelroll()) {
+                    CancelProcessOperationVo cancelProcessOperationVo = new CancelProcessOperationVo();
+                    cancelProcessOperationVo.setApsprocessoperationdo(apsProcessOperationDo);
+                    cancelProcessOperationVo.setCurcancelroll(1);
+                    R r = apsProcessOperationService.cancelProcessOperation(cancelProcessOperationVo);
+                    if (!r.getCode().equals("200")) {
+                        throw new CustomException(r.getMsg());
+                    }
                 }
+
+
+//                //处理后续工序状态
+//                Map<String, Object> params2 = new HashMap<>();
+//                params2.put("processId", processoperationid);
+//                R r2 = apsProcessOperationService.updateBorrowProcess(params2);
+//                if (!r2.getCode().equals("200")) {
+//                    return R.error(r2.getMsg());
+//                }
             }
         }
 

+ 14 - 9
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -460,16 +460,19 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 log.error("该作业已发布,不能调整开工时间");
                 throw new RuntimeException("该作业已发布,不能调整开工时间");
             }
+            // 当前工序的加工方式
+            String processway = operationDo.getProcessway();
+
             // 获取更新之前的存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getConflictId(changeStartTimeVo.getEquId(), changeStartTimeVo.getId(),
-                    processEquDo.getPlanstartdate(), processEquDo.getPlanenddate());
+                    processEquDo.getPlanstartdate(), processEquDo.getPlanenddate(), processway);
             affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             // 找到更新时间之后存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(changeStartTimeVo.getEquId(), changeStartTimeVo.getId(),
-                    changeStartTimeVo.getPlanStartTime(), changeStartTimeVo.getPlanEndTime());
+                    changeStartTimeVo.getPlanStartTime(), changeStartTimeVo.getPlanEndTime(), processway);
             affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             if (!beforeUpdatingConflictId.isEmpty()) {
-                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS);
+                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS, processway);
             }
 
             if (!afterTheUpdateConflictId.isEmpty()) {
@@ -559,15 +562,16 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             apsProcessOperationProcessEquDo.setPlanenddate(new Date(apsProcessOperationProcessEquDo.getPlanenddate().getTime() + jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
             // 获取更新之前的存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getConflictId(
-                    oldEquId, id, oldPlanstartdate, oldPlanenddate);
+                    oldEquId, id, oldPlanstartdate, oldPlanenddate,apsProcessOperationDo.getProcessway());
             affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             // 找到更新时间之后存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(
                     apsProcessOperationProcessEquDo.getProcessdeviceid(), id,
-                    apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate());
+                    apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
+                    apsProcessOperationDo.getProcessway());
             affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             if (!beforeUpdatingConflictId.isEmpty()) {
-                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS);
+                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS,apsProcessOperationDo.getProcessway());
             }
 
             if (!afterTheUpdateConflictId.isEmpty()) {
@@ -756,13 +760,14 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
      * @param removeConflictsDesc      需要被删除的冲突描述
      */
     public void updateProcessEquBeforeAddConflictsDesc(List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId,
-                                                       String removeConflictsDesc) {
+                                                       String removeConflictsDesc,String processway) {
         if (beforeUpdatingConflictId.isEmpty()) {
             return;
         }
         beforeUpdatingConflictId.forEach(info -> {
-            // 判断是否和其他工序作业明细存在从头
-            List<ApsProcessOperationProcessEquDo> conflictId = this.baseMapper.getConflictId(info.getProcessdeviceid(), info.getId(), info.getPlanstartdate(), info.getPlanenddate());
+            // 判断是否和其他工序作业明细存在冲突
+            List<ApsProcessOperationProcessEquDo> conflictId = this.baseMapper.getConflictId(info.getProcessdeviceid(),
+                    info.getId(), info.getPlanstartdate(), info.getPlanenddate(), processway);
             if (!conflictId.isEmpty()) {
                 info.setConflictdes(removeConflictsDesc(info.getConflictdes(), removeConflictsDesc));
                 info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) &&

+ 4 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -1964,7 +1964,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
             if (bool1 && bool2 && bool3) {
                 //更新坯料计划的所选工艺路线相关信息
-                ApsCraftRouteDo apsCraftRouteDo = apsCraftRouteService.getById(craftrouteid);
+                ApsCraftRouteDo apsCraftRouteDo = null;
+                if (StringUtils.isNotBlank(craftrouteid)) {
+                    apsCraftRouteDo = apsCraftRouteService.getById(craftrouteid);
+                }
                 R r = new R();
                 r.setCode("200");
                 r.setData(apsCraftRouteDo);

+ 3 - 35
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceHistoryImpl.java

@@ -1,42 +1,10 @@
 package com.rongwei.bscommon.sys.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.rongwei.bscommon.sys.dao.*;
-import com.rongwei.bscommon.sys.service.*;
-import com.rongwei.bscommon.sys.utils.ApsUtils;
-import com.rongwei.bsentity.domain.*;
-import com.rongwei.bsentity.vo.ApsProductDetailVo;
-import com.rongwei.bsentity.vo.CheckAndSaveOrUpdateBlankReq;
-import com.rongwei.bsentity.vo.CheckAndSaveOrUpdateOrderReq;
-import com.rongwei.bsentity.vo.DeleteOrderVo;
-import com.rongwei.rwadmincommon.system.vo.SysUserVo;
-import com.rongwei.rwcommon.base.BaseDo;
-import com.rongwei.rwcommon.base.R;
-import com.rongwei.rwcommon.utils.SecurityUtil;
-import com.rongwei.rwcommon.utils.StringUtils;
-import com.rongwei.rwcommon.vo.MailDo;
-import com.rongwei.safecommon.fegin.CXCommonFeginClient;
-import com.rongwei.safecommon.utils.CXCommonUtils;
-import com.rongwei.safecommon.utils.SaveConstans;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.rongwei.bscommon.sys.dao.ApsProductionOrderHistoryDao;
+import com.rongwei.bscommon.sys.service.ApsProductionOrderHistoryService;
+import com.rongwei.bsentity.domain.ApsProductionOrderHistoryDo;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.rongwei.safecommon.utils.SaveConstans.DatePattern.DATE_PATTERN_YMD;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.*;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.*;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.*;
 
 /**
  *

+ 4 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java

@@ -139,6 +139,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getStartingroll, newStartingRoll);
         //待报工记录ID=(空)
         processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getWaitreportid, null);
+        //加工中批次号=(空)
+        processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
         /**
          * 如果已开工卷数=0,则更新该作业明细
          * 实际开工时间=(空),
@@ -443,7 +445,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //已开工卷数
         Integer newProcessStartingRoll = processStartingRoll + 1;
         //剩余待开工卷数=计划加工卷数-已开工卷数-输入已取消卷数-已取消卷数
-        needUpdateProcessOperation.setLeavewaitjobroll(apsProcessOperationDo.getPlanprocessrall() - newProcessStartingRoll - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll());
+        needUpdateProcessOperation.setLeavewaitworkroll(apsProcessOperationDo.getPlanprocessrall() - newProcessStartingRoll - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll());
         needUpdateProcessOperation.setStartingroll(newProcessStartingRoll);
         if (newProcessStartingRoll.equals(1)) {
             needUpdateProcessOperation.setActualstartdate(DateUtil.date());
@@ -1327,7 +1329,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //更新该工序作业已开工卷数=已开工卷数+输入批次号数量
         needUpdateProcess.setStartingroll(apsProcessOperationDo.getStartingroll() + inputBatchNumberList.size());
         //剩余待开工卷数=计划加工卷数-已开工卷数-输入已取消卷数-已取消卷数
-        needUpdateProcess.setLeavewaitjobroll(apsProcessOperationDo.getPlanprocessrall() - needUpdateProcess.getStartingroll() - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll());
+        needUpdateProcess.setLeavewaitworkroll(apsProcessOperationDo.getPlanprocessrall() - needUpdateProcess.getStartingroll() - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll());
         apsProcessOperationService.updateById(needUpdateProcess);
 
         //更新坯料计划状态,参见【订单排程/一键自动排程/更新坯料计划状态】

+ 4 - 4
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/GanttServiceImpl.java

@@ -37,6 +37,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.*;
+import static com.rongwei.safecommon.utils.SaveConstans.ProcessWay.PROCESS_WAY_MERGE;
 import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
 
 /**
@@ -64,7 +65,6 @@ public class GanttServiceImpl implements GanttService {
     public static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     public static final String DEFAULT_TYPE = "project";
     public static final String DEFAULT_RENDER = "split";
-    public static final String COMBINED_PROCESSING = "合并加工";
     public static final String SCHEDULING_STR = "%s-正在排程";
     public static final String SCHEDULING_TO_BE_PUBLISHED_STR = "%s-排程结束待发布";
     public static final String DEFAULT_SPLIT = "-;-";
@@ -339,10 +339,10 @@ public class GanttServiceImpl implements GanttService {
         LinkedHashMap<String, List<GanttVos>> processMap = apsProcessOperationProcessEquDos.stream().collect(Collectors.groupingBy(GanttVos::getProcessdeviceid,
                     LinkedHashMap::new, Collectors.toList()));
         for (Map.Entry<String, List<GanttVos>> deviceEntry : processMap.entrySet()) {
-            // 对数据按照 计划开始时间+计划结束时间 分组
+            // 对数据按照 计划开始时间 分组
             LinkedHashMap<String, List<GanttVos>> planDataMap = deviceEntry.getValue().stream().collect(Collectors.groupingBy(info -> {
-                        if (COMBINED_PROCESSING.equals(info.getProcessway())) {
-                            return info.getPlanstartdate().toString() + info.getPlanenddate().toString();
+                        if (PROCESS_WAY_MERGE.equals(info.getProcessway())) {
+                            return info.getPlanstartdate().toString();
                         }
                         return info.getUuid();
                     },

+ 11 - 6
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -405,16 +405,21 @@
         </where>
     </select>
     <select id="getConflictId" resultType="com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo">
-        select * from aps_process_operation_process_equ
+        select apope.*
+        from aps_process_operation_process_equ apope
+                left join aps_process_operation app on apope.PROCESSID=app.DELETED='0'
             <where>
-                DELETED='0'
-                AND ID != #{id}
-                AND PROCESSDEVICEID =#{equId}
+                apope.DELETED='0'
+                AND apope.ID != #{id}
+                AND apope.PROCESSDEVICEID =#{equId}
                 AND (
-                (#{startTime}&lt; PLANENDDATE and #{endTime} > PLANSTARTDATE)
+                (#{startTime}&lt; apope.PLANENDDATE and #{endTime} > apope.PLANSTARTDATE)
                   or
-                (PLANSTARTDATE &lt; #{endTime} and PLANENDDATE > #{startTime})
+                (apope.PLANSTARTDATE &lt; #{endTime} and apope.PLANENDDATE > #{startTime})
                 )
+                <if test="processway == '合并加工'">
+                    and ((app.PROCESSWAY != '合并加工') or(app.PROCESSWAY = '合并加工' and apope.PLANSTARTDATE!= #{startTime}) )
+                </if>
             </where>
     </select>
     <select id="getWorkshopAndDeviceByFactoryId" resultType="com.rongwei.bsentity.vo.GanttVos">

+ 6 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsBlankOrderDo.java

@@ -302,4 +302,10 @@ public class ApsBlankOrderDo extends BaseDo {
      */
     @TableField(value = "BLANKAPPEARANCE")
     private String blankappearance;
+
+    /**
+     * 最大装炉卷数
+     */
+    @TableField(value = "MAXHEATROLL")
+    private String maxheatroll;
 }

+ 6 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsBlankOrderHistoryDo.java

@@ -226,4 +226,10 @@ public class ApsBlankOrderHistoryDo extends BaseDo {
     @TableField("BLANKAPPEARANCE")
     private String blankappearance;
 
+    /**
+     * 最大装炉卷数
+     */
+    @TableField(value = "MAXHEATROLL")
+    private String maxheatroll;
+
 }