Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

fangpy 1 rok pred
rodič
commit
c954c5bc73
32 zmenil súbory, kde vykonal 1054 pridanie a 72 odobranie
  1. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsAlloyCompositionDao.java
  2. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsAlloyDao.java
  3. 3 1
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java
  4. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportBlankCompentDao.java
  5. 28 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportRecordsDao.java
  6. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsAlloyCompositionService.java
  7. 14 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsAlloyService.java
  8. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsReportBlankCompentService.java
  9. 2 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsReportOutputService.java
  10. 3 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsReportRecordsService.java
  11. 3 1
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/GanttService.java
  12. 13 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsAlloyCompositionServiceImpl.java
  13. 13 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsAlloyServiceImpl.java
  14. 36 24
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java
  15. 13 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportBlankCompentServiceImpl.java
  16. 78 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportOutputServiceImpl.java
  17. 221 15
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java
  18. 17 10
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/GanttServiceImpl.java
  19. 27 6
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml
  20. 100 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsAlloyCompositionDo.java
  21. 99 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsAlloyDo.java
  22. 79 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsCheckParameterDo.java
  23. 79 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsParameterDo.java
  24. 98 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportBlankCompentDo.java
  25. 4 4
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportMachiningDo.java
  26. 11 2
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java
  27. 17 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/OrganizationCodeAndDeviceCodeVo.java
  28. 21 6
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProcessGanttListVo.java
  29. 5 1
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttVo.java
  30. 17 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/StartRePortReq.java
  31. 8 0
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsReportRecordController.java
  32. 5 2
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/GanttController.java

+ 8 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsAlloyCompositionDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.bscommon.sys.dao;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.ApsAlloyCompositionDo;
+
+public interface ApsAlloyCompositionDao extends BaseMapper<ApsAlloyCompositionDo> {
+}

+ 8 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsAlloyDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.bscommon.sys.dao;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.ApsAlloyDo;
+
+public interface ApsAlloyDao extends BaseMapper<ApsAlloyDo> {
+}

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

@@ -40,7 +40,9 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
                                     @Param("factoryId") String factoryId,
                                     @Param("workshopIds") List<String> workshopId,
                                     @Param("orderNos") List<String> orderNo,
-                                    @Param("processids") String processids);
+                                    @Param("processids") String processids,
+                                    @Param("productionLineIds")List<String> productionLineId,
+                                    @Param("equIds") List<String> equId);
 
     void updateAboutStateByProcessId(@Param("updateIds") List<ProcessIdRelationVo> updateIds);
 

+ 8 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportBlankCompentDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.bscommon.sys.dao;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.ApsReportBlankCompentDo;
+
+public interface ApsReportBlankCompentDao extends BaseMapper<ApsReportBlankCompentDo> {
+}

+ 28 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportRecordsDao.java

@@ -1,13 +1,41 @@
 package com.rongwei.bscommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.ApsCheckParameterDo;
+import com.rongwei.bsentity.domain.ApsParameterDo;
 import com.rongwei.bsentity.domain.ApsReportRecordsDo;
+import com.rongwei.bsentity.vo.OrganizationCodeAndDeviceCodeVo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
 
 /**
  * @Entity com.rongwei.training.domain.ApsReportRecords
  */
 public interface ApsReportRecordsDao extends BaseMapper<ApsReportRecordsDo> {
 
+    @Update("update aps_process_operation set ACTUALSTARTDATE = IFNULL(ACTUALSTARTDATE,NOW()),STARTINGROLL = STARTINGROLL+1 where ID = #{id}")
+    void updateProcessActualStartDate(@Param("id") String id);
+
+    @Update("update asp_check_items set WAITREPORTID = #{id} where ID = #{processdeviceid}")
+    void updateDeviceWaitReportId(@Param("id") String id, @Param("processdeviceid") String processdeviceid);
+
+    @Update("update aps_process_operation_process_equ set BACHMATERIALPROCESS = REPLACE(REPLACE(BACHMATERIALPROCESS,'${inputBatchNumber},',''),',${inputBatchNumber}','') where PROCESSID = #{id}")
+    void updateBatchMaterialProcess(@Param("inputBatchNumber") String inputBatchNumber, @Param("id") String id);
+
+    @Update("update aps_process_operation_process_equ set BACHMATERIALPROCESS = REPLACE(REPLACE(BACHMATERIALPROCESS,'${inputBatchNumber},',''),',${inputBatchNumber}','') where PROCESSID in (${processIds})")
+    void updateBatchMaterialProcessBatch(@Param("inputBatchNumber") String inputBatchNumber, @Param("processIds") String processIds);
+
+    @Select("select ap.ID AS 'id',ap.PARAMETER AS 'parameter' from aps_production_processes app LEFT JOIN aps_parameter ap ON app.ID = ap.MAINID AND ap.DELETED = 0 where app.PRODUCTPROCESSNAME = #{process}")
+    List<ApsParameterDo> selectApsParameterByProcess(@Param("process") String process);
+
+    @Select("select acp.ID AS 'id',acp.CKECKPARAMETER AS 'checkparameter' from aps_production_processes app LEFT JOIN aps_check_parameter acp ON app.ID = acp.MAINID AND acp.DELETED = 0 where app.PRODUCTPROCESSNAME = #{process}")
+    List<ApsCheckParameterDo> selectApsCheckParameterByProcess(@Param("process") String process);
+
+//    @Select("select aci.EQUIPMENTCODE AS 'deviceCode',so.ROPTION AS 'organizationCode',aci.WAITREPORTID AS 'waitReportId' from asp_check_items aci LEFT JOIN sys_organization so ON aci.USEDEPTID = so.ID AND so.DELETED = 0 where aci.ID = #{processdeviceid} limit 1")
+//    OrganizationCodeAndDeviceCodeVo selectOrganizationCodeAndDeviceCode(@Param("processdeviceid") String processdeviceid);
 }
 
 

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

@@ -0,0 +1,8 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.ApsAlloyCompositionDo;
+
+
+public interface ApsAlloyCompositionService extends IService<ApsAlloyCompositionDo> {
+}

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

@@ -0,0 +1,14 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.ApsAlloyDo;
+import com.rongwei.bsentity.domain.ApsBlankOrderDo;
+import com.rongwei.bsentity.vo.*;
+import com.rongwei.rwcommon.base.R;
+
+import java.util.List;
+import java.util.Map;
+
+
+public interface ApsAlloyService extends IService<ApsAlloyDo> {
+}

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

@@ -0,0 +1,8 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.ApsReportBlankCompentDo;
+
+
+public interface ApsReportBlankCompentService extends IService<ApsReportBlankCompentDo> {
+}

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

@@ -13,4 +13,6 @@ import java.util.Map;
 public interface ApsReportOutputService extends IService<ApsReportOutputDo> {
 
     R insertMyReportOutput(InsertMyReportOutputReq req);
+
+    R insertMyReportOutputWithOutBatchNumber(InsertMyReportOutputReq req);
 }

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

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsReportRecordsDo;
+import com.rongwei.bsentity.vo.StartRePortReq;
 import com.rongwei.rwcommon.base.R;
 
 import java.util.Map;
@@ -12,4 +13,6 @@ import java.util.Map;
 public interface ApsReportRecordsService extends IService<ApsReportRecordsDo> {
 
     R cancelRecord(Map<String, String> req);
+
+    R startReport(StartRePortReq req);
 }

+ 3 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/GanttService.java

@@ -3,6 +3,7 @@ package com.rongwei.bscommon.sys.service;
 import com.rongwei.rwcommon.base.R;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * GanttService class
@@ -12,5 +13,6 @@ import java.util.Date;
  */
 public interface GanttService {
 
-    R getListByCondition(Date searchDate,  String factoryId, String workshopId,String orderNo);
+    R getListByCondition(Date searchDate, String factoryId, List<String> workshopId, List<String> orderNo,
+                         List<String> productionLineId,List<String> equId);
 }

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

@@ -0,0 +1,13 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.ApsAlloyCompositionDao;
+import com.rongwei.bscommon.sys.service.ApsAlloyCompositionService;
+import com.rongwei.bsentity.domain.ApsAlloyCompositionDo;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class ApsAlloyCompositionServiceImpl extends ServiceImpl<ApsAlloyCompositionDao, ApsAlloyCompositionDo> implements ApsAlloyCompositionService {
+
+}

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

@@ -0,0 +1,13 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.ApsAlloyDao;
+import com.rongwei.bscommon.sys.service.ApsAlloyService;
+import com.rongwei.bsentity.domain.ApsAlloyDo;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class ApsAlloyServiceImpl extends ServiceImpl<ApsAlloyDao, ApsAlloyDo> implements ApsAlloyService {
+
+}

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

@@ -242,8 +242,18 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             if (apsCraftRouteStepDoList1.size() == 1) {
                                 apsProcessOperationDo.setPlanprocessrall(processVo.get(0).getPlanprocessrall());
                                 if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
-                                    //计划作业时长
-                                    apsProcessOperationDo.setProcesstotaltime(getProcesstotaltime(apsProcessOperationDo, aluminumdensity));
+                                    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();
+                                        BigDecimal onceprocessmin = new BigDecimal(df.format(apsProcessOperationDo.getSinglerollweight().multiply(BigDecimal.valueOf(1000000000)).divide(prowidth.multiply(thickness).multiply(workspeed).multiply(aluminumdensity), 2, BigDecimal.ROUND_HALF_UP)));
+                                        apsProcessOperationDo.setOnceprocessmin(onceprocessmin);
+                                        apsProcessOperationDo.setProcesstotaltime(new BigDecimal(df.format(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall()).multiply(onceprocessmin))));
+                                    } else if (apsProcessOperationDo.getTimeway().equals("40")) {
+                                        //如果计时方式=按单次加工时长计时,计划作业时长=单次加工时长*计划加工卷数
+                                        apsProcessOperationDo.setProcesstotaltime(new BigDecimal(df.format(apsProcessOperationDo.getOnceprocessmin().multiply(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall())))));
+                                    }
                                 }
                             } else {
                                 apsProcessOperationDo.setPlanprocessrall(0);
@@ -394,8 +404,18 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         apsProcessOperationDo.setCraftstepid(apsCraftRouteStepDo.getId());
 
                         if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
-                            //计划作业时长
-                            apsProcessOperationDo.setProcesstotaltime(getProcesstotaltime(apsProcessOperationDo, aluminumdensity));
+                            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();
+                                BigDecimal onceprocessmin = new BigDecimal(df.format(apsProcessOperationDo.getSinglerollweight().multiply(BigDecimal.valueOf(1000000000)).divide(prowidth.multiply(thickness).multiply(workspeed).multiply(aluminumdensity), 2, BigDecimal.ROUND_HALF_UP)));
+                                apsProcessOperationDo.setOnceprocessmin(onceprocessmin);
+                                apsProcessOperationDo.setProcesstotaltime(new BigDecimal(df.format(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall()).multiply(onceprocessmin))));
+                            } else if (apsProcessOperationDo.getTimeway().equals("40")) {
+                                //如果计时方式=按单次加工时长计时,计划作业时长=单次加工时长*计划加工卷数
+                                apsProcessOperationDo.setProcesstotaltime(new BigDecimal(df.format(apsProcessOperationDo.getOnceprocessmin().multiply(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall())))));
+                            }
                         }
 
                         //本道工序信息
@@ -717,8 +737,18 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     if (apsProcessOperationDos.size() == 1) {
                         apsProcessOperationDo.setPlanprocessrall(planinrall);
                         if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
-                            //计划作业时长
-                            apsProcessOperationDo.setProcesstotaltime(getProcesstotaltime(apsProcessOperationDo, aluminumdensity));
+                            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();
+                                BigDecimal onceprocessmin = new BigDecimal(df.format(apsProcessOperationDo.getSinglerollweight().multiply(BigDecimal.valueOf(1000000000)).divide(prowidth.multiply(thickness).multiply(workspeed).multiply(aluminumdensity), 2, BigDecimal.ROUND_HALF_UP)));
+                                apsProcessOperationDo.setOnceprocessmin(onceprocessmin);
+                                apsProcessOperationDo.setProcesstotaltime(new BigDecimal(df.format(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall()).multiply(onceprocessmin))));
+                            } else if (apsProcessOperationDo.getTimeway().equals("40")) {
+                                //如果计时方式=按单次加工时长计时,计划作业时长=单次加工时长*计划加工卷数
+                                apsProcessOperationDo.setProcesstotaltime(new BigDecimal(df.format(apsProcessOperationDo.getOnceprocessmin().multiply(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall())))));
+                            }
                         }
 //                        ApsProcessOperationDo operationDo = processOperationDos.stream().filter(item -> item.getId().equals(apsProcessOperationDo.getPreviousprocessid())).findFirst().get();
 //                        apsProcessOperationDo.setPlanprocessrall(operationDo.getPlanprocessrall());
@@ -1171,22 +1201,4 @@ 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);
-    }
 }

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

@@ -0,0 +1,13 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.ApsReportBlankCompentDao;
+import com.rongwei.bscommon.sys.service.ApsReportBlankCompentService;
+import com.rongwei.bsentity.domain.ApsReportBlankCompentDo;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class ApsReportBlankCompentServiceImpl extends ServiceImpl<ApsReportBlankCompentDao, ApsReportBlankCompentDo> implements ApsReportBlankCompentService {
+
+}

+ 78 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportOutputServiceImpl.java

@@ -176,6 +176,84 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
         apsReportRecordsService.updateById(apsReportRecordsDo);
         return R.ok();
     }
+
+    public R insertMyReportOutputWithOutBatchNumber(InsertMyReportOutputReq req) {
+        //最终新增的子表数据
+        List<ApsReportOutputDo> resList = new LinkedList<>();
+
+        //查询工序作业输出物料子表信息
+        List<ApsProcessOperationOutMaterDo> list = apsProcessOperationOutMaterService.list(new QueryWrapper<ApsProcessOperationOutMaterDo>().lambda().eq(ApsProcessOperationOutMaterDo::getMainid, req.getProcessId()));
+
+        if (req.getIfBlankProcess().equals("是")) {
+            if (req.getBlankType().equals("铸轧")) {
+                for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : list) {
+                    int outval = apsProcessOperationOutMaterDo.getOutval();
+
+                    for (int i = 1; i <= outval; i++) {
+                        //插入记录物料子表
+                        ApsReportOutputDo apsReportOutputDo = new ApsReportOutputDo();
+
+                        apsReportOutputDo.setMainid(req.getMainId());
+                        apsReportOutputDo.setOutputid(apsProcessOperationOutMaterDo.getId());
+                        apsReportOutputDo.setOutputmaterial(apsProcessOperationOutMaterDo.getOutputmaterial());
+                        apsReportOutputDo.setId(SecurityUtil.getUUID());
+                        resList.add(apsReportOutputDo);
+                    }
+                }
+            }
+            if (req.getBlankType().equals("热轧")) {
+                for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : list) {
+                    int outval = apsProcessOperationOutMaterDo.getOutval();
+                    for (int i = 1; i <= outval; i++) {
+                        //插入记录物料子表
+                        ApsReportOutputDo apsReportOutputDo = new ApsReportOutputDo();
+                        apsReportOutputDo.setId(SecurityUtil.getUUID());
+                        apsReportOutputDo.setMainid(req.getMainId());
+                        apsReportOutputDo.setOutputid(apsProcessOperationOutMaterDo.getId());
+                        apsReportOutputDo.setOutputmaterial(apsProcessOperationOutMaterDo.getOutputmaterial());
+                        resList.add(apsReportOutputDo);
+                    }
+                }
+            }
+        }
+        if (req.getIfBlankProcess().equals("否")) {
+            //如果输出物料数量=1,并且单卷输出数量=1,批次号不变
+            if (list.size() == 1 && list.get(0).getOutval() == 1) {
+                //插入记录物料子表
+                ApsReportOutputDo apsReportOutputDo = new ApsReportOutputDo();
+                apsReportOutputDo.setId(SecurityUtil.getUUID());
+                apsReportOutputDo.setMainid(req.getMainId());
+                apsReportOutputDo.setOutputid(list.get(0).getId());
+                apsReportOutputDo.setOutputmaterial(list.get(0).getOutputmaterial());
+                resList.add(apsReportOutputDo);
+            } else {//输出物料数量>1,或者单卷输出数量>1
+                for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : list) {
+                    int outval = apsProcessOperationOutMaterDo.getOutval();
+                    for (int i = 1; i <= outval; i++) {
+                        //插入记录物料子表
+                        ApsReportOutputDo apsReportOutputDo = new ApsReportOutputDo();
+
+                        apsReportOutputDo.setMainid(req.getMainId());
+                        apsReportOutputDo.setOutputid(apsProcessOperationOutMaterDo.getId());
+                        apsReportOutputDo.setOutputmaterial(apsProcessOperationOutMaterDo.getOutputmaterial());
+                        apsReportOutputDo.setId(SecurityUtil.getUUID());
+                        resList.add(apsReportOutputDo);
+                    }
+                }
+            }
+        }
+
+        //插入子表
+        //获取当前用户信息
+        //获取当前用户的所属工厂
+        SysUserVo currentUser = CXCommonUtils.getCurrentUser();
+        String tenantId = currentUser.getOrganizationDoList().get(0).getFullpid().split(",")[1];
+        for (ApsReportOutputDo apsReportOutputDo : resList) {
+            apsReportOutputDo.setTenantid(tenantId);
+        }
+        this.saveBatch(resList);
+        return R.ok();
+    }
 }
 
 

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

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,12 +9,19 @@ import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bsentity.domain.*;
 
 import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
+import com.rongwei.bsentity.vo.InsertMyReportOutputReq;
+import com.rongwei.bsentity.vo.OrganizationCodeAndDeviceCodeVo;
+import com.rongwei.bsentity.vo.StartRePortReq;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.safecommon.utils.CXCommonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -23,7 +31,7 @@ import java.util.stream.Collectors;
  */
 @Service
 public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao, ApsReportRecordsDo>
-implements ApsReportRecordsService {
+        implements ApsReportRecordsService {
     @Autowired
     private ApsReportOutputService apsReportOutputService;
     @Autowired
@@ -40,6 +48,18 @@ implements ApsReportRecordsService {
     private ApsProcessOperationDao apsProcessOperationDao;
     @Autowired
     private ApsProcessOperationService apsProcessOperationService;
+    @Autowired
+    private ApsProductionOrderService apsProductionOrderService;
+    @Autowired
+    private ApsBlankOrderService apsBlankOrderService;
+    @Autowired
+    private ApsProcessOperationOutMaterService apsProcessOperationOutMaterService;
+    @Autowired
+    private ApsAlloyService apsAlloyService;
+    @Autowired
+    private ApsAlloyCompositionService apsAlloyCompositionService;
+    @Autowired
+    private ApsReportBlankCompentService apsReportBlankCompentService;
 
     @Override
     @Transactional
@@ -53,23 +73,23 @@ implements ApsReportRecordsService {
         }
         //查询报工详情
         ApsReportRecordsDo recordsDo = this.getById(recordId);
-        if(ObjectUtil.isEmpty(recordsDo)){
+        if (ObjectUtil.isEmpty(recordsDo)) {
             return R.error("报工记录未找到");
         }
         //删除报工记录
         this.removeById(recordId);
         //删除报工输出物料
-        apsReportOutputService.remove(new QueryWrapper<ApsReportOutputDo>().lambda().eq(ApsReportOutputDo::getMainid,recordId));
+        apsReportOutputService.remove(new QueryWrapper<ApsReportOutputDo>().lambda().eq(ApsReportOutputDo::getMainid, recordId));
         //删除报工加工参数
-        apsReportMachiningService.remove(new QueryWrapper<ApsReportMachiningDo>().lambda().eq(ApsReportMachiningDo::getMainid,recordId));
+        apsReportMachiningService.remove(new QueryWrapper<ApsReportMachiningDo>().lambda().eq(ApsReportMachiningDo::getMainid, recordId));
         //删除报工检查项
-        apsReportCheckoutService.remove(new QueryWrapper<ApsReportCheckoutDo>().lambda().eq(ApsReportCheckoutDo::getMainid,recordId));
+        apsReportCheckoutService.remove(new QueryWrapper<ApsReportCheckoutDo>().lambda().eq(ApsReportCheckoutDo::getMainid, recordId));
 
         //更新输入物料在制品:如果输入物料有批次号,并且在制品库存中有输入物料批次号的在制品,则更新该在制品的在制品状态=待加工
-        if(ObjectUtil.isNotEmpty(recordsDo.getBatchnumber())){
+        if (ObjectUtil.isNotEmpty(recordsDo.getBatchnumber())) {
             ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = new ApsWorkInProgressInventoryDo();
             apsWorkInProgressInventoryDo.setWorkinprocessstatus("待加工");
-            apsWorkInProgressInventoryService.update(apsWorkInProgressInventoryDo,new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda().eq(ApsWorkInProgressInventoryDo::getBatchnumber,recordsDo.getBatchnumber()));
+            apsWorkInProgressInventoryService.update(apsWorkInProgressInventoryDo, new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda().eq(ApsWorkInProgressInventoryDo::getBatchnumber, recordsDo.getBatchnumber()));
         }
 
         //更新工序作业和作业明细
@@ -100,14 +120,14 @@ implements ApsReportRecordsService {
          */
         ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
         apsProcessOperationProcessEquDo.setId(equDo.getId());
-        if(equDo.getStartingroll() == 0){
+        if (equDo.getStartingroll() == 0) {
             apsProcessOperationProcessEquDo.setWorkstatus("待开工");
             apsProcessOperationProcessEquDo.setActualstartdate(null);
         }
-        if(equDo.getStartingroll() > 0 && equDo.getClosestatus().equals("未完工")){
+        if (equDo.getStartingroll() > 0 && equDo.getClosestatus().equals("未完工")) {
             apsProcessOperationProcessEquDo.setWorkstatus("加工中");
         }
-        if(ObjectUtil.isNotEmpty(equDo.getUnfinishroll()) && equDo.getUnfinishroll() == 0){
+        if (ObjectUtil.isNotEmpty(equDo.getUnfinishroll()) && equDo.getUnfinishroll() == 0) {
             apsProcessOperationProcessEquDo.setWorkstatus("已完工");
         }
 
@@ -116,20 +136,20 @@ implements ApsReportRecordsService {
          * 如果该工序作业没有前道工序作业,则该工序作业所有作业明细的待加工料卷批次号加上“{批次号},”
          * 如果该工序作业有前道工序作业,则输入物料对应前道工序作业的输出物料的所有后道工序作业的所有作业明细的待加工料卷批次号加上“{批次号},”
          */
-        if(ObjectUtil.isNotEmpty(recordsDo.getBatchnumber())){
+        if (ObjectUtil.isNotEmpty(recordsDo.getBatchnumber())) {
             //查询工序作业
             ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(processoperationid);
             //没有前道工序
-            if(ObjectUtil.isEmpty(apsProcessOperationDo.getPreviousprocessid())){
-                apsProcessOperationDao.updateBatchNumberByProcessId(recordsDo.getBatchnumber(),processoperationid);
+            if (ObjectUtil.isEmpty(apsProcessOperationDo.getPreviousprocessid())) {
+                apsProcessOperationDao.updateBatchNumberByProcessId(recordsDo.getBatchnumber(), processoperationid);
             }
             //有前道工序
-            if(ObjectUtil.isNotEmpty(apsProcessOperationDo.getPreviousprocessid())){
+            if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getPreviousprocessid())) {
                 //查询所有同级工序
                 List<ApsProcessOperationDo> list = apsProcessOperationService.list(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getPreviousprocessid, apsProcessOperationDo.getPreviousprocessid()));
                 List<String> processIdList = list.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList());
                 //更新所有同级工序作业的明细,增加批次号
-                apsProcessOperationDao.updateBatchNumberByProcessList(recordsDo.getBatchnumber(),processIdList);
+                apsProcessOperationDao.updateBatchNumberByProcessList(recordsDo.getBatchnumber(), processIdList);
             }
         }
 
@@ -142,6 +162,192 @@ implements ApsReportRecordsService {
 
         return R.ok();
     }
+
+    @Override
+    @Transactional
+    public R startReport(StartRePortReq req) {
+
+//        //根据设备ID查询对应车间代号和设备代号
+//        OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo = this.baseMapper.selectOrganizationCodeAndDeviceCode(req.getProcessdeviceid());
+//        if(ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo)){
+//            return R.error("未找到对应的车间代号和设备代号");
+//        }
+        //根据作业明细ID查询作业明细详情
+        ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(req.getUseDeviceId());
+        //查询工序作业的详情
+        ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(apsProcessOperationProcessEquDo.getProcessid());
+        //查询坯料计划的详情
+        ApsBlankOrderDo apsBlankOrderDo = apsBlankOrderService.getById(apsProcessOperationDo.getBlankid());
+        //查询订单的详情
+        ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
+
+
+        //获取当前用户相关信息
+        SysUserVo currentUser = CXCommonUtils.getCurrentUser();
+        String tenantId = currentUser.getOrganizationDoList().get(0).getFullpid().split(",")[1];
+
+        //新增主表报工记录信息
+        ApsReportRecordsDo apsReportRecordsDo = new ApsReportRecordsDo();
+        apsReportRecordsDo.setId(SecurityUtil.getUUID());
+        apsReportRecordsDo.setTenantid(tenantId);
+        //工序作业ID
+        apsReportRecordsDo.setProcessoperationid(apsProcessOperationDo.getId());
+        //作业明细ID
+        apsReportRecordsDo.setProcessequid(apsProcessOperationProcessEquDo.getId());
+        //输入物料的批次号
+        apsReportRecordsDo.setBatchnumber(req.getInputBatchNumber());
+        //实际输入物料
+        apsReportRecordsDo.setActualinputmaterial(apsProcessOperationDo.getPlaninput());
+        //主操作员
+        apsReportRecordsDo.setChiefoperatorid(currentUser.getId());
+        apsReportRecordsDo.setChiefoperatorname(currentUser.getName());
+        //开工时间
+        apsReportRecordsDo.setStartworktime(DateUtil.date());
+        //报工时间
+        apsReportRecordsDo.setReportworktime(DateUtil.date());
+        //报工状态
+        apsReportRecordsDo.setReportworkstatus("已开工");
+
+        //保存主表
+        this.save(apsReportRecordsDo);
+
+        //=================更新工序作业明细的报工ID、已开工卷数============
+        //将报工记录ID存入工序作业的设备子表中
+        ApsProcessOperationProcessEquDo needUpdateProcessOperationProcessEqu = new ApsProcessOperationProcessEquDo();
+        needUpdateProcessOperationProcessEqu.setId(apsProcessOperationProcessEquDo.getId());
+
+        //更新待报工记录ID
+        needUpdateProcessOperationProcessEqu.setWaitreportid(apsReportRecordsDo.getId());
+        //获取作业明细的已开工卷数
+        Integer startingroll = apsProcessOperationProcessEquDo.getStartingroll();
+        Integer newStartingRoll = startingroll + 1;
+        //更新已开工卷数
+        needUpdateProcessOperationProcessEqu.setStartingroll(newStartingRoll);
+        if (newStartingRoll.equals(1)) {
+            //更新实际开工时间
+            needUpdateProcessOperationProcessEqu.setActualstartdate(DateUtil.date());
+        }
+        apsProcessOperationProcessEquService.updateById(needUpdateProcessOperationProcessEqu);
+
+        //===============更新工序作业==================
+        this.baseMapper.updateProcessActualStartDate(apsProcessOperationDo.getId());
+
+        //=============更新设备的报工记录ID=============
+        this.baseMapper.updateDeviceWaitReportId(apsReportRecordsDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid());
+
+        //==========输入物料有批次号==============
+        if (ObjectUtil.isNotEmpty(req.getInputBatchNumber())) {
+            //如果该工序作业没有前道工序作业
+            if (ObjectUtil.isEmpty(apsProcessOperationDo.getPreviousprocessid())) {
+                //该工序作业的待加工料卷批次号去掉“{批次号},”或者“,{批次号}”
+                this.baseMapper.updateBatchMaterialProcess(req.getInputBatchNumber(), apsProcessOperationProcessEquDo.getId());
+            } else {//如果该工序作业有前道工序作业
+                //前道工序作业 的 所有后道工序作业(包含本工序作业【即所有与本工序同级的工序作业】) 的待加工料卷批次号去掉“{批次号},”或者“,{批次号}”
+                //查询前道工序作业的所有后道工序作业
+                List<ApsProcessOperationDo> nextProcessList = apsProcessOperationService.list(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getPreviousprocessid, apsProcessOperationDo.getPreviousprocessid()));
+                String collect = nextProcessList.stream().map(ApsProcessOperationDo::getId).collect(Collectors.joining("','"));
+                String processIds = "'" + collect + "'";
+                this.baseMapper.updateBatchMaterialProcessBatch(req.getInputBatchNumber(), processIds);
+            }
+        }
+
+        //==========输出物料子表信息============
+        InsertMyReportOutputReq req2 = new InsertMyReportOutputReq();
+        req2.setProcessId(apsProcessOperationDo.getId());
+        req2.setIfBlankProcess(apsProcessOperationDo.getIfblankprocess());
+        req2.setBlankType(apsBlankOrderDo.getBlanktype());
+        req2.setMainId(apsReportRecordsDo.getId());
+        R r = apsReportOutputService.insertMyReportOutputWithOutBatchNumber(req2);
+        if (!r.getCode().equals("200")) {
+            return R.error(r.getMsg());
+        }
+
+        //=============加工参数子表信息、检查项目子表信息================
+        if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getProcess())) {
+            //根据工序查询其工序的加工参数
+            List<ApsParameterDo> parameterDoList = this.baseMapper.selectApsParameterByProcess(apsProcessOperationDo.getProcess());
+            List<ApsReportMachiningDo> needInsertApsReportMachingList = new LinkedList<>();
+            for (ApsParameterDo apsParameterDo : parameterDoList) {
+                ApsReportMachiningDo apsReportMachiningDo = new ApsReportMachiningDo();
+                apsReportMachiningDo.setId(SecurityUtil.getUUID());
+                apsReportMachiningDo.setTenantid(tenantId);
+                apsReportMachiningDo.setMainid(apsReportRecordsDo.getId());
+                apsReportMachiningDo.setMatching(apsParameterDo.getParameter());
+                needInsertApsReportMachingList.add(apsReportMachiningDo);
+            }
+            if (ObjectUtil.isNotEmpty(needInsertApsReportMachingList)) {
+                apsReportMachiningService.saveBatch(needInsertApsReportMachingList);
+            }
+
+            //根据工序查询其工序的检查项目
+            List<ApsCheckParameterDo> checkParameterDoList = this.baseMapper.selectApsCheckParameterByProcess(apsProcessOperationDo.getProcess());
+            List<ApsReportCheckoutDo> needInsertApsReportCheckList = new LinkedList<>();
+            for (ApsCheckParameterDo apsCheckParameterDo : checkParameterDoList) {
+                ApsReportCheckoutDo apsReportCheckoutDo = new ApsReportCheckoutDo();
+                apsReportCheckoutDo.setId(SecurityUtil.getUUID());
+                apsReportCheckoutDo.setTenantid(tenantId);
+                apsReportCheckoutDo.setMainid(apsReportRecordsDo.getId());
+                apsReportCheckoutDo.setCheckitem(apsCheckParameterDo.getCkeckparameter());
+                needInsertApsReportCheckList.add(apsReportCheckoutDo);
+            }
+            if (ObjectUtil.isNotEmpty(needInsertApsReportCheckList)) {
+                apsReportCheckoutService.saveBatch(needInsertApsReportCheckList);
+            }
+
+        }
+        //=============坯料成分子表信息=============
+        //工序作业的合金
+        String metal = apsProcessOperationDo.getMetal();
+        //订单的客户ID
+        String customid = apsProductionOrderDo.getCustomid();
+        String alloyId = "";
+        //查询合金对应的所有主表信息
+        List<ApsAlloyDo> apsAlloyDoList = apsAlloyService.list(new QueryWrapper<ApsAlloyDo>().lambda().eq(ApsAlloyDo::getAlloy, metal));
+        if (ObjectUtil.isNotEmpty(apsAlloyDoList)) {
+            //查询客户标准
+            List<ApsAlloyDo> collect = apsAlloyDoList.stream().filter(item -> ObjectUtil.isNotEmpty(item.getCustomerid()) && item.getCustomerid().contains(customid)).collect(Collectors.toList());
+            if (ObjectUtil.isNotEmpty(collect)) {
+                alloyId = collect.get(0).getId();
+            } else {//查询国标
+                List<ApsAlloyDo> collect1 = apsAlloyDoList.stream().filter(item -> ObjectUtil.isEmpty(item.getCustomerid())).collect(Collectors.toList());
+                if (ObjectUtil.isNotEmpty(collect1)) {
+                    alloyId = collect.get(0).getId();
+                }
+            }
+        }
+        //查询合金成分要求
+        if (ObjectUtil.isNotEmpty(alloyId)) {
+            List<ApsAlloyCompositionDo> apsAlloyCompositionDoList = apsAlloyCompositionService.list(new QueryWrapper<ApsAlloyCompositionDo>().lambda().eq(ApsAlloyCompositionDo::getAlloyid, alloyId));
+
+            if (ObjectUtil.isNotEmpty(apsAlloyCompositionDoList)) {
+                List<ApsReportBlankCompentDo> needInsertApsReportBlankCompentList = new LinkedList<>();
+                for (ApsAlloyCompositionDo apsAlloyCompositionDo : apsAlloyCompositionDoList) {
+                    ApsReportBlankCompentDo apsReportBlankCompentDo = new ApsReportBlankCompentDo();
+                    apsReportBlankCompentDo.setId(SecurityUtil.getUUID());
+                    apsReportBlankCompentDo.setTenantid(tenantId);
+                    apsReportBlankCompentDo.setMainid(apsReportRecordsDo.getId());
+                    apsReportBlankCompentDo.setCompent(apsAlloyCompositionDo.getIngredient());
+                    apsReportBlankCompentDo.setStartproportion(apsAlloyCompositionDo.getLeftproportion());
+                    apsReportBlankCompentDo.setEndproportion(apsAlloyCompositionDo.getRightproportion());
+                    needInsertApsReportBlankCompentList.add(apsReportBlankCompentDo);
+                }
+                if (ObjectUtil.isNotEmpty(needInsertApsReportBlankCompentList)) {
+                    apsReportBlankCompentService.saveBatch(needInsertApsReportBlankCompentList);
+                }
+
+            }
+        }
+        //更新生产状态
+        CommonUpdateProductionStatusReq req3 = new CommonUpdateProductionStatusReq();
+        req3.setProcessOperationEquId(apsProcessOperationProcessEquDo.getId());
+        R r2 = apsProcessOperationProcessEquService.updateProductionStatus(req3);
+        if (!r2.getCode().equals("200")) {
+            return R.error(r2.getMsg());
+        }
+
+        return R.ok(apsReportRecordsDo);
+    }
+
 }
 
 

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

@@ -60,27 +60,31 @@ public class GanttServiceImpl implements GanttService {
 
     /**
      * 根据条件获取gantt
-     *
      * @param searchDate
-     * @param endTime
      * @param factoryId
-     * @param workshopId
+     * @param workShopIdList
+     * @param orderNoList
+     * @param productionLineId
+     * @param equId
      * @return
      */
     @Override
-    public R getListByCondition(Date searchDate, String factoryId, String workshopId,String orderNo) {
+    public R getListByCondition(Date searchDate, String factoryId,
+                                List<String> workShopIdList,
+                                List<String> orderNoList,
+                                List<String> productionLineId,
+                                List<String> equId) {
         log.info("甘特图查询开始时间:"+ DateUtil.now());
         List<Date> searchDateList = getSearchDate(searchDate);
-        List<String> workShopIdList = StringUtils.isNotBlank(workshopId) ? Arrays.asList(workshopId.split(",")) : new ArrayList<>();
-        // 获取 工序作业信息
-        List<String> orderNoList=StringUtils.isBlank(orderNo)?null:Arrays.asList(orderNo.split(","));
         List<GanttVos> apsProcessOperationProcessEquDos = apsProcessOperationProcessEquDao.getGanttDataList(
                 searchDateList==null?null:searchDateList.get(0),
                 searchDateList==null?null:searchDateList.get(1),
                 factoryId,
                 workShopIdList,
                 orderNoList,
-                null);
+                null,
+                productionLineId,
+                equId);
         // 需要返回给前端的数据
         List<ScheduleGanttVo> resultVo = new ArrayList<>();
         if (apsProcessOperationProcessEquDos.isEmpty()) {
@@ -172,9 +176,12 @@ public class GanttServiceImpl implements GanttService {
                     if(conflictdes != null && conflictdes.size()>0){
                         String desc = conflictdes.stream().map(GanttVos::getConflictdes).collect(Collectors.joining(";"));
                         dateVo.setConflictdes(desc);
+                        dateVo.setSoftconflictdes(conflictdes.stream().map(GanttVos::getSoftconflictdes).collect(Collectors.joining(";")));
                         // 有冲突描述时
-                        if(StringUtils.isNotBlank(desc)){
+                        if(StringUtils.isBlank(dateVo.getConflictdes()) && StringUtils.isBlank(dateVo.getSoftconflictdes())){
                             dateVo.setConflict(true);
+                        }else{
+                            dateVo.setConflict(false);
                         }
                     }
 
@@ -294,7 +301,7 @@ public class GanttServiceImpl implements GanttService {
                 if(queryProcessids != null && queryProcessids.size()>0){
                     String joinids = "'" + CollUtil.join(queryProcessids, "','") + "'";
                     retGantvos = apsProcessOperationProcessEquDao.getGanttDataList(
-                            null,null,null,null,null,joinids);
+                            null,null,null,null,null,joinids,null,null);
                 }
             }
 

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

@@ -175,9 +175,10 @@
         Date(a6.PROMISEDELIVERYDATE) as PROMISEDELIVERYDATE,
         Date(a6.SCHEDULEDELIVERYDATE) as SCHEDULEDELIVERYDATE,
         if((a6.PROMISEDELIVERYDATE is not null and DATE(a6.SCHEDULEDELIVERYDATE)> DATE(a6.PROMISEDELIVERYDATE))
-               or ((a6.PROMISEDELIVERYDATE is null or  DATE(a6.SCHEDULEDELIVERYDATE) &lt;= DATE(a6.PROMISEDELIVERYDATE)) and
+        or ((a6.PROMISEDELIVERYDATE is null or DATE(a6.SCHEDULEDELIVERYDATE) &lt;= DATE(a6.PROMISEDELIVERYDATE)) and
         DATE(a6.SCHEDULEDELIVERYDATE)> DATE(a6.DELIVERYDATE)
-        ),1,0) as conflict
+        ),1,0) as conflict,
+        a1.SOFTCONFLICTDES
         FROM
         aps_process_operation_process_equ a1
         LEFT JOIN aps_process_operation a2 ON a1.PROCESSID = a2.ID
@@ -186,6 +187,10 @@
         LEFT JOIN aps_product_detail a5 ON a4.PRODUCTID = a5.ID
         LEFT JOIN aps_production_order a6 on a6.ID= a5.MAINID
         LEFT JOIN aps_customer_management a7 on a6.CUSTOMID= a7.ID
+        <if test="productionLineIds != null and productionLineIds.size()>0">
+            LEFT JOIN aps_resources_equipment ape on ape.EQUIPMENTID = a1.PROCESSDEVICEID
+            LEFT JOIN aps_production_line apl on ape.MAINID =apl.ID
+        </if>
         <where>
             a1.DELETED ='0'
             AND a2.DELETED = '0'
@@ -193,21 +198,37 @@
             AND a4.DELETED = '0'
             AND a5.DELETED = '0'
             AND a6.DELETED='0'
+            <if test="productionLineIds != null and productionLineIds.size()>0">
+                AND ape.DELETED = '0'
+                AND apl.DELETED = '0'
+            </if>
             <if test="workshopIds != null and workshopIds.size()>0">
                 and a1.PROCESSWORKSHOPID in
                 <foreach collection="workshopIds" item="workshopId" open="(" close=")" separator=",">
                     #{workshopId}
                 </foreach>
             </if>
-            <if test="factoryId != null and factoryId != '' and factoryId != 'ALL'">and a1.TENANTID = #{factoryId}</if>
-            <if test="startTime != null ">and a1.PLANSTARTDATE &gt;= #{startTime}</if>
-            <if test="endTime != null ">and a1.PLANENDDATE &lt;= #{endTime}</if>
             <if test="orderNos !=null and orderNos.size()>0">
-                and  a6.ORDERNO in
+                and a6.ORDERNO in
                 <foreach collection="orderNos" item="orderNo" open="(" close=")" separator=",">
                     #{orderNo}
                 </foreach>
             </if>
+            <if test="equIds != null and equIds.size()>0">
+                and a1.PROCESSDEVICEID in
+                <foreach collection="equIds" item="equId" open="(" close=")" separator=",">
+                    #{equId}
+                </foreach>
+            </if>
+            <if test="productionLineIds != null and productionLineIds.size()>0">
+                and apl.ID in
+                <foreach collection="productionLineIds" item="productionLineId" open="(" close=")" separator=",">
+                    #{productionLineId}
+                </foreach>
+            </if>
+            <if test="factoryId != null and factoryId != '' and factoryId != 'ALL'">and a1.TENANTID = #{factoryId}</if>
+            <if test="startTime != null ">and a1.PLANSTARTDATE &gt;= #{startTime}</if>
+            <if test="endTime != null ">and a1.PLANENDDATE &lt;= #{endTime}</if>
             <if test="processids != null ">and a1.PROCESSID in (${processids})</if>
         </where>
         order by a1.PLANSTARTDATE asc,a1.PLANENDDATE asc

+ 100 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsAlloyCompositionDo.java

@@ -0,0 +1,100 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * aps_alloy_composition
+ * @author 
+ */
+@Data
+@TableName("aps_alloy_composition")
+public class ApsAlloyCompositionDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 所属工厂
+     */
+    private String ownedfactory;
+
+    /**
+     * 序号
+     */
+    private Integer serialnumber;
+
+    /**
+     * 合金主表ID
+     */
+    private String alloyid;
+
+    /**
+     * 成分
+     */
+    private String ingredient;
+
+    /**
+     * 比例(起)
+     */
+    private BigDecimal leftproportion;
+
+    /**
+     * 比例(至)
+     */
+    private BigDecimal rightproportion;
+
+    private static final long serialVersionUID = 1L;
+}

+ 99 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsAlloyDo.java

@@ -0,0 +1,99 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * aps_alloy
+ * @author 
+ */
+@Data
+@TableName("aps_alloy")
+public class ApsAlloyDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 所属工厂
+     */
+    private String ownedfactory;
+
+    /**
+     * 序号
+     */
+    private Integer serialnumber;
+
+    /**
+     * 合金
+     */
+    private String alloy;
+
+    /**
+     * 客户简称
+     */
+    private String customerabbreviation;
+
+    /**
+     * 客户ID
+     */
+    private String customerid;
+
+    /**
+     * 客户名称
+     */
+    private String customername;
+
+    private static final long serialVersionUID = 1L;
+}

+ 79 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsCheckParameterDo.java

@@ -0,0 +1,79 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * aps_check_parameter
+ * @author 
+ */
+@Data
+@TableName("aps_check_parameter")
+public class ApsCheckParameterDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 检查项
+     */
+    private String ckeckparameter;
+
+    /**
+     * 工序表ID
+     */
+    private String mainid;
+
+    private static final long serialVersionUID = 1L;
+}

+ 79 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsParameterDo.java

@@ -0,0 +1,79 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * aps_parameter
+ * @author 
+ */
+@Data
+@TableName("aps_parameter")
+public class ApsParameterDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 参数
+     */
+    private String parameter;
+
+    /**
+     * 工序ID
+     */
+    private String mainid;
+
+    private static final long serialVersionUID = 1L;
+}

+ 98 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportBlankCompentDo.java

@@ -0,0 +1,98 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * aps_report_blank_compent
+ * @author 
+ */
+@Data
+@TableName("aps_report_blank_compent")
+public class ApsReportBlankCompentDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 所属租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人名称
+     */
+    private String createusername;
+
+    /**
+     * 修改人名称
+     */
+    private String modifyusername;
+
+    /**
+     * 主表ID
+     */
+    private String mainid;
+
+    /**
+     * 成分
+     */
+    private String compent;
+
+    /**
+     * 占比范围(起)
+     */
+    private BigDecimal startproportion;
+
+    /**
+     * 占比范围(止)
+     */
+    private BigDecimal endproportion;
+
+    /**
+     * 实际占比
+     */
+    private BigDecimal actualproportion;
+
+    private static final long serialVersionUID = 1L;
+}

+ 4 - 4
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportMachiningDo.java

@@ -71,14 +71,14 @@ public class ApsReportMachiningDo implements Serializable {
     private String mainid;
 
     /**
-     * 检查项目
+     * 加工参数
      */
-    private String checkitem;
+    private String matching;
 
     /**
-     * 检查
+     * 参数
      */
-    private String checkparameter;
+    private String matchingparameter;
 
     private static final long serialVersionUID = 1L;
 }

+ 11 - 2
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java

@@ -138,8 +138,17 @@ public class GanttVos {
      * 冲突
      */
     private Boolean conflict;
-
+    /**
+     * 是否冲突
+     */
     private String hasconflict;
-
+    /**
+     *非强制冲突描述
+     */
     private String conflictdes;
+
+    /**
+     * 强制冲突描述
+     */
+    private String softconflictdes;
 }

+ 17 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/OrganizationCodeAndDeviceCodeVo.java

@@ -0,0 +1,17 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+/**
+ * @author :sc
+ * @since :2024/5/9
+ */
+@Data
+public class OrganizationCodeAndDeviceCodeVo {
+    //车间代号
+    private String organizationCode;
+    //设备代号
+    private String deviceCode;
+    //此设备带报工记录ID
+    private String waitReportId;
+}

+ 21 - 6
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProcessGanttListVo.java

@@ -1,19 +1,34 @@
 package com.rongwei.bsentity.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class ProcessGanttListVo {
-
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startTime;
 
     private String factoryId;
-
-    private String workshopId;
-
-    private String orderNo;
-
+    /**
+     * 车间
+     */
+    private List<String> workshopId;
+    /**
+     * 订单
+     */
+    private List<String> orderNo;
+    /**
+     * 产线
+     */
+    private List<String> productionLineId;
+    /**
+     * 设备ID
+     */
+    private List<String> equId;
 }

+ 5 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttVo.java

@@ -96,9 +96,13 @@ public class ScheduleGanttVo {
      */
     private Boolean conflict;
     /**
-     * 冲突
+     * 非强制冲突描述
      */
     private String conflictdes;
+    /**
+     * 强制冲突描述
+     */
+    private String softconflictdes;
     /**
      * 订单ID
      */

+ 17 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/StartRePortReq.java

@@ -0,0 +1,17 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+/**
+ * @author :sc
+ * @since :2024/5/9
+ */
+@Data
+public class StartRePortReq {
+
+    //作业明细表ID
+    private String useDeviceId;
+
+    //输入物料的批次号
+    private String inputBatchNumber;
+}

+ 8 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsReportRecordController.java

@@ -2,6 +2,7 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
+import com.rongwei.bsentity.vo.StartRePortReq;
 import com.rongwei.rwcommon.base.R;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +44,13 @@ public class ApsReportRecordController {
         }
     }
 
+    /**
+     * 开工
+     */
+    @PostMapping("/startReport")
+    public R startReport(@RequestBody StartRePortReq req){
+        return apsReportRecordsService.startReport(req);
+    }
 
 }
 

+ 5 - 2
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/GanttController.java

@@ -32,11 +32,13 @@ public class GanttController {
      * @return
      */
     @GetMapping("/list")
+    @Deprecated
     public R updateRelevantInformation(@RequestParam(name = "startTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date searchDate,
                                        @RequestParam(name = "factoryId") String factoryId,
                                        @RequestParam(name = "workshopId", required = false) String workshopId,
                                        @RequestParam(name = "orderNo",required = false) String orderNo) {
-        return ganttService.getListByCondition(searchDate, factoryId, workshopId,orderNo);
+//        return ganttService.getListByCondition(searchDate, factoryId, workshopId,orderNo);
+        return R.ok();
     }
 
     /**
@@ -47,7 +49,8 @@ public class GanttController {
     @PostMapping("/processGanttList")
     public R processGanttList(@RequestBody ProcessGanttListVo processGanttListVo) {
         return ganttService.getListByCondition(processGanttListVo.getStartTime(), processGanttListVo.getFactoryId(),
-                processGanttListVo.getWorkshopId(),processGanttListVo.getOrderNo());
+                processGanttListVo.getWorkshopId(), processGanttListVo.getOrderNo(),
+                processGanttListVo.getProductionLineId(), processGanttListVo.getEquId());
     }
 
     /**