Parcourir la source

生成工序作业

DLC il y a 1 an
Parent
commit
5a037f4e79

+ 6 - 0
cx-aps/cx-aps-common/pom.xml

@@ -43,6 +43,12 @@
             <groupId>org.freemarker</groupId>
             <artifactId>freemarker</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>bs-common</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 </project>

+ 13 - 6
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationDao.java

@@ -1,8 +1,9 @@
 package com.rongwei.bscommon.sys.dao;
 
-import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
 
@@ -15,10 +16,16 @@ import java.util.List;
  * @since 2024-03-01
  */
 public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo> {
-  void  updateBachmaterialprocessByIds(@Param("ids") List<String> ids,@Param("batchNum") String batchNum);
+    void updateBachmaterialprocessByIds(@Param("ids") List<String> ids, @Param("batchNum") String batchNum);
+
+    void updateAboutCheckBatchNum(@Param("id") String id,
+                                  @Param("currentCheckNum") Integer currentCheckNum,
+                                  @Param("qualifiedQuantity") Integer qualifiedQuantity,
+                                  @Param("unqualifiedQuantity") Integer unqualifiedQuantity);
+
+    @Update("UPDATE aps_process_operation set DELETED='1' where BLANKID=#{blanckid}")
+    void updateProcessOperation(@Param("blanckid") String blanckid);
 
-  void updateAboutCheckBatchNum(@Param("id")String id,
-                                @Param("currentCheckNum") Integer currentCheckNum,
-                                @Param("qualifiedQuantity") Integer qualifiedQuantity,
-                                @Param("unqualifiedQuantity") Integer unqualifiedQuantity );
+    @Update("UPDATE aps_process_operation_out_mater set DELETED='1' where BLANKID=#{blanckid}")
+    void updateProcessOperationOutMeter(@Param("blanckid") String blanckid);
 }

+ 13 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationService.java

@@ -2,6 +2,10 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.rwcommon.base.R;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +17,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ApsProcessOperationService extends IService<ApsProcessOperationDo> {
 
+    /*
+    选择工艺路线后续操作
+     */
+    R resetCraftRoute(Map<String, Object> params);
+
+    /*
+    清除工艺路线
+     */
+    void clearCraftRoute(Map<String, Object> params, HttpServletRequest request);
 }

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

@@ -1,13 +1,26 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationDao;
-import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
+import com.rongwei.bscommon.sys.service.*;
+import com.rongwei.bsentity.domain.ApsCraftRouteOutMaterRequestDo;
+import com.rongwei.bsentity.domain.ApsCraftRouteStepDo;
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
+import com.rongwei.bsentity.vo.PreviousProcessVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,13 +30,36 @@ import java.util.List;
  * @author fpy
  * @since 2024-03-01
  */
+@Slf4j
 @Service
 public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperationDao, ApsProcessOperationDo> implements ApsProcessOperationService {
     @Autowired
     private ApsProcessOperationDao apsProcessOperationDao;
 
+    @Autowired
+    ApsCraftRouteStepService apsCraftRouteStepService;
+
+    @Autowired
+    ApsCraftRouteOutMaterRequestService apsCraftRouteOutMaterRequestService;
+
+    @Autowired
+    ApsCraftRouteStepEquService apsCraftRouteStepEquService;
+
+    @Autowired
+    ApsProcessOperationService apsProcessOperationService;
+
+    @Autowired
+    ApsProcessOperationOutMaterService apsProcessOperationOutMaterService;
+
+    private final static Map<String, String> UNIT_MAP = new HashMap<String, String>() {{
+        put("kg", "公斤");
+        put("ton", "吨");
+    }};
+
+
     /**
      * 更新工序的待加工批次号信息
+     *
      * @param ids
      * @param batchNumn
      */
@@ -33,6 +69,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
     /**
      * 更新当前工序的输出已检验卷数,不合格卷数,合格卷数
+     *
      * @param id
      * @param currentCheckNum
      * @param qualifiedQuantity
@@ -42,5 +79,252 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         apsProcessOperationDao.updateAboutCheckBatchNum(id, currentCheckNum, qualifiedQuantity, unqualifiedQuantity);
     }
 
+    /*
+    数量单位字典
+     */
+
+
+    /*
+    选择工艺路线后续操作
+     */
+    @Override
+    public R resetCraftRoute(Map<String, Object> params) {
+//        R r = new R();
+        try {
+            JSONObject blanckdata = new JSONObject(params.get("BLANKDATA"));
+            String craftrouteid = params.get("CRAFTROUTEID").toString();
+
+
+            //工艺路线对应的步骤信息
+            Map<String, Object> map = new HashMap<>();
+            map.put("CRAFTROUTEID", craftrouteid);
+            List<ApsCraftRouteStepDo> apsCraftRouteStepDoList = apsCraftRouteStepService.listByMap(map).stream().collect(Collectors.toList());
+            Collections.sort(apsCraftRouteStepDoList, Comparator.comparingInt(ApsCraftRouteStepDo::getLevel));
+
+            List<String> overRouteStepIds = new ArrayList<>();
+            List<PreviousProcessVo> newProcessIds = new ArrayList<>();//前道工序信息
+            List<ApsProcessOperationDo> apsProcessOperationDoList = new ArrayList<>();
+            List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList = new ArrayList<>();
+            for (ApsCraftRouteStepDo apsCraftRouteStepDo : apsCraftRouteStepDoList) {
+                if (overRouteStepIds.contains(apsCraftRouteStepDo.getId())) {
+                    continue;
+                } else {
+                    String processId;
+                    ApsProcessOperationDo apsProcessOperationDo;
+                    PreviousProcessVo previousProcessVo;
+                    if (StringUtils.isNotBlank(apsCraftRouteStepDo.getPreviousstepid())) {
+                        //后面工序
+                        List<ApsCraftRouteStepDo> apsCraftRouteStepDoList1 = apsCraftRouteStepDoList.stream().filter(acrs -> apsCraftRouteStepDo.getPreviousstepid().equals(acrs.getPreviousstepid())).collect(Collectors.toList());
+                        Collections.sort(apsCraftRouteStepDoList1, Comparator.comparing(ApsCraftRouteStepDo::getCreatedate));
+                        for (ApsCraftRouteStepDo apsCraftRouteStepDo1 : apsCraftRouteStepDoList1) {
+                            previousProcessVo = new PreviousProcessVo();
+                            processId = SecurityUtil.getUUID();
+                            apsProcessOperationDo = BeanUtil.toBean(apsCraftRouteStepDo1, ApsProcessOperationDo.class);
+                            apsProcessOperationDo.setId(processId);
+
+                            //前道工序输出
+                            List<PreviousProcessVo> processVo = newProcessIds.stream().filter(pro -> pro.getPreviousstepid().equals(apsCraftRouteStepDo1.getPreviousstepid())).collect(Collectors.toList());
+                            ApsProcessOperationOutMaterDo outMaterDo = processVo.get(0).getApsProcessOperationOutMaterDo();
+                            apsProcessOperationDo.setPreviousprocessid(processVo.get(0).getProcessId());
+                            apsProcessOperationDo.setPreviousprocess(processVo.get(0).getProcessName());
+                            apsProcessOperationDo.setPlaninputid(outMaterDo.getId());
+                            String meterInput = getMeterInfo(outMaterDo.getProducttype(), outMaterDo.getMetal(), outMaterDo.getMetalstate(), outMaterDo.getThickness(), outMaterDo.getProwidth(), outMaterDo.getProlength());
+//                            apsProcessOperationDo.setPlaninput(meterInput + outMaterDo.getSinglerollweight() + cxAdminFeginClient.getDictNameByValue("MATERIAL_UNIT", outMaterDo.getNumunit()));
+                            apsProcessOperationDo.setPlaninput(meterInput + outMaterDo.getSinglerollweight() + UNIT_MAP.getOrDefault(outMaterDo.getNumunit(), ""));
+                            apsProcessOperationDo.setProducttypeid(outMaterDo.getProducttypeid());
+                            apsProcessOperationDo.setProducttype(outMaterDo.getProducttype());
+                            apsProcessOperationDo.setMetal(outMaterDo.getMetal());
+                            apsProcessOperationDo.setMetalstate(outMaterDo.getMetalstate());
+                            apsProcessOperationDo.setThickness(outMaterDo.getThickness());
+                            apsProcessOperationDo.setProwidth(outMaterDo.getProwidth());
+                            apsProcessOperationDo.setProlength(outMaterDo.getProlength());
+                            apsProcessOperationDo.setSinglerollweight(outMaterDo.getSinglerollweight());
+                            apsProcessOperationDo.setPlaninrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
+                            apsProcessOperationDo.setPlanprocessrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
+                            apsProcessOperationDo.setBlankid(blanckdata.getStr("ID"));
+                            if (outMaterDo.getThickrule().equals("自定义") || outMaterDo.getWidthrule().equals("自定义") || outMaterDo.getLengthrule().equals("自定义")) {
+                                apsProcessOperationDo.setChangeinmeter("1");//输入物料是否可编辑
+                            }
+
+                            //本道工序信息
+                            previousProcessVo.setProcessId(processId);
+                            previousProcessVo.setProcessName(apsProcessOperationDo.getProcessname());
+                            previousProcessVo.setPreviousstepid(apsCraftRouteStepDo1.getId());
+                            //本道工序的输出
+                            map.put("CRAFTSTEPID", apsCraftRouteStepDo1.getId());
+                            List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDo = apsCraftRouteOutMaterRequestService.listByMap(map).stream().collect(Collectors.toList());
+                            ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo = BeanUtil.toBean(apsCraftRouteOutMaterRequestDo.get(0), ApsProcessOperationOutMaterDo.class);
+                            if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttypeid())) {
+                                apsProcessOperationOutMaterDo.setProducttypeid(blanckdata.getStr("PRODUCTTYPEID"));
+                            }
+                            if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttype())) {
+                                apsProcessOperationOutMaterDo.setProducttype(blanckdata.getStr("PRODUCTTYPE"));
+                            }
+                            if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetal())) {
+                                apsProcessOperationOutMaterDo.setMetal(blanckdata.getStr("ALLOY"));
+                            }
+                            if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetalstate())) {
+                                apsProcessOperationOutMaterDo.setMetalstate(blanckdata.getStr("ALLOYSTATUS"));
+                            }
+                            apsProcessOperationOutMaterDo.setThickness(changeSize(outMaterDo.getThickness(), apsProcessOperationOutMaterDo.getThickrule(), apsProcessOperationOutMaterDo.getThickchange()));
+                            apsProcessOperationOutMaterDo.setProwidth(changeSize(outMaterDo.getProwidth(), apsProcessOperationOutMaterDo.getWidthrule(), apsProcessOperationOutMaterDo.getWidthchange()));
+                            apsProcessOperationOutMaterDo.setProlength(changeSize(outMaterDo.getProlength(), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange()));
+                            apsProcessOperationOutMaterDo.setRipcutnum(1);
+                            apsProcessOperationOutMaterDo.setCrosscutnum(1);
+                            apsProcessOperationOutMaterDo.setOutval(1);
+                            apsProcessOperationOutMaterDo.setPlanrollnum(blanckdata.getInt("ROLLNUM"));
+                            apsProcessOperationOutMaterDo.setSinglerollweight(blanckdata.getBigDecimal("SINGLEROLLWEIGHT"));
+                            apsProcessOperationOutMaterDo.setNumunit(blanckdata.getStr("NUMBERUNIT"));
+                            apsProcessOperationOutMaterDo.setPlanstockrollnum(0);
+                            apsProcessOperationOutMaterDo.setPlanprodrollnum(0);
+                            apsProcessOperationOutMaterDo.setMainid(processId);
+                            apsProcessOperationOutMaterDo.setBlankid(blanckdata.getStr("ID"));
+                            previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
+
+                            newProcessIds.add(previousProcessVo);
+                            apsProcessOperationDoList.add(apsProcessOperationDo);
+                            apsProcessOperationOutMaterDoList.add(apsProcessOperationOutMaterDo);
+
+                            overRouteStepIds.add(apsCraftRouteStepDo1.getId());
+                        }
+                    } else {
+                        previousProcessVo = new PreviousProcessVo();
+                        //首道工序
+                        processId = SecurityUtil.getUUID();
+                        String meterInput = getMeterInfo(blanckdata.getStr("PRODUCTTYPE"), blanckdata.getStr("ALLOY"), blanckdata.getStr("ALLOYSTATUS"), blanckdata.getBigDecimal("THICKNESS"), blanckdata.getBigDecimal("PROWIDTH"), blanckdata.getBigDecimal("PROLENGTH"));
+                        apsProcessOperationDo = BeanUtil.toBean(apsCraftRouteStepDo, ApsProcessOperationDo.class);
+                        apsProcessOperationDo.setId(processId);
+                        apsProcessOperationDo.setPlaninput(meterInput + blanckdata.getStr("SINGLEROLLWEIGHT") + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), ""));
+                        apsProcessOperationDo.setProducttypeid(blanckdata.getStr("PRODUCTTYPEID"));
+                        apsProcessOperationDo.setProducttype(blanckdata.getStr("PRODUCTTYPE"));
+                        apsProcessOperationDo.setMetal(blanckdata.getStr("ALLOY"));
+                        apsProcessOperationDo.setMetalstate(blanckdata.getStr("ALLOYSTATUS"));
+                        apsProcessOperationDo.setThickness(blanckdata.getBigDecimal("THICKNESS"));
+                        apsProcessOperationDo.setProwidth(blanckdata.getBigDecimal("PROWIDTH"));
+                        apsProcessOperationDo.setProlength(blanckdata.getBigDecimal("PROLENGTH"));
+                        apsProcessOperationDo.setSinglerollweight(blanckdata.getBigDecimal("SINGLEROLLWEIGHT"));
+                        apsProcessOperationDo.setPlaninrall(blanckdata.getInt("ROLLNUM"));
+                        apsProcessOperationDo.setPlanprocessrall(blanckdata.getInt("ROLLNUM"));
+                        apsProcessOperationDo.setBlankid(blanckdata.getStr("ID"));
+
+                        //本道工序信息
+                        previousProcessVo.setProcessId(processId);
+                        previousProcessVo.setProcessName(apsProcessOperationDo.getProcessname());
+                        previousProcessVo.setPreviousstepid(apsCraftRouteStepDo.getId());
+                        //本道工序的输出
+                        map.put("CRAFTSTEPID", apsCraftRouteStepDo.getId());
+                        List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDo = apsCraftRouteOutMaterRequestService.listByMap(map).stream().collect(Collectors.toList());
+                        ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo = BeanUtil.toBean(apsCraftRouteOutMaterRequestDo.get(0), ApsProcessOperationOutMaterDo.class);
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttypeid())) {
+                            apsProcessOperationOutMaterDo.setProducttypeid(blanckdata.getStr("PRODUCTTYPEID"));
+                        }
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttype())) {
+                            apsProcessOperationOutMaterDo.setProducttype(blanckdata.getStr("PRODUCTTYPE"));
+                        }
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetal())) {
+                            apsProcessOperationOutMaterDo.setMetal(blanckdata.getStr("ALLOY"));
+                        }
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetalstate())) {
+                            apsProcessOperationOutMaterDo.setMetalstate(blanckdata.getStr("ALLOYSTATUS"));
+                        }
+                        apsProcessOperationOutMaterDo.setThickness(changeSize(blanckdata.getBigDecimal("THICKNESS"), apsProcessOperationOutMaterDo.getThickrule(), apsProcessOperationOutMaterDo.getThickchange()));
+                        apsProcessOperationOutMaterDo.setProwidth(changeSize(blanckdata.getBigDecimal("PROWIDTH"), apsProcessOperationOutMaterDo.getWidthrule(), apsProcessOperationOutMaterDo.getWidthchange()));
+                        apsProcessOperationOutMaterDo.setProlength(changeSize(blanckdata.getBigDecimal("PROLENGTH"), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange()));
+                        apsProcessOperationOutMaterDo.setRipcutnum(1);
+                        apsProcessOperationOutMaterDo.setCrosscutnum(1);
+                        apsProcessOperationOutMaterDo.setOutval(1);
+                        apsProcessOperationOutMaterDo.setPlanrollnum(blanckdata.getInt("ROLLNUM"));
+                        apsProcessOperationOutMaterDo.setSinglerollweight(blanckdata.getBigDecimal("SINGLEROLLWEIGHT"));
+                        apsProcessOperationOutMaterDo.setNumunit(blanckdata.getStr("NUMBERUNIT"));
+                        apsProcessOperationOutMaterDo.setPlanstockrollnum(0);
+                        apsProcessOperationOutMaterDo.setPlanprodrollnum(0);
+                        apsProcessOperationOutMaterDo.setMainid(processId);
+                        apsProcessOperationOutMaterDo.setBlankid(blanckdata.getStr("ID"));
+                        previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
+
+                        newProcessIds.add(previousProcessVo);
+                        apsProcessOperationDoList.add(apsProcessOperationDo);
+                        apsProcessOperationOutMaterDoList.add(apsProcessOperationOutMaterDo);
+                    }
+                }
+            }
+
+            boolean bool1 = apsProcessOperationService.saveOrUpdateBatch(apsProcessOperationDoList);
+            boolean bool2 = apsProcessOperationOutMaterService.saveOrUpdateBatch(apsProcessOperationOutMaterDoList);
+
+            if (bool1 && bool2) {
+//                r.setCode("200");
+//                r.putData(apsCraftRouteStepDoList);
+                return R.ok();
+            } else {
+                return R.error();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("选择工艺路线异常:" + e.getMessage());
+            return R.error();
+        }
+    }
+
+    /*
+    清除工艺路线
+     */
+    @Override
+    public void clearCraftRoute(Map<String, Object> params, HttpServletRequest request) {
+        String blankid = params.get("BLANKID").toString();
+        //工序作业
+        apsProcessOperationDao.updateProcessOperation(blankid);
+        //工序作业输出物料
+        apsProcessOperationDao.updateProcessOperationOutMeter(blankid);
+    }
+
+    //工艺步骤管理/物料输出规则
+    private String getMeterInfo(String producttype, String metal, String metalstate, BigDecimal thickness, BigDecimal prowidth, BigDecimal prolength) {
+        String res = "";
+        StringBuilder resStr = new StringBuilder();
+        StringBuilder resSizeStr = new StringBuilder();
+        if (StringUtils.isNotBlank(metal)) {
+            resStr.append(metal);
+        }
+        if (StringUtils.isNotBlank(metalstate)) {
+            resStr.append(metalstate);
+        }
+        if (StringUtils.isNotBlank(producttype)) {
+            resStr.append(producttype);
+        }
+        if (thickness != null) {
+            resSizeStr.append("厚" + thickness + "*");
+        }
+        if (prowidth != null) {
+            resSizeStr.append("宽" + prowidth + "*");
+        }
+        if (prolength != null) {
+            resSizeStr.append("长" + prolength + "*");
+        }
 
+        if (StringUtils.isBlank(resSizeStr.toString())) {
+            res = resStr.toString();
+        } else {
+            res = (StringUtils.isBlank(resStr.toString()) ? "" : (resStr.toString() + " ")) + resSizeStr.toString().substring(0, resSizeStr.toString().length() - 1) + "mm";
+        }
+
+        return res;
+    }
+
+    //长宽高的计算规则
+    private BigDecimal changeSize(BigDecimal oldVal, String countRule, BigDecimal changeVal) {
+        BigDecimal newVal = null;
+        if (!countRule.equals("自定义") && oldVal != null) {
+            if (countRule.equals("=")) {
+                newVal = changeVal;
+            } else if (countRule.equals("+")) {
+                newVal = oldVal.add(changeVal);
+            } else if (countRule.equals("-")) {
+                newVal = oldVal.subtract(changeVal);
+            } else if (countRule.equals("0")) {
+                newVal = oldVal;
+            }
+        }
+        return newVal;
+    }
 }

+ 341 - 18
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationDo.java

@@ -8,6 +8,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -31,155 +33,476 @@ public class ApsProcessOperationDo extends BaseDo {
      */
     @TableId("ID")
     private String id;
+
     @TableField("TENANTID")
     private String tenantid;
+
     /**
      * 扩展json格式配置
      */
     @TableField("ROPTION")
     private String roption;
+
+
     /**
      * 所属工厂
      */
     @TableField("OWNEDFACTORY")
     private String ownedfactory;
+
     /**
-     * 坯料计划ID
+     * 工艺步骤表ID
      */
-    @TableField("BLANKID")
-    private String blankid;
+    @TableField("CRAFTSTEPID")
+    private String craftstepid;
+
+    /**
+     * 工艺路线表ID
+     */
+    @TableField("CRAFTROUTEID")
+    private String craftrouteid;
+
+    /**
+     * 工艺步骤编号
+     */
+    @TableField("STEPNUM")
+    private String stepnum;
+
     /**
      * 工序
      */
     @TableField("PROCESS")
     private String process;
+
     /**
      * 工序显示名
      */
     @TableField("PROCESSNAME")
     private String processname;
+
     /**
-     * 前道工序作业
+     * 加工方式
      */
-    @TableField("PREVIOUSPROCESS")
-    private String previousprocess;
+    @TableField("PROCESSWAY")
+    private String processway;
+
     /**
-     * 后道工序作业
+     * 数量单位
      */
-    @TableField("NEXTPROCESS")
-    private String nextprocess;
+    @TableField("NUMUNIT")
+    private String numunit;
+
     /**
-     * 后道工序作业ID
+     * 单次加工量
      */
-    @TableField("NEXTPROCESSID")
-    private String nextprocessid;
+    @TableField("ONCEPROCESSVAL")
+    private BigDecimal onceprocessval;
+
+    /**
+     * 单次加工时长
+     */
+    @TableField("ONCEPROCESSMIN")
+    private BigDecimal onceprocessmin;
+
+    /**
+     * 单位时间产能
+     */
+    @TableField("PERTIMECAPACITY")
+    private BigDecimal pertimecapacity;
+
+    /**
+     * 加工时间单位
+     */
+    @TableField("TIMEUNIT")
+    private String timeunit;
+
+    /**
+     * 上机准备时间(分钟)
+     */
+    @TableField("PREPRESSWORKMIN")
+    private BigDecimal prepressworkmin;
+
+    /**
+     * 上料时间(分钟)
+     */
+    @TableField("LOADINGMIN")
+    private BigDecimal loadingmin;
+
+    /**
+     * 下料时间(分钟)
+     */
+    @TableField("CUTTINGMIN")
+    private BigDecimal cuttingmin;
+
+    /**
+     * 下机收尾时间(分钟)
+     */
+    @TableField("CUTFINISHMIN")
+    private BigDecimal cutfinishmin;
+
+    /**
+     * 最小流转批次
+     */
+    @TableField("MINFLOWBATCH")
+    private BigDecimal minflowbatch;
+
+    /**
+     * 流转等待最小时长(分钟)
+     */
+    @TableField("MINFLOWWAITMIN")
+    private BigDecimal minflowwaitmin;
+
+    /**
+     * 流转等待最大时长(分钟)
+     */
+    @TableField("MAXFLOWWAITMIN")
+    private BigDecimal maxflowwaitmin;
+
     /**
      * 是否坯料工序
      */
     @TableField("IFBLANKPROCESS")
     private String ifblankprocess;
+
+    /**
+     * 物料编号
+     */
+    @TableField("MATERIALCODE")
+    private String materialcode;
+
+    /**
+     * 物料名称
+     */
+    @TableField("MATERIALNAME")
+    private String materialname;
+
+    /**
+     * 厚度(mm)
+     */
+    @TableField("THICKNESS")
+    private BigDecimal thickness;
+
+    /**
+     * 厚度-起(mm)
+     */
+    @TableField("THICKSTR")
+    private BigDecimal thickstr;
+
+    /**
+     * 厚度-止(mm)
+     */
+    @TableField("THICKEND")
+    private BigDecimal thickend;
+
+    /**
+     * 宽度
+     */
+    @TableField("PROWIDTH")
+    private BigDecimal prowidth;
+
+    /**
+     * 宽度-起(mm)
+     */
+    @TableField("WIDTHSTR")
+    private BigDecimal widthstr;
+
+    /**
+     * 宽度-止(mm)
+     */
+    @TableField("WIDTHEND")
+    private BigDecimal widthend;
+
+    /**
+     * 长度
+     */
+    @TableField("PROLENGTH")
+    private BigDecimal prolength;
+
+    /**
+     * 长度-起(mm)
+     */
+    @TableField("LENGTHSTR")
+    private BigDecimal lengthstr;
+
+    /**
+     * 长度-止(mm)
+     */
+    @TableField("LENGTHEND")
+    private BigDecimal lengthend;
+
+    /**
+     * 输入物料条件
+     */
+    @TableField("INMATERCONDITION")
+    private String inmatercondition;
+
+    /**
+     * 输出物料要求
+     */
+    @TableField("OUTMATERREQUEST")
+    private String outmaterrequest;
+
+    /**
+     * 可选设备IDS
+     */
+    @TableField("CHOOSEEQUIDS")
+    private String chooseequids;
+
     /**
      * 可选设备
      */
     @TableField("CHOOSEEQU")
     private String chooseequ;
+
+    /**
+     * 坯料计划ID
+     */
+    @TableField("BLANKID")
+    private String blankid;
+
+    /**
+     * 输入物料ID
+     */
+    @TableField("PLANINPUTID")
+    private String planinputid;
+
     /**
      * 计划输入物料
      */
     @TableField("PLANINPUT")
     private String planinput;
+
     /**
      * 计划输出物料
      */
     @TableField("PLANOUTPUT")
     private String planoutput;
+
+    /**
+     * 计划输入卷数
+     */
+    @TableField("PLANINRALL")
+    private Integer planinrall;
+
     /**
      * 计划备料卷数
      */
     @TableField("PLANBLANKRALL")
     private Integer planblankrall;
+
     /**
      * 计划加工卷数
      */
     @TableField("PLANPROCESSRALL")
     private Integer planprocessrall;
+
     /**
      * 加工车间
      */
     @TableField("PROCESSWORKSHOP")
     private String processworkshop;
+
+    /**
+     * 加工设备ID
+     */
+    @TableField("PROCESSDEVICEID")
+    private String processdeviceid;
+
     /**
      * 加工设备
      */
     @TableField("PROCESSDEVICE")
     private String processdevice;
+
     /**
      * 计划开工时间
      */
     @TableField("PLANSTARTDATE")
-    private Date planstartdate;
+    private LocalDateTime planstartdate;
+
+    /**
+     * 实际开工时间
+     */
+    @TableField("ACTUALSTARTDATE")
+    private LocalDateTime actualstartdate;
+
     /**
      * 计划完工时间
      */
     @TableField("PLANENDDATE")
-    private Date planenddate;
+    private LocalDateTime planenddate;
+
+    /**
+     * 实际完工时间
+     */
+    @TableField("ACTUALFINISHDATE")
+    private LocalDateTime actualfinishdate;
+
     /**
      * 实际可输入卷数
      */
     @TableField("ACTUALIMPUTROLL")
     private Integer actualimputroll;
+
     /**
      * 输入不合格卷数
      */
     @TableField("INPUTUNQUALIFIEDROLL")
     private Integer inputunqualifiedroll;
+
     /**
      * 实际可加工卷数
      */
     @TableField("ACTUALCANPROCESSROLL")
     private Integer actualcanprocessroll;
+
+    /**
+     * 完工状态
+     */
+    @TableField("CLOSESTATUS")
+    private String closestatus;
+
     /**
      * 已开工卷数
      */
     @TableField("STARTINGROLL")
     private Integer startingroll;
+
     /**
      * 已报工卷数
      */
     @TableField("REPORTROLL")
     private Integer reportroll;
+
     /**
      * 已检验卷数
      */
     @TableField("CHECKOUTROLL")
     private Integer checkoutroll;
+
     /**
      * 未完工卷数
      */
     @TableField("UNFINISHROLL")
     private Integer unfinishroll;
+
     /**
      * 作业状态
      */
     @TableField("WORKSTATUS")
     private String workstatus;
+
     /**
      * 生产状态
      */
     @TableField("PROCESSSTATUS")
     private String processstatus;
+
+    /**
+     * 待加工料卷批次号
+     */
+    @TableField("BACHMATERIALPROCESS")
+    private String bachmaterialprocess;
+
+    /**
+     * 计划作业时长
+     */
+    @TableField("PROCESSTOTALTIME")
+    private BigDecimal processtotaltime;
+
+    /**
+     * 待报工记录ID
+     */
+    @TableField("WAITREPORTID")
+    private String waitreportid;
+
+    /**
+     * 计划加工次数
+     */
+    @TableField("PLANPROCESSNUM")
+    private Integer planprocessnum;
+
+    /**
+     * 计划单次加工时长
+     */
+    @TableField("PLANONCETIME")
+    private BigDecimal planoncetime;
+
+    /**
+     * 前道工序作业ID
+     */
+    @TableField("PREVIOUSPROCESSID")
+    private String previousprocessid;
+
+    /**
+     * 前道工序作业
+     */
+    @TableField("PREVIOUSPROCESS")
+    private String previousprocess;
+
     /**
-     * 输出合格数量
+     * 后道工序作业ID
+     */
+    @TableField("NEXTPROCESSID")
+    private String nextprocessid;
+
+    /**
+     * 后道工序作业
+     */
+    @TableField("NEXTPROCESS")
+    private String nextprocess;
+
+    /**
+     * 顺序
+     */
+    @TableField("LEVEL")
+    private Integer level;
+
+    /**
+     * 产品类型ID
+     */
+    @TableField("PRODUCTTYPEID")
+    private String producttypeid;
+
+    /**
+     * 产品类型
+     */
+    @TableField("PRODUCTTYPE")
+    private String producttype;
+
+    /**
+     * 合金
+     */
+    @TableField("METAL")
+    private String metal;
+
+    /**
+     * 合金状态
+     */
+    @TableField("METALSTATE")
+    private String metalstate;
+
+    /**
+     * 合格输出数量
      */
     @TableField("OUTPUTQUALIFIEDNUM")
     private Integer outputqualifiednum;
+
     /**
-     * 输出不合格数量
+     * 不合格输出数量
      */
     @TableField("OUTPUTUNQUALIFIEDNUM")
     private Integer outputunqualifiednum;
+
     /**
-     * 待加工料卷批次号
+     * 输入物料是否可编辑
      */
-    private String bachmaterialprocess;
+    @TableField("CHANGEINMETER")
+    private String changeinmeter;
+
+    /**
+     * 输入单卷重
+     */
+    @TableField("SINGLEROLLWEIGHT")
+    private BigDecimal singlerollweight;
 }

+ 6 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationOutMaterDo.java

@@ -38,6 +38,11 @@ public class ApsProcessOperationOutMaterDo extends BaseDo implements Serializabl
      */
     private Integer datano;
 
+    /**
+     * 坯料计划ID
+     */
+    private String blankid;
+
     /**
      * 工序作业ID
      */
@@ -154,7 +159,7 @@ public class ApsProcessOperationOutMaterDo extends BaseDo implements Serializabl
     private String lengthremark;
 
     /**
-     * 输出
+     * 单卷输出数
      */
     private Integer outval;
 

+ 13 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/PreviousProcessVo.java

@@ -0,0 +1,13 @@
+package com.rongwei.bsentity.vo;
+
+import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
+import lombok.Data;
+
+@Data
+public class PreviousProcessVo {
+    private String processId;
+    private String processName;
+    private String previousstepid;
+    //工序输出
+    private ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo;
+}

+ 42 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationController.java

@@ -1,9 +1,18 @@
 package com.rongwei.bsserver.controller;
 
 
+import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
+import com.rongwei.rwcommon.base.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
 /**
  * <p>
  * 生产订单_坯料计划_工序作业 前端控制器
@@ -12,9 +21,42 @@ import org.springframework.web.bind.annotation.RestController;
  * @author fpy
  * @since 2024-03-01
  */
+@Slf4j
 @RestController
 @RequestMapping("/apsProcessOperation")
 public class ApsProcessOperationController {
 
+    @Autowired
+    private ApsProcessOperationService apsProcessOperationService;
+
+    /*
+    选择工艺路线自动生成工序作业
+     */
+    @PostMapping("/chooseCraftRoute")
+    public R chooseCraftRoute(@RequestBody Map<String, Object> params) {
+        try {
+            log.info("选择工艺路线;参数为:{}", params);
+            R resData = apsProcessOperationService.resetCraftRoute(params);
+            return resData;
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("选择工艺路线异常:" + e.getMessage());
+            return R.error("选择工艺路线异常:" + e.getMessage());
+        }
+    }
+
+    /*
+    清除工艺路线
+     */
+    @PostMapping("/clearCraftRoute")
+    public void clearCraftRoute(@RequestBody Map<String, Object> params, HttpServletRequest request) {
+        try {
+            log.info("清除工艺路线;参数为:{}", params);
+            apsProcessOperationService.clearCraftRoute(params, request);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("清除工艺路线异常:" + e.getMessage());
+        }
+    }
 }