Преглед на файлове

aps-作业开工事务化

sucheng преди 1 година
родител
ревизия
5a544942d0
променени са 23 файла, в които са добавени 926 реда и са изтрити 19 реда
  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. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportBlankCompentDao.java
  4. 28 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportRecordsDao.java
  5. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsAlloyCompositionService.java
  6. 14 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsAlloyService.java
  7. 8 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsReportBlankCompentService.java
  8. 2 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsReportOutputService.java
  9. 3 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsReportRecordsService.java
  10. 13 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsAlloyCompositionServiceImpl.java
  11. 13 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsAlloyServiceImpl.java
  12. 13 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportBlankCompentServiceImpl.java
  13. 78 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportOutputServiceImpl.java
  14. 221 15
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java
  15. 100 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsAlloyCompositionDo.java
  16. 99 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsAlloyDo.java
  17. 79 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsCheckParameterDo.java
  18. 79 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsParameterDo.java
  19. 98 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportBlankCompentDo.java
  20. 4 4
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportMachiningDo.java
  21. 17 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/OrganizationCodeAndDeviceCodeVo.java
  22. 17 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/StartRePortReq.java
  23. 8 0
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsReportRecordController.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> {
+}

+ 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);
 }

+ 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 {
+
+}

+ 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);
+    }
+
 }
 
 

+ 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;
 }

+ 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;
+}

+ 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);
+    }
 
 }