Bläddra i källkod

计划作业时长逻辑添加

DLC 1 år sedan
förälder
incheckning
a2c2a02621

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

@@ -92,6 +92,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
     private ApsProcessOperationProcessEquDao apsProcessOperationProcessEquDao;
     @Autowired
     private ApsProcessOperationProcessEquBackupDao apsProcessOperationProcessEquBackupDao;
+    @Autowired
+    private ApsScheduleConfigService apsScheduleConfigService;
 
 
     private final static Map<String, String> UNIT_MAP = new HashMap<String, String>() {{
@@ -108,7 +110,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
      * @param ids
      * @param batchNumn
      */
-    public void updateBachmaterialprocessByIds(List<String> ids, String batchNumn,int unqualifiedQuantity) {
+    public void updateBachmaterialprocessByIds(List<String> ids, String batchNumn, int unqualifiedQuantity) {
         apsProcessOperationDao.updateBachmaterialprocessByIds(ids, batchNumn, unqualifiedQuantity);
     }
 
@@ -146,6 +148,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             JSONObject blanckdata = new JSONObject(params.get("BLANKDATA"));
             String craftrouteid = params.get("CRAFTROUTEID").toString();
 
+            // 获取排程参数设置
+            List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
+            BigDecimal aluminumdensity = apsConfigs.get(0).getAluminumdensity();
+
             //先清空之前的相关数据
             Map<String, Object> blanckMap = new HashMap<>();
             blanckMap.put("BLANKID", blanckdata.getStr("ID"));
@@ -235,6 +241,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             //输入物料ID对应前道工序作业输出物料只有一个后道工序作业),则不可编辑,自动计算=计划输入卷数
                             if (apsCraftRouteStepDoList1.size() == 1) {
                                 apsProcessOperationDo.setPlanprocessrall(processVo.get(0).getPlanprocessrall());
+                                if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
+                                    //计划作业时长
+                                    apsProcessOperationDo.setProcesstotaltime(getProcesstotaltime(apsProcessOperationDo, aluminumdensity));
+                                }
                             } else {
                                 apsProcessOperationDo.setPlanprocessrall(0);
                             }
@@ -383,6 +393,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         apsProcessOperationDo.setBlankid(blanckdata.getStr("ID"));
                         apsProcessOperationDo.setCraftstepid(apsCraftRouteStepDo.getId());
 
+                        if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
+                            //计划作业时长
+                            apsProcessOperationDo.setProcesstotaltime(getProcesstotaltime(apsProcessOperationDo, aluminumdensity));
+                        }
+
                         //本道工序信息
                         previousProcessVo.setProcessId(processId);
                         previousProcessVo.setProcessName(apsProcessOperationDo.getProcessname());
@@ -670,6 +685,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
     public List<ApsProcessOperationOutMaterDo> resetProcessOperation(List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList) {
         List<ApsProcessOperationOutMaterDo> operationOutMaterDos = new ArrayList<>();//递归的数据源
         try {
+            // 获取排程参数设置
+            List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
+            BigDecimal aluminumdensity = apsConfigs.get(0).getAluminumdensity();
 //            List<ApsProcessOperationDo> processOperationDos = apsProcessOperationDao.getProcessOperation(apsProcessOperationOutMaterDoList.get(0).getBlankid());
             //该坯料计划所有的工序及输出
             Map<String, Object> map = new HashMap<>();
@@ -698,6 +716,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     //输入物料ID对应前道工序作业输出物料只有一个后道工序作业),则不可编辑,自动计算=计划输入卷数
                     if (apsProcessOperationDos.size() == 1) {
                         apsProcessOperationDo.setPlanprocessrall(planinrall);
+                        if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
+                            //计划作业时长
+                            apsProcessOperationDo.setProcesstotaltime(getProcesstotaltime(apsProcessOperationDo, aluminumdensity));
+                        }
 //                        ApsProcessOperationDo operationDo = processOperationDos.stream().filter(item -> item.getId().equals(apsProcessOperationDo.getPreviousprocessid())).findFirst().get();
 //                        apsProcessOperationDo.setPlanprocessrall(operationDo.getPlanprocessrall());
                     }
@@ -853,6 +875,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
     /**
      * 工序作业备份
+     *
      * @return
      */
     @Override
@@ -862,15 +885,15 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         ApsUtils.clearBackup(currentUser);
         List<ApsProcessOperationDo> apsProcessOperationDos = apsProcessOperationDao.selectList(
                 new LambdaQueryWrapper<ApsProcessOperationDo>()
-                .in(ApsProcessOperationDo::getProcessstatus, "20"));
+                        .in(ApsProcessOperationDo::getProcessstatus, "20"));
         // 再备份
         List<String> collect = apsProcessOperationDos.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList());
         apsProcessOperationBackupDao.processOperationBackup(collect,
-                currentUser ==null?"":currentUser.getId(),
-                currentUser ==null?"":currentUser.getName());
+                currentUser == null ? "" : currentUser.getId(),
+                currentUser == null ? "" : currentUser.getName());
         apsProcessOperationProcessEquBackupDao.processOperationEquCopy(collect,
-                currentUser ==null?"":currentUser.getId(),
-                currentUser ==null?"":currentUser.getName());
+                currentUser == null ? "" : currentUser.getId(),
+                currentUser == null ? "" : currentUser.getName());
         return R.ok();
     }
 
@@ -883,10 +906,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
     public R backupRestoreProcessOperation() {
         log.debug("开始恢复工序作业备份信息");
         SysUserVo currentUser = CXCommonUtils.getCurrentUser();
-        String factoryId =null;
-        if(currentUser!=null){
+        String factoryId = null;
+        if (currentUser != null) {
             List<SysOrganizationVo> organizationDoList = currentUser.getOrganizationDoList();
-             factoryId = organizationDoList.stream()
+            factoryId = organizationDoList.stream()
                     .filter(org -> MINUS_ONE.equals(org.getPid()))
                     .map(SysOrganizationDo::getId)
                     .distinct()
@@ -899,26 +922,26 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         }
         List<ApsProcessOperationProcessEquBackupDo> apsProcessOperationProcessEquBackupDos = apsProcessOperationProcessEquBackupDao
                 .selectList(new LambdaQueryWrapper<ApsProcessOperationProcessEquBackupDo>()
-                .eq(StringUtils.isNotBlank(factoryId),ApsProcessOperationProcessEquBackupDo::getTenantid, factoryId));
+                        .eq(StringUtils.isNotBlank(factoryId), ApsProcessOperationProcessEquBackupDo::getTenantid, factoryId));
         List<ApsProcessOperationBackupDo> apsProcessOperationBackupDos = apsProcessOperationBackupDao.selectList(new LambdaQueryWrapper<ApsProcessOperationBackupDo>()
-                .eq(StringUtils.isNotBlank(factoryId),ApsProcessOperationBackupDo::getTenantid, factoryId));
+                .eq(StringUtils.isNotBlank(factoryId), ApsProcessOperationBackupDo::getTenantid, factoryId));
         List<ApsProcessOperationDo> saveList = new ArrayList<>();
         List<ApsProcessOperationProcessEquDo> equSaveList = new ArrayList<>();
-        apsProcessOperationProcessEquBackupDos.forEach(data->{
-            ApsProcessOperationProcessEquDo equDo= new ApsProcessOperationProcessEquDo();
-            BeanUtils.copyProperties(data,equDo);
+        apsProcessOperationProcessEquBackupDos.forEach(data -> {
+            ApsProcessOperationProcessEquDo equDo = new ApsProcessOperationProcessEquDo();
+            BeanUtils.copyProperties(data, equDo);
             equSaveList.add(equDo);
         });
-        apsProcessOperationBackupDos.forEach(data->{
-            ApsProcessOperationDo operationDo= new ApsProcessOperationDo();
-            BeanUtils.copyProperties(data,operationDo);
+        apsProcessOperationBackupDos.forEach(data -> {
+            ApsProcessOperationDo operationDo = new ApsProcessOperationDo();
+            BeanUtils.copyProperties(data, operationDo);
             saveList.add(operationDo);
         });
-        if(!saveList.isEmpty()){
-            apsProcessOperationService.saveOrUpdateBatch(saveList,100);
+        if (!saveList.isEmpty()) {
+            apsProcessOperationService.saveOrUpdateBatch(saveList, 100);
         }
-        if(!equSaveList.isEmpty()){
-            apsProcessOperationProcessEquService.saveOrUpdateBatch(equSaveList,100);
+        if (!equSaveList.isEmpty()) {
+            apsProcessOperationProcessEquService.saveOrUpdateBatch(equSaveList, 100);
         }
         return R.ok();
     }
@@ -1148,4 +1171,22 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         }
         return String.join(",", equIds);
     }
+
+    /*
+     计划作业时长
+     */
+    private BigDecimal getProcesstotaltime(ApsProcessOperationDo apsProcessOperationDo, BigDecimal aluminumdensity) {
+        String processtotaltime = null;
+        if (apsProcessOperationDo.getTimeway().equals("10")) {
+            //如果计时方式=按设备运转速度计时,计划作业时长=计划加工卷数*输入单卷重/(输入物料宽度/1000*输入物料厚度/1000*设备运转速度/1000*铝的密度)
+            BigDecimal prowidth = apsProcessOperationDo.getProwidth() == null ? BigDecimal.valueOf(1) : apsProcessOperationDo.getProwidth();
+            BigDecimal thickness = apsProcessOperationDo.getThickness() == null ? BigDecimal.valueOf(1) : apsProcessOperationDo.getThickness();
+            BigDecimal workspeed = apsProcessOperationDo.getWorkspeed() == null ? BigDecimal.valueOf(1) : apsProcessOperationDo.getWorkspeed();
+            processtotaltime = df.format(apsProcessOperationDo.getSinglerollweight().multiply(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall())).multiply(BigDecimal.valueOf(1000000000)).divide(prowidth.multiply(thickness).multiply(workspeed).multiply(aluminumdensity), 2, BigDecimal.ROUND_HALF_UP));
+        } else if (apsProcessOperationDo.getTimeway().equals("40")) {
+            //如果计时方式=按单次加工时长计时,计划作业时长=单次加工时长*计划加工卷数
+            processtotaltime = df.format(apsProcessOperationDo.getOnceprocessmin().multiply(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall())));
+        }
+        return new BigDecimal(processtotaltime);
+    }
 }

+ 10 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsScheduleConfigDo.java

@@ -117,6 +117,16 @@ public class ApsScheduleConfigDo extends BaseDo {
      */
     @TableField("BOTTLENPROCESS")
     private String bottlenprocess;
+    /**
+     * 退火炉套筒间隙(毫米)
+     */
+    @TableField("FURNACE")
+    private BigDecimal furnace;
+    /**
+     * 铝密度
+     */
+    @TableField("ALUMINUMDENSITY")
+    private BigDecimal aluminumdensity;
 
 
 }