Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

fangpy 1 gadu atpakaļ
vecāks
revīzija
c0453162e6
29 mainītis faili ar 1115 papildinājumiem un 168 dzēšanām
  1. 6 0
      business-common/pom.xml
  2. 16 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxApiDao.java
  3. 11 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxOutsideInspectionItpDao.java
  4. 14 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxOutsideInspectionItpSupervisionDispatchDao.java
  5. 16 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxSupervisionCustomUserManageDao.java
  6. 14 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxApiService.java
  7. 0 1
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxOutsideInspectionItpNdtResultService.java
  8. 17 11
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxOutsideInspectionItpService.java
  9. 9 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxOutsideInspectionItpSupervisionDispatchService.java
  10. 16 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxSupervisionCustomUserManageService.java
  11. 25 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxApiServiceImpl.java
  12. 23 2
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxItpTemplateServiceImpl.java
  13. 371 103
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxOutsideInspectionItpServiceImpl.java
  14. 21 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxOutsideInspectionItpSupervisionDispatchServiceImpl.java
  15. 20 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxSupervisionCustomUserManageServiceImpl.java
  16. 36 0
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/LockUtils.java
  17. 31 0
      business-common/src/main/resources/mybatis/business/zhcxApiDao.xml
  18. 36 0
      business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxItpProjectNodesDo.java
  19. 47 0
      business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxItpTemplateNodesDo.java
  20. 63 22
      business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxOutsideInspectionItpDo.java
  21. 45 20
      business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxOutsideInspectionItpSupervisionDispatchDo.java
  22. 88 0
      business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxSupervisionCustomUserManageDo.java
  23. 10 0
      business-entity/src/main/java/com/rongwei/bsentity/dto/ReInspectionRequest.java
  24. 14 3
      business-entity/src/main/java/com/rongwei/bsentity/vo/OperOutsideInspectionVo.java
  25. 28 0
      business-entity/src/main/java/com/rongwei/bsentity/vo/SupervisionVo.java
  26. 74 0
      business-entity/src/main/java/com/rongwei/bsentity/vo/ZhcxOutsideInspectionVo.java
  27. 32 0
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxApiController.java
  28. 24 4
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxOperOutsideInspectionController.java
  29. 8 2
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxOutsideInspectionItpController.java

+ 6 - 0
business-common/pom.xml

@@ -22,6 +22,12 @@
             <version>1.0-SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>rw-admin-common</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-generator</artifactId>

+ 16 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxApiDao.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.vo.ZhcxOutsideInspectionVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhuang
+ */
+@Mapper
+public interface ZhcxApiDao {
+
+    List<ZhcxOutsideInspectionVo> getOutsideInspectionList(Map<String, Object> map);
+}

+ 11 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxOutsideInspectionItpDao.java

@@ -2,6 +2,9 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ZhcxOutsideInspectionItpDao extends BaseMapper<ZhcxOutsideInspectionItpDo> {
 
+    /**
+     * 拒收的报验单报验次数+1
+     *
+     * @param map
+     */
+    @Update("update INCONTROL.ZHCX_OUTSIDE_INSPECTION_ITP i, INCONTROL.ZHCX_OUTSIDE_INSPECTION_ITP_SUPERVISION_DISPATCH d set i.INSPECTIONCOUNT = ifnull(i.INSPECTIONCOUNT, 0) + 1" +
+            " where i.ID = d.ITPID and d.INSPECTIONCONCLUSION = '20' and i.ID = #{id}")
+    void updateInspectionCount(Map<String, String> map);
 }

+ 14 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxOutsideInspectionItpSupervisionDispatchDao.java

@@ -2,6 +2,9 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpSupervisionDispatchDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +16,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ZhcxOutsideInspectionItpSupervisionDispatchDao extends BaseMapper<ZhcxOutsideInspectionItpSupervisionDispatchDo> {
 
+    /**
+     * 清空
+     *
+     * @param entity
+     */
+    @Update("update INCONTROL.ZHCX_OUTSIDE_INSPECTION_ITP_SUPERVISION_DISPATCH " +
+            "set SFILES = '', CANVAS = '', SIGNATURE = '', DISPATCHSTATUS = '10', CANCELTYPE = '', CANCELREASON = '', " +
+            "INSPECTIONCONCLUSION = '',REFUSEREASON='',SUPERVISIONUSERID = '',SUPERVISIONID = '',SUPERVISIONACCOUNT = ''," +
+            "SUPERVISION = '',SUPERVISIONPHONE = '',CHECKSTARTTIME = '', CHECKENDTIME = '' " +
+            "where ID = #{id}")
+    void reInspection(ZhcxOutsideInspectionItpSupervisionDispatchDo entity);
 }

+ 16 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxSupervisionCustomUserManageDao.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 监理客户账号管理表 Mapper 接口
+ * </p>
+ *
+ * @author fpy
+ * @since 2024-01-11
+ */
+public interface ZhcxSupervisionCustomUserManageDao extends BaseMapper<ZhcxSupervisionCustomUserManageDo> {
+
+}

+ 14 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxApiService.java

@@ -0,0 +1,14 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.vo.ZhcxOutsideInspectionVo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhuang
+ */
+public interface ZhcxApiService {
+
+    List<ZhcxOutsideInspectionVo> getOutsideInspectionList(Map<String, Object> map);
+}

+ 0 - 1
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxOutsideInspectionItpNdtResultService.java

@@ -1,6 +1,5 @@
 package com.rongwei.bscommon.sys.service;
 
-import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpDo;
 import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpNdtResultDo;
 import com.baomidou.mybatisplus.extension.service.IService;
 

+ 17 - 11
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxOutsideInspectionItpService.java

@@ -1,19 +1,13 @@
 package com.rongwei.bscommon.sys.service;
 
-import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpDo;
 import com.rongwei.bsentity.vo.OperOutsideInspectionVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.generalsql.MasterSlaveUpdateVo;
 
-import java.util.Map;
+import java.util.List;
 
-/**
- * <p>
- * 外部报验-ITP报验 服务类
- * </p>
- *
- * @author wm
- * @since 2023-12-26
- */
 public interface ZhcxOutsideInspectionItpService extends IService<ZhcxOutsideInspectionItpDo> {
 
     /**
@@ -23,5 +17,17 @@ public interface ZhcxOutsideInspectionItpService extends IService<ZhcxOutsideIns
      */
     void splitOrder(String id);
 
-    String OperInspectionStatus(OperOutsideInspectionVo vo);
+    R operInspectionStatus(List<OperOutsideInspectionVo> vo);
+
+    /**
+     * 再次报验
+     * 1、复制一份作为历史记录
+     * 2、保存最新数据
+     * 3、更新报验次数
+     * 4、清空派单数据
+     *
+     * @param id
+     */
+    void reInspection(String id, MasterSlaveUpdateVo masterSlaveUpdate);
 }
+

+ 9 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxOutsideInspectionItpSupervisionDispatchService.java

@@ -13,4 +13,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ZhcxOutsideInspectionItpSupervisionDispatchService extends IService<ZhcxOutsideInspectionItpSupervisionDispatchDo> {
 
+    /**
+     * 重新报验
+     *
+     * 清空监理用户信息
+     * 更新派单状态
+     *
+     * @param id
+     */
+    void reInspection(String id);
 }

+ 16 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxSupervisionCustomUserManageService.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 监理客户账号管理表 服务类
+ * </p>
+ *
+ * @author fpy
+ * @since 2024-01-11
+ */
+public interface ZhcxSupervisionCustomUserManageService extends IService<ZhcxSupervisionCustomUserManageDo> {
+
+}

+ 25 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxApiServiceImpl.java

@@ -0,0 +1,25 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bscommon.sys.dao.ZhcxApiDao;
+import com.rongwei.bscommon.sys.service.ZhcxApiService;
+import com.rongwei.bsentity.vo.ZhcxOutsideInspectionVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhuang
+ */
+@Service
+public class ZhcxApiServiceImpl implements ZhcxApiService {
+
+    @Autowired
+    private ZhcxApiDao zhcxApiDao;
+
+    @Override
+    public List<ZhcxOutsideInspectionVo> getOutsideInspectionList(Map<String, Object> map) {
+        return zhcxApiDao.getOutsideInspectionList(map);
+    }
+}

+ 23 - 2
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxItpTemplateServiceImpl.java

@@ -71,6 +71,10 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
                         if(StringUtils.isNotBlank(copyNodesDo.getPath())){
                             pids.addAll(Arrays.asList(copyNodesDo.getPath().split(",")));
                         }
+                        // 获取小构件关联的大构件 jnp add
+                        if(StringUtils.isNotBlank(copyNodesDo.getPnodeid())){
+                            pids.add(copyNodesDo.getPnodeid());
+                        }
                         // 获取所有子节点
                         for (ZhcxItpTemplateNodesDo tempNodesDo : tempNodesDos) {
                             if(StringUtils.isNotBlank(tempNodesDo.getPath())){
@@ -83,6 +87,21 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
                     if(pids != null && pids.size()>0){
                         List<ZhcxItpTemplateNodesDo> pidNodesDos = zhcxItpTemplateNodesService.list(
                                 new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getId,pids));
+                        // 补充获取没选中漏掉的大构件 jnp add
+                        List<String> bigpids = new ArrayList<>();
+                        for (ZhcxItpTemplateNodesDo pidNodesDo : pidNodesDos) {
+                            if (StringUtils.isNotBlank(pidNodesDo.getPnodeid())) {
+                                bigpids.add(pidNodesDo.getPnodeid());
+                            }
+                        }
+                        if(bigpids != null && bigpids.size()>0) {
+                            List<ZhcxItpTemplateNodesDo> bigpidNodesDos = zhcxItpTemplateNodesService.list(
+                                    new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getId,bigpids));
+                            if(bigpidNodesDos != null){
+                                allCopyNodes.addAll(bigpidNodesDos);
+                            }
+                        }
+                        //补充获取没选中的大构件end jnp add
                         if(pidNodesDos != null){
                             allCopyNodes.addAll(pidNodesDos);
                         }
@@ -94,7 +113,8 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
                     for (ZhcxItpTemplateNodesDo copyNodesDo : allCopyNodes) {
                         String newId = SecurityUtil.getUUID();
                         oldNewId.put(copyNodesDo.getId(),newId);
-                        // 设置新的ID
+                        // 先设置引用节点为原节点ID,再设置新的ID
+                        copyNodesDo.setRefnodeid(copyNodesDo.getId());
                         copyNodesDo.setId(newId);
                         toCopySaveNodes.add(copyNodesDo);
                     }
@@ -145,7 +165,8 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
                         else{
                             String newId = SecurityUtil.getUUID();
                             oldNewId.put(copyNodesDo.getId(),newId);
-                            // 设置新的ID
+                            // 先设置引用节点为原节点ID,再设置新的ID
+                            copyNodesDo.setRefnodeid(copyNodesDo.getId());
                             copyNodesDo.setId(newId);
                             toCopySaveNodes.add(copyNodesDo);
                         }

+ 371 - 103
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxOutsideInspectionItpServiceImpl.java

@@ -2,20 +2,28 @@ package com.rongwei.bscommon.sys.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bscommon.sys.utils.ZhcxCommon;
 import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpDo;
 import com.rongwei.bscommon.sys.dao.ZhcxOutsideInspectionItpDao;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpSupervisionDispatchDo;
+import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
 import com.rongwei.bsentity.vo.OperOutsideInspectionVo;
+import com.rongwei.bsentity.vo.SupervisionVo;
 import com.rongwei.commonservice.serial.service.SysSerialNumberService;
-import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import com.rongwei.rwadmincommon.system.domain.SysRoleDo;
+import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommon.vo.generalsql.MasterSlaveUpdateVo;
 import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
-import lombok.extern.java.Log;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -30,7 +38,7 @@ import java.util.*;
  * @since 2023-12-26
  */
 @Service
-@Log
+@Slf4j
 public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutsideInspectionItpDao, ZhcxOutsideInspectionItpDo> implements ZhcxOutsideInspectionItpService {
 
     @Autowired
@@ -51,6 +59,15 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
     @Autowired
     private ZhcxCommon zhcxCommon;
 
+    @Autowired
+    private ZhcxOutsideInspectionItpDao dao;
+
+    @Autowired
+    private SysGeneralCRUDService sysGeneralCRUDService;
+
+    @Autowired
+    private ZhcxSupervisionCustomUserManageService zhcxSupervisionCustomUserManageService;
+
     /**
      * 拆单
      *
@@ -87,17 +104,11 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
         for(int m = 0, n = structurNames.length; m < n; m++) {
             for(String inspectionContent : inspectionContents) {
                 count++;
-                SysSerialVo sysSerialVo = new SysSerialVo();
-                sysSerialVo.setRuleTemplateStr("W@{date:yyyyMMdd}@{serialNumber:#0000}");
-                sysSerialVo.setModulecode("ZHCX_OUTSIDE_INSPECTION_ITP_CODE");
-                sysSerialVo.setIfautomaticreset("y");
-                sysSerialVo.setResetrule("date:yyyyMMdd");
-                sysSerialVo.setInitValue(0L);
-                String code = serialNumberService.getCodeByTemplate(sysSerialVo);
+
                 if(count == 0) { //第一个做修改
                     itpDo.setStructurename(structurNames[m]);
                     itpDo.setInspectioncontent(inspectionContent);
-                    itpDo.setInspectioncode(code);
+                    itpDo.setInspectioncode(genCode());
 //                    itpDo.setStructureid(structureIds[m]);
                     updateList.add(itpDo);
                     continue;
@@ -108,7 +119,7 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
                 entity.setStructurename(structurNames[m]);
                 entity.setInspectioncontent(inspectionContent);
                 entity.setId(SecurityUtil.getUUID());
-                entity.setInspectioncode(code);
+                entity.setInspectioncode(genCode());
 //                entity.setStructureid(structureIds[m]);
                 insertList.add(entity);
                 newItpIdList.add(entity.getId());
@@ -116,115 +127,372 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
             }
         }
 
-        //钢结构
-        if("10".equals(itpDo.getInspectiontype())) {
-            itpNdtResultService.copyByItpId(id, newItpIdList);
-        }
-        String[] array = {"10", "20", "30"};
-        List<String> qcTypeList = Arrays.asList(array);
-        if(qcTypeList.contains(itpDo.getInspectiontype())) {
-            qcItemResultService.copyByItpId(id, newItpIdList);
-        }
+        insertChildren(itpDo, newItpIdList);
 
         updateBatchById(updateList);
         saveBatch(insertList);
     }
 
     @Override
-    public String OperInspectionStatus(OperOutsideInspectionVo vo) {
+    public R operInspectionStatus(List<OperOutsideInspectionVo> vo) {
         /* 10: 取消 20: 拒收 30: 派单 40: 转派 50: 接收 60: 有条件接收 */
-        String operType = vo.getOperType();
-        log.info("执行OperInspectionStatus函数的"+operType+"操作, itpId="+vo.getItpId());
-        log.info("10: 取消 20: 拒收 30: 派单 40: 转派 50: 接收 60: 有条件接收");
-        ZhcxOutsideInspectionItpDo inspectionItpDo = getById(vo.getItpId());
-        String inspectionStatus = inspectionItpDo.getInspectionstatus();
-        String dispatchId = vo.getDispatchId();
-        ZhcxOutsideInspectionItpSupervisionDispatchDo dispatchDo = new ZhcxOutsideInspectionItpSupervisionDispatchDo();
-
+//        String operType = vo.getOperType();
+//        List<String> itpIds = vo.getItpIds();
+//        List<String> dispatchIds = vo.getDispatchIds();
+        boolean hasDispatch ;
+        boolean hasUpdate ;
+        boolean hasQcRole = false ;
+        boolean hasZgRole = false ;
+        boolean hasJjyRole = false ;
+        StringBuilder sb = new StringBuilder();
+        List<ZhcxOutsideInspectionItpSupervisionDispatchDo> saveDispatchDos = new ArrayList<>();
+        List<ZhcxOutsideInspectionItpSupervisionDispatchDo> updateDispatchDos = new ArrayList<>();
+        List<ZhcxOutsideInspectionItpDo> inspectionItpDos = new ArrayList<>();
         SysUserVo user = zhcxCommon.getCurrentUser();
         log.info("当前登录用户ID"+user.getId());
-        boolean hasDispatch = false;
-        if (dispatchId == null) {
-            log.info("没有Dispatch");
-            dispatchDo.setId(SecurityUtil.getUUID());
-            dispatchDo.setCreateuserid(user.getId());
-            dispatchDo.setCreatedate(new Date());
-            dispatchDo.setCreateusername(user.getName());
-            dispatchDo.setItpid(vo.getItpId());
-        } else {
-            log.info("有Dispatch,有dispatchId="+dispatchId);
-            dispatchDo = dispatchService.getById(dispatchId);
-            hasDispatch = true;
+        List<SysRoleDo> roleDos = user.getRoleDos();
+        for (int x = 0; x < roleDos.size(); x++) {
+            if("role065".equals(roleDos.get(x).getCode())){
+                hasQcRole = true;
+            }else if("role061".equals(roleDos.get(x).getCode())){
+                hasZgRole = true;
+            }else if("role062".equals(roleDos.get(x).getCode())){
+                hasJjyRole = true;
+            }
+        }
+        for(int i =0;i<vo.size();i++){
+            String operType = vo.get(i).getOperType();
+            String itpId = vo.get(i).getItpId();
+            String dispatchId = vo.get(i).getDispatchId();
+            hasDispatch = false;
+            hasUpdate = false;
+            log.info("执行OperInspectionStatus函数的"+operType+"操作, itpId="+itpId);
+            log.info("10: 取消 20: 拒收 30: 派单 40: 转派 50: 接收 60: 有条件接收 70:修改检验开始结束时间");
+            ZhcxOutsideInspectionItpDo inspectionItpDo = getById(itpId);
+            String inspectionStatus = inspectionItpDo.getInspectionstatus();
+            String inspectioncode = inspectionItpDo.getInspectioncode();
+            LambdaQueryWrapper<ZhcxOutsideInspectionItpSupervisionDispatchDo> wrapper = Wrappers.lambdaQuery();
+            wrapper.eq(ZhcxOutsideInspectionItpSupervisionDispatchDo::getItpid,itpId);
+            ZhcxOutsideInspectionItpSupervisionDispatchDo dispatchDo = dispatchService.getOne(wrapper);
+            //ZhcxOutsideInspectionItpSupervisionDispatchDo dispatchDo = new ZhcxOutsideInspectionItpSupervisionDispatchDo();
+//            if (dispatchId != null) {
+//                dispatchDo = dispatchService.getById(dispatchId);
+//            } else {
+//                dispatchDo.setId(SecurityUtil.getUUID());
+//            }
+
+            //10未派单 20已派单
+            if (dispatchDo != null && "20".equals(dispatchDo.getDispatchstatus())) {
+                log.info("有Dispatch,有dispatchId="+dispatchId);
+                hasDispatch = true;
+                hasUpdate = true;
+            }else if(dispatchDo != null && !"20".equals(dispatchDo.getDispatchstatus())){
+                hasUpdate = true;
+            } else {
+                log.info("没有Dispatch");
+                dispatchDo = new ZhcxOutsideInspectionItpSupervisionDispatchDo();
+                dispatchDo.setId(SecurityUtil.getUUID());
+                dispatchDo.setCreateuserid(user.getId());
+                dispatchDo.setCreatedate(new Date());
+                dispatchDo.setCreateusername(user.getName());
+                dispatchDo.setItpid(itpId);
+                dispatchDo.setDispatchstatus("10");
+                dispatchDo.setDeleted("0");
+            }
+
+            if (StringUtils.isNotEmpty(inspectionStatus) && inspectionStatus.equals("40")) {
+                //return "该报验单已取消";
+
+                sb.append("单据号:"+inspectioncode+"已取消<br>");
+                continue;
+            }
+            /* 取消 */
+            if ("10".equals(operType)) {
+                //监理检验员在执行任务页面只能操作自己的数据 PageType--页面入口 task -- 执行任务页面
+                if("task".equals(vo.get(i).getPageType()) && !user.getId().equals(dispatchDo.getSupervisionuserid())){
+                    sb.append("单据号:"+inspectioncode+"已被改派,不能取消,请刷新数据查看<br>");
+                    continue;
+                }
+                /* 10: QC 20: 监理 */
+                /* 10: 派单前监理取消 20: 派单后监理取消 30: 派单前QC取消 40: 派单后QC取消 */
+                String cancelSource = vo.get(i).getSource();
+                switch (cancelSource) {
+                    case "10":
+                        dispatchDo.setCanceltype(hasDispatch ? "40" : "30");
+                        break;
+                    case "20":
+                        dispatchDo.setCanceltype(hasDispatch ? "20" : "10");
+                        break;
+                }
+                dispatchDo.setRefusereason(vo.get(i).getReason());
+                dispatchDo.setDispatchstatus("30");
+                inspectionItpDo.setInspectionstatus("40");
+            } else if ("20".equals(operType)) {
+                if("task".equals(vo.get(i).getPageType()) && !user.getId().equals(dispatchDo.getSupervisionuserid())){
+                    sb.append("单据号:"+inspectioncode+"已被改派,不能拒收,请刷新数据查看<br>");
+                    continue;
+                }
+                /* 检验员才有拒收 */
+                dispatchDo.setInspectionconclusion("20");
+                dispatchDo.setRefusereason(vo.get(i).getReason());
+                dispatchDo.setLastrefusereason(vo.get(i).getReason());
+                inspectionItpDo.setInspectionstatus("30");
+            } else if (Arrays.asList("30", "40").contains(operType)) {
+                //监理检验员只能操作自己的数据
+//                if(!user.getId().equals(dispatchDo.getSupervisionuserid())){
+//                    sb.append("单据号:"+inspectioncode+"已被改派,不能取消,请刷新数据查看<br>");
+//                    continue;
+//                }
+                if ("30".equals(operType) && hasDispatch) {
+                    //return "该报验单已派单";
+                    sb.append("单据号:"+inspectioncode+"已派单<br>");
+                    continue;
+                }
+                //SysUserDo toUser = userService.getById(vo.get(i).getToUser());
+                SupervisionVo supervisionVo = vo.get(i).getSupervisionVo();
+                dispatchDo.setSupervisionid(supervisionVo.getId());
+                dispatchDo.setSupervision(supervisionVo.getName());
+                dispatchDo.setSupervisionphone(supervisionVo.getPhone());
+                dispatchDo.setSupervisionaccount(supervisionVo.getAccount());
+                dispatchDo.setSupervisionuserid(supervisionVo.getSupervisionuserid());
+                /* 已派单 */
+                dispatchDo.setDispatchstatus("20");
+            } else {
+                /* 接收/有条件接收 */
+                //不是本人的数据无法接收 Inspectionstatus=40代表取消
+                if("task".equals(vo.get(i).getPageType()) && !user.getId().equals(dispatchDo.getSupervisionuserid())){
+                    sb.append("单据号:"+inspectioncode+"已被改派,不能接收,请刷新数据查看<br>");
+                    continue;
+                }
+                if("40".equals(inspectionItpDo.getInspectionstatus())){
+                    sb.append("单据号:"+inspectioncode+"已被取消,请刷新数据查看<br>");
+                    continue;
+                }
+                if (Integer.valueOf(inspectionItpDo.getInspectionstatus()) == 20) {
+                    dispatchDo.setInspectionconclusion(operType.equals("50") ? "10" : "30");
+                    dispatchDo.setRefusereason(vo.get(i).getReason());
+                    inspectionItpDo.setInspectionstatus("30");
+                }else{
+                    sb.append("单据号:"+inspectioncode+"已被接收,请刷新数据查看<br>");
+                    continue;
+                }
+            }
+            /* 检验员拒收和接收时会传回检验开始/结束时间和文件 */
+            if (Arrays.asList("20", "50", "60").contains(operType)) {
+                dispatchDo.setCheckstarttime(vo.get(i).getStartDate());
+                dispatchDo.setCheckendtime(vo.get(i).getEndDate());
+                dispatchDo.setSfiles(vo.get(i).getFiles());
+                dispatchDo.setCanvas(vo.get(i).getCanvas());
+                dispatchDo.setSignature(vo.get(i).getSignature());
+            }
+            /* 当前操作人 */
+            if (user != null && user.getId() != null) {
+                inspectionItpDo.setModifydate(new Date());
+                inspectionItpDo.setModifyuserid(user.getId());
+                inspectionItpDo.setModifyusername(user.getName());
+                dispatchDo.setModifydate(new Date());
+                dispatchDo.setModifyuserid(user.getId());
+                dispatchDo.setModifyusername(user.getName());
+            }
+            dispatchDo.setDeleted("0");
+            inspectionItpDo.setDeleted("0");
+            if(sb.length() > 0){
+                continue;
+            }else{
+                if (hasUpdate) {
+                    updateDispatchDos.add(dispatchDo);
+                }else{
+                    saveDispatchDos.add(dispatchDo);
+                }
+                inspectionItpDos.add(inspectionItpDo);
+            }
+        }
+        if(sb.length()> 0){
+            return R.error(sb.toString());
+        }else{
+            if(saveDispatchDos.size() > 0){
+                dispatchService.saveBatch(saveDispatchDos);
+            }
+            if(updateDispatchDos.size() > 0){
+                dispatchService.updateBatchById(updateDispatchDos);
+            }
+            updateBatchById(inspectionItpDos);
+        }
+//        if (hasDispatch) {
+//            dispatchService.updateBatchById(dispatchDos);
+//        } else {
+//            dispatchService.saveBatch(dispatchDos);
+//        }
+
+        return R.ok();
+    }
+
+    /**
+     * 再次报验
+     * 1、复制一份作为历史记录
+     * 2、保存最新数据
+     * 3、更新报验次数
+     * 4、清空派单数据
+     *
+     * @param id
+     */
+    @Override
+    public void reInspection(String id, MasterSlaveUpdateVo masterSlaveUpdate) {
+        ZhcxOutsideInspectionItpDo itpDo = getById(id);
+        if("99".equals(itpDo.getLifecycle())) {
+            throw new CustomException("该报验单不能再次报验");
         }
 
-        if (StringUtils.isNotEmpty(inspectionStatus) && inspectionStatus.equals("40")) {
-            return "该报验单已取消";
+        LambdaQueryWrapper<ZhcxOutsideInspectionItpSupervisionDispatchDo> dispatchLambdaQueryWrapper = Wrappers.lambdaQuery();
+        dispatchLambdaQueryWrapper.eq(ZhcxOutsideInspectionItpSupervisionDispatchDo::getItpid, id);
+        ZhcxOutsideInspectionItpSupervisionDispatchDo dispatchDo = dispatchService.getOne(dispatchLambdaQueryWrapper);
+
+        //保存历史
+        saveHistory(itpDo, dispatchDo);
+
+        //新的报验单号
+        String newCode = genNewCode(itpDo, dispatchDo);
+        masterSlaveUpdate.getMasterUpdate().getUpdatecolumns().put("INSPECTIONCODE", newCode);
+        masterSlaveUpdate.getMasterUpdate().getUpdatecolumns().put("INSPECTIONSTATUS", "20");
+
+        //报验次数需要累计
+        masterSlaveUpdate.getMasterUpdate().getUpdatecolumns().remove("INSPECTIONCOUNT");
+        try {
+            sysGeneralCRUDService.generalMsUpdate(masterSlaveUpdate);
+        } catch (Exception e) {
+            log.error("保存失败: {}", e);
         }
-        /* 取消 */
-        if ("10".equals(operType)) {
-            /* 10: QC 20: 监理主管 30: 监理检验员 */
-            /* 10: 派单前监理取消 20: 派单后监理取消 30: 派单前QC取消 40: 派单后QC取消 */
-            String cancelSource = vo.getSource();
-            switch (cancelSource) {
-                case "10":
-                    dispatchDo.setCanceltype(hasDispatch ? "40" : "30");
-                    break;
-                case "20":
-                    dispatchDo.setCanceltype(hasDispatch ? "20" : "10");
-                    break;
-                default:
-                    dispatchDo.setCanceltype("20");
-                    break;
+
+        //拒收,报验次数加+1
+        Map<String, String> map = new HashMap<>();
+        map.put("id", id);
+        dao.updateInspectionCount(map);
+
+        //更新
+        dispatchService.reInspection(dispatchDo.getId());
+    }
+
+    /**
+     * 保存
+     *
+     * @param itpDo
+     * @param dispatchDo
+     */
+    private void saveHistory(ZhcxOutsideInspectionItpDo itpDo, ZhcxOutsideInspectionItpSupervisionDispatchDo dispatchDo) {
+
+        //保存报验单
+        ZhcxOutsideInspectionItpDo entity = new ZhcxOutsideInspectionItpDo();
+        BeanUtil.copyProperties(itpDo, entity);
+        //新的报验单
+        entity.setId(SecurityUtil.getUUID());
+        entity.setLifecycle("99");
+        save(entity);
+
+        //保存指派单
+        ZhcxOutsideInspectionItpSupervisionDispatchDo dispatchEntity = new ZhcxOutsideInspectionItpSupervisionDispatchDo();
+        BeanUtil.copyProperties(dispatchDo, dispatchEntity);
+        dispatchEntity.setId(SecurityUtil.getUUID());
+        dispatchEntity.setItpid(entity.getId());
+        dispatchService.save(dispatchEntity);
+
+        //报验单明细
+        List<String> newItpIdList = new ArrayList<>();
+        newItpIdList.add(entity.getId());
+        insertChildren(itpDo, newItpIdList);
+    }
+
+    /**
+     * 生成新的单号
+     *
+     * @param itpDo
+     * @param dispatchDo
+     * @return
+     */
+    private String genNewCode(ZhcxOutsideInspectionItpDo itpDo, ZhcxOutsideInspectionItpSupervisionDispatchDo dispatchDo) {
+        List<String> inspectionCodes = new ArrayList<>(Arrays.asList(itpDo.getInspectioncode().split("-")));;
+
+        //报验状态:取消状态
+        if("30".equals(dispatchDo.getDispatchstatus())) {
+            if(inspectionCodes.size() == 1) {
+                inspectionCodes.add("C1");
+            } else {
+                boolean flag = false;
+                for(int m = 0, n = inspectionCodes.size(); m < n; m++) {
+                    if(inspectionCodes.get(m).startsWith("C")) {
+                        Integer c = Integer.valueOf(inspectionCodes.get(m).replace("C", ""));
+                        c += 1;
+                        inspectionCodes.set(m, "C" + c);
+                        flag = true;
+                        break;
+                    }
+                }
+
+                if(!flag) {
+                    inspectionCodes.add("C1");
+                }
             }
-            dispatchDo.setRefusereason(vo.getReason());
-            dispatchDo.setDispatchstatus("30");
-            inspectionItpDo.setInspectionstatus("40");
-        } else if ("20".equals(operType)) {
-            /* 检验员才有拒收 */
-            dispatchDo.setInspectionconclusion("20");
-            dispatchDo.setRefusereason(vo.getReason());
-            inspectionItpDo.setInspectionstatus("30");
-        } else if (Arrays.asList("30", "40").contains(operType)) {
-            if ("30".equals(operType) && hasDispatch) {
-                return "该报验单已派单";
+        }
+
+        //报验结论:拒收状态
+        if("20".equals(dispatchDo.getInspectionconclusion())) {
+            if(inspectionCodes.size() == 1) {
+                inspectionCodes.add("R1");
+            } else {
+                boolean flag = false;
+                for(int m = 0, n = inspectionCodes.size(); m < n; m++) {
+                    if(inspectionCodes.get(m).startsWith("R")) {
+                        Integer c = Integer.valueOf(inspectionCodes.get(m).replace("R", ""));
+                        c += 1;
+                        inspectionCodes.set(m, "R" + c);
+                        flag = true;
+                        break;
+                    }
+                }
+
+                if(!flag) {
+                    inspectionCodes.add("R1");
+                }
             }
-            SysUserDo toUser = userService.getById(vo.getToUser());
-            dispatchDo.setSupervisionid(toUser.getId());
-            dispatchDo.setSupervision(toUser.getName());
-            dispatchDo.setSupervisionphone(toUser.getMobile());
-            dispatchDo.setSupervisionaccount(toUser.getAccount());
-            /* 已派单 */
-            dispatchDo.setDispatchstatus("20");
-        } else {
-            /* 接收/有条件接收 */
-            dispatchDo.setInspectionconclusion(operType.equals("50") ? "10" : "30");
-            dispatchDo.setRemark(vo.getReason());
-            inspectionItpDo.setInspectionstatus("30");
         }
-        /* 检验员拒收和接收时会传回检验开始/结束时间和文件 */
-        if (Arrays.asList("20", "50", "60").contains(operType)) {
-            dispatchDo.setCheckstarttime(vo.getStartDate());
-            dispatchDo.setCheckendtime(vo.getEndDate());
-            dispatchDo.setSfiles(vo.getFiles());
+
+        return StringUtils.join(inspectionCodes, "-");
+    }
+
+    /**
+     * 生成单号
+     *
+     * @return
+     */
+    private String genCode() {
+        SysSerialVo sysSerialVo = new SysSerialVo();
+        sysSerialVo.setRuleTemplateStr("W@{date:yyyyMMdd}@{serialNumber:#0000}");
+        sysSerialVo.setModulecode("ZHCX_OUTSIDE_INSPECTION_ITP_CODE");
+        sysSerialVo.setIfautomaticreset("y");
+        sysSerialVo.setResetrule("date:yyyyMMdd");
+        sysSerialVo.setInitValue(0L);
+        return serialNumberService.getCodeByTemplate(sysSerialVo);
+    }
+
+    /**
+     * 保存子表
+     *
+     * @param itpDo
+     * @param newItpIdList
+     */
+    private void insertChildren(ZhcxOutsideInspectionItpDo itpDo, List<String> newItpIdList) {
+        if(ObjectUtil.isEmpty(newItpIdList)) {
+            return ;
         }
-        /* 当前操作人 */
-        if (user != null && user.getId() != null) {
-            inspectionItpDo.setModifydate(new Date());
-            inspectionItpDo.setModifyuserid(user.getId());
-            inspectionItpDo.setModifyusername(user.getName());
-            dispatchDo.setModifydate(new Date());
-            dispatchDo.setModifyuserid(user.getId());
-            dispatchDo.setModifyusername(user.getName());
+
+        //钢结构
+        if("10".equals(itpDo.getInspectiontype())) {
+            itpNdtResultService.copyByItpId(itpDo.getId(), newItpIdList);
         }
-        dispatchDo.setDeleted("0");
-        inspectionItpDo.setDeleted("0");
-        if (hasDispatch) {
-            dispatchService.updateById(dispatchDo);
-        } else {
-            dispatchService.save(dispatchDo);
+        String[] array = {"10", "20", "30"};
+        List<String> qcTypeList = Arrays.asList(array);
+        if(qcTypeList.contains(itpDo.getInspectiontype())) {
+            qcItemResultService.copyByItpId(itpDo.getId(), newItpIdList);
         }
-        updateById(inspectionItpDo);
-        return "";
     }
 
 }

+ 21 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxOutsideInspectionItpSupervisionDispatchServiceImpl.java

@@ -4,8 +4,12 @@ import com.rongwei.bsentity.domain.ZhcxOutsideInspectionItpSupervisionDispatchDo
 import com.rongwei.bscommon.sys.dao.ZhcxOutsideInspectionItpSupervisionDispatchDao;
 import com.rongwei.bscommon.sys.service.ZhcxOutsideInspectionItpSupervisionDispatchService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * <p>
  * 外部报验-ITP报验-监理派单 服务实现类
@@ -17,4 +21,21 @@ import org.springframework.stereotype.Service;
 @Service
 public class ZhcxOutsideInspectionItpSupervisionDispatchServiceImpl extends ServiceImpl<ZhcxOutsideInspectionItpSupervisionDispatchDao, ZhcxOutsideInspectionItpSupervisionDispatchDo> implements ZhcxOutsideInspectionItpSupervisionDispatchService {
 
+    @Autowired
+    private ZhcxOutsideInspectionItpSupervisionDispatchDao dao;
+
+    /**
+     * 重新报验
+     *
+     * 清空监理用户信息
+     * 更新派单状态
+     *
+     * @param id
+     */
+    @Override
+    public void reInspection(String id) {
+        ZhcxOutsideInspectionItpSupervisionDispatchDo entity = new ZhcxOutsideInspectionItpSupervisionDispatchDo();
+        entity.setId(id);
+        dao.reInspection(entity);
+    }
 }

+ 20 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxSupervisionCustomUserManageServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
+import com.rongwei.bscommon.sys.dao.ZhcxSupervisionCustomUserManageDao;
+import com.rongwei.bscommon.sys.service.ZhcxSupervisionCustomUserManageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 监理客户账号管理表 服务实现类
+ * </p>
+ *
+ * @author fpy
+ * @since 2024-01-11
+ */
+@Service
+public class ZhcxSupervisionCustomUserManageServiceImpl extends ServiceImpl<ZhcxSupervisionCustomUserManageDao, ZhcxSupervisionCustomUserManageDo> implements ZhcxSupervisionCustomUserManageService {
+
+}

+ 36 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/utils/LockUtils.java

@@ -0,0 +1,36 @@
+package com.rongwei.bscommon.sys.utils;
+
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author shangmi
+ */
+@Component
+public class LockUtils {
+
+    private ConcurrentHashMap map = new ConcurrentHashMap();
+    /** * 行锁的加锁方法 */
+    public synchronized void lock(String type,String id) {
+        System.out.println("当前线程 " + Thread.currentThread().getName());
+        try {
+            while(map.containsKey(type+id)){
+            wait();
+            }
+            map.put(type+id,"");
+            System.out.println("线程 " + Thread.currentThread().getName() + "拿到锁 , 锁定资源" + id);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+    }
+    /** * 行锁的解锁方法 */
+    public synchronized void unlock(String type,String id){
+        while(map.containsKey(type+id)){
+            map.remove(type+id);
+            System.out.println("线程 " + Thread.currentThread().getName() + "释放锁 , 释放资源" + id);
+            notifyAll();
+        }
+    }
+}

+ 31 - 0
business-common/src/main/resources/mybatis/business/zhcxApiDao.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.rongwei.bscommon.sys.dao.ZhcxApiDao">
+
+    <select id="getOutsideInspectionList" resultType="com.rongwei.bsentity.vo.ZhcxOutsideInspectionVo">
+        SELECT
+            i.*,
+            CONCAT( SUBSTRING( i.PROJECTCODE, - 4 ), '-', i.MACHINENO, '-', i.PROJECTNAME ) AS EX1,
+            sd.ITPID,
+            sd.INSPECTIONCONCLUSION,
+            sd.SUPERVISIONID,
+            sd.SUPERVISION,
+            sd.SUPERVISIONPHONE,
+            sd.CHECKSTARTTIME,
+            sd.CHECKENDTIME,
+            sd.CANCELTYPE,
+            sd.CANCELREASON,
+            sd.ID AS DISPATCHID,
+            sd.SFILES,
+            sd.REFUSEREASON,
+            IFNULL( sd.DISPATCHSTATUS, '10' ) AS DISPATCHSTATUS
+        FROM
+            ZHCX_OUTSIDE_INSPECTION_ITP i
+            LEFT JOIN ZHCX_OUTSIDE_INSPECTION_ITP_SUPERVISION_DISPATCH sd ON i.ID = sd.ITPID
+        <where>
+            i.DELETED = '0'
+            <if test="projectcode != null and projectcode != ''"> AND i.PROJECTCODE = #{projectcode} </if>
+        </where>
+    </select>
+</mapper>

+ 36 - 0
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxItpProjectNodesDo.java

@@ -194,4 +194,40 @@ public class ZhcxItpProjectNodesDo extends BaseDo {
      */
     @TableField("INSPECTIONSTATUS")
     private String inspectionstatus;
+
+    /**
+     * 外协生产
+     */
+    @TableField("ISSUPP")
+    private String issupp;
+
+    /**
+     * 核心检验指标库ID
+     */
+    @TableField("CHECKTMPID")
+    private String checktmpid;
+
+    /**
+     * 报验角色
+     */
+    @TableField("CHECKROLE")
+    private String checkrole;
+
+    /**
+     * 报验角色ID
+     */
+    @TableField("CHECKROLEID")
+    private String checkroleid;
+
+    /**
+     * 组织机构ID
+     */
+    @TableField("ORGID")
+    private String orgid;
+
+    /**
+     * 组织机构名称
+     */
+    @TableField("ORGNAME")
+    private String orgname;
 }

+ 47 - 0
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxItpTemplateNodesDo.java

@@ -162,5 +162,52 @@ public class ZhcxItpTemplateNodesDo extends BaseDo {
     @TableField("INSPECTIONTYPE")
     private String inspectiontype;
 
+    /**
+     * 构件形式
+     */
+    @TableField("TYPE1")
+    private String type1;
+
+    /**
+     * 报验点形式
+     */
+    @TableField("TYPE2")
+    private String type2;
+
+    /**
+     * 外协生产
+     */
+    @TableField("ISSUPP")
+    private String issupp;
+
+    /**
+     * 核心检验指标库ID
+     */
+    @TableField("CHECKTMPID")
+    private String checktmpid;
+
+    /**
+     * 报验角色
+     */
+    @TableField("CHECKROLE")
+    private String checkrole;
+
+    /**
+     * 报验角色ID
+     */
+    @TableField("CHECKROLEID")
+    private String checkroleid;
+
+    /**
+     * 组织机构ID
+     */
+    @TableField("ORGID")
+    private String orgid;
+
+    /**
+     * 组织机构名称
+     */
+    @TableField("ORGNAME")
+    private String orgname;
 
 }

+ 63 - 22
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxOutsideInspectionItpDo.java

@@ -4,7 +4,6 @@ import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.rongwei.rwcommon.base.BaseDo;
 import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -16,12 +15,12 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author wm
- * @since 2023-12-26
+ * @since 2024-01-14
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 @Accessors(chain = true)
-@TableName("zhcx_outside_inspection_itp")
+@TableName("ZHCX_OUTSIDE_INSPECTION_ITP")
 public class ZhcxOutsideInspectionItpDo extends BaseDo {
 
     private static final long serialVersionUID=1L;
@@ -29,7 +28,7 @@ public class ZhcxOutsideInspectionItpDo extends BaseDo {
     /**
      * 主键
      */
-    @TableId("ID")
+    @TableField("ID")
     private String id;
     /**
      * 租户ID
@@ -76,11 +75,6 @@ public class ZhcxOutsideInspectionItpDo extends BaseDo {
      */
     @TableField("CUSTOMERREQUIREID")
     private String customerrequireid;
-    /**
-     * 项目机号id
-     */
-    @TableField("PROJECTMACHINEID")
-    private String projectmachineid;
     /**
      * 机号
      */
@@ -91,11 +85,6 @@ public class ZhcxOutsideInspectionItpDo extends BaseDo {
      */
     @TableField("COMPANYSHORTNAME")
     private String companyshortname;
-    /**
-     * 构建Id
-     */
-    @TableField("STRUCTUREID")
-    private String structureid;
     /**
      * 构件名称
      */
@@ -106,11 +95,6 @@ public class ZhcxOutsideInspectionItpDo extends BaseDo {
      */
     @TableField("STRUCTUREDRAWING")
     private String structuredrawing;
-    /**
-     * 报验内容id
-     */
-    @TableField("INSPECTIONCONTENTID")
-    private String inspectioncontentid;
     /**
      * 报验内容
      */
@@ -221,19 +205,76 @@ public class ZhcxOutsideInspectionItpDo extends BaseDo {
      */
     @TableField("INSPECTIONSTATUS")
     private String inspectionstatus;
+    /**
+     * 附件
+     */
+    @TableField("FILES")
+    private String files;
+    /**
+     * 项目机号id
+     */
+    @TableField("PROJECTMACHINEID")
+    private String projectmachineid;
     /**
      * 发起类型(itp、unitp)
      */
     @TableField("LAUNCHTYPE")
     private String launchtype;
     /**
-     * 附件
+     * 构建Id
      */
-    @TableField("FILES")
-    private String files;
+    @TableField("STRUCTUREID")
+    private String structureid;
+    /**
+     * 报验内容id
+     */
+    @TableField("INSPECTIONCONTENTID")
+    private String inspectioncontentid;
     /**
      * 检查地点补充
      */
     @TableField("INSPECTIONLOCATIONSUPPLEMENT")
     private String inspectionlocationsupplement;
+    /**
+     * 发起源(pc,mobile)
+     */
+    @TableField("LAUNCHSOURCE")
+    private String launchsource;
+    /**
+     * 源id
+     */
+    @TableField("SOURCEID")
+    private String sourceid;
+    /**
+     * 源编码
+     */
+    @TableField("SOURCECODE")
+    private String sourcecode;
+    /**
+     * 生命周期(默认进行中,作废)
+     */
+    @TableField("LIFECYCLE")
+    private String lifecycle;
+    /**
+     * 结构项目机号id
+     */
+    @TableField("STRUCTUREMACHINEID")
+    private String structuremachineid;
+    /**
+     * 结构机号
+     */
+    @TableField("STRUCTUREMACHINENO")
+    private String structuremachineno;
+    /**
+     * 自检员id
+     */
+    @TableField("SELFTESTERID")
+    private String selftesterid;
+    /**
+     * 报验完成时间
+     */
+    @TableField("INSPECTIONCOMPLATETIME")
+    private Date inspectioncomplatetime;
+
+
 }

+ 45 - 20
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxOutsideInspectionItpSupervisionDispatchDo.java

@@ -1,26 +1,26 @@
 package com.rongwei.bsentity.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.rongwei.rwcommon.base.BaseDo;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.util.Date;
+
 /**
  * <p>
  * 外部报验-ITP报验-监理派单
  * </p>
  *
  * @author wm
- * @since 2023-12-26
+ * @since 2024-01-14
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 @Accessors(chain = true)
-@TableName("zhcx_outside_inspection_itp_supervision_dispatch")
+@TableName("ZHCX_OUTSIDE_INSPECTION_ITP_SUPERVISION_DISPATCH")
 public class ZhcxOutsideInspectionItpSupervisionDispatchDo extends BaseDo {
 
     private static final long serialVersionUID=1L;
@@ -28,7 +28,7 @@ public class ZhcxOutsideInspectionItpSupervisionDispatchDo extends BaseDo {
     /**
      * 主键
      */
-    @TableId("ID")
+    @TableField("ID")
     private String id;
     /**
      * 租户ID
@@ -55,11 +55,6 @@ public class ZhcxOutsideInspectionItpSupervisionDispatchDo extends BaseDo {
      */
     @TableField("SUPERVISIONID")
     private String supervisionid;
-    /**
-     * 监理用户账号
-     */
-    @TableField("SUPERVISIONACCOUNT")
-    private String supervisionaccount;
     /**
      * 监理用户
      */
@@ -80,31 +75,61 @@ public class ZhcxOutsideInspectionItpSupervisionDispatchDo extends BaseDo {
      */
     @TableField("CHECKENDTIME")
     private Date checkendtime;
+    /**
+     * 取消类型
+     */
+    @TableField("CANCELTYPE")
+    private String canceltype;
+    /**
+     * 附件
+     */
+    @TableField("SFILES")
+    private String sfiles;
     /**
      * 派单状态
      */
     @TableField("DISPATCHSTATUS")
     private String dispatchstatus;
     /**
-     * 取消类型
+     * 监理用户账号
      */
-    @TableField("CANCELTYPE")
-    private String canceltype;
+    @TableField("SUPERVISIONACCOUNT")
+    private String supervisionaccount;
+    /**
+     * 检验员备注(拒收原因,取消原因)
+     */
+    @TableField("REFUSEREASON")
+    private String refusereason;
+    /**
+     * 监理用户userId
+     */
+    @TableField("SUPERVISIONUSERID")
+    private String supervisionuserid;
     /**
      * 取消原因
      */
     @TableField("CANCELREASON")
     private String cancelreason;
     /**
-     * 附件
+     * 上次检验员备注
      */
-    @TableField("SFILES")
-    private String sfiles;
+    @TableField("LASTREFUSEREASON")
+    private String lastrefusereason;
     /**
-     * 拒绝原因
+     * 监理用户备注
      */
-    @TableField("REFUSEREASON")
-    private String refusereason;
+    @TableField("JREMARK")
+    private String jremark;
+    /**
+     * 画布
+     */
+    @TableField("CANVAS")
+    private String canvas;
+    /**
+     * 签名
+     */
+    @TableField("SIGNATURE")
+    private String signature;
 
 
 }

+ 88 - 0
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxSupervisionCustomUserManageDo.java

@@ -0,0 +1,88 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 监理客户账号管理表
+ * </p>
+ *
+ * @author fpy
+ * @since 2024-01-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("ZHCX_SUPERVISION_CUSTOM_USER_MANAGE")
+public class ZhcxSupervisionCustomUserManageDo extends BaseDo {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableField("ID")
+    private String id;
+    /**
+     * 租户id
+     */
+    @TableField("TENANTID")
+    private String tenantid;
+    /**
+     * 扩展json格式配置
+     */
+    @TableField("ROPTION")
+    private String roption;
+    /**
+     * 姓名
+     */
+    @TableField("USER_NAME")
+    private String userName;
+    /**
+     * 账号
+     */
+    @TableField("ACCOUNT")
+    private String account;
+    /**
+     * 签名
+     */
+    @TableField("SIGNATURE")
+    private String signature;
+    /**
+     * 手机号
+     */
+    @TableField("PHONE")
+    private String phone;
+    /**
+     * 邮箱
+     */
+    @TableField("EMAIL")
+    private String email;
+    /**
+     * 角色
+     */
+    @TableField("ROLE")
+    private String role;
+    /**
+     * 账号状态
+     */
+    @TableField("STATUS")
+    private String status;
+    /**
+     * 父id
+     */
+    @TableField("PID")
+    private String pid;
+    /**
+     * 用户表id
+     */
+    @TableField("USERID")
+    private String userid;
+
+
+}

+ 10 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/ReInspectionRequest.java

@@ -0,0 +1,10 @@
+package com.rongwei.bsentity.dto;
+
+import com.rongwei.rwcommon.vo.generalsql.MasterSlaveUpdateVo;
+import lombok.Data;
+
+@Data
+public class ReInspectionRequest {
+    private MasterSlaveUpdateVo masterSlaveUpdate;
+    private String id;
+}

+ 14 - 3
business-entity/src/main/java/com/rongwei/bsentity/vo/OperOutsideInspectionVo.java

@@ -39,9 +39,9 @@ public class OperOutsideInspectionVo {
     private String source;
 
     /**
-     * 派单/转派的用户ID
+     * 派单/转派的监理对象
      * */
-    private String toUser;
+    private SupervisionVo supervisionVo;
 
     /**
      * 开始时间
@@ -57,5 +57,16 @@ public class OperOutsideInspectionVo {
      * 附件
      */
     private String files;
-
+    /**
+     * 画布
+     */
+    private String canvas;
+    /**
+     * 签名
+     */
+    private String signature;
+    /**
+     * 页面类型
+     */
+    private String pageType;
 }

+ 28 - 0
business-entity/src/main/java/com/rongwei/bsentity/vo/SupervisionVo.java

@@ -0,0 +1,28 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+@Data
+public class SupervisionVo {
+    /**
+     * 监理用户表主键id
+     */
+    private String id;
+    /**
+     * 监理用户名称
+     */
+    private String name;
+    /**
+     * 监理用户手机号
+     */
+    private String phone;
+    /**
+     * 监理用户账号
+     */
+    private String account;
+
+    /**
+     * 建立用户userid(用户表id)
+     */
+    private String supervisionuserid;
+}

+ 74 - 0
business-entity/src/main/java/com/rongwei/bsentity/vo/ZhcxOutsideInspectionVo.java

@@ -0,0 +1,74 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class ZhcxOutsideInspectionVo {
+
+    private String id;
+    private String tenantid;
+    private String roption;
+    private String deleted;
+    private String remark;
+    private String createuserid;
+    private String createusername;
+    private Date createdate;
+    private String modifyuserid;
+    private String modifyusername;
+    private Date modifydate;
+    private String inspectioncode;
+    private String inspectiontype;
+    private String projectid;
+    private String projectcode;
+    private String projectname;
+    private String customermanageid;
+    private String customerrequireid;
+    private String machineno;
+    private String companyshortname;
+    private String structurename;
+    private String structuredrawing;
+    private String inspectioncontent;
+    private BigDecimal QTY;
+    private String inspectionlocationid;
+    private String inspectionlocation;
+    private Date reservationinspectiontime;
+    private String subcontractorid;
+    private String subcontractorunitid;
+    private String subcontractorname;
+    private String workshopid;
+    private String workshopname;
+    private String workshopmanagerid;
+    private String workshopmanagername;
+    private String selftester;
+    private Date handintime;
+    private String checkerid;
+    private String checkername;
+    private String checkerconclusion;
+    private String checkercontact;
+    private String pmid;
+    private String pmname;
+    private Long inspectioncount;
+    private String inspectionstatus;
+    private String files;
+    private String projectmachineid;
+    private String launchtype;
+    private String structureid;
+    private String inspectioncontentid;
+    private String inspectionlocationsupplement;
+    private String itpid;
+    private String inspectionconclusion;
+    private String supervisionid;
+    private String supervision;
+    private String SUPERVISIONPHONE;
+    private Date CHECKSTARTTIME;
+    private Date CHECKENDTIME;
+    private String CANCELTYPE;
+    private String CANCELREASON;
+    private String DISPATCHID;
+    private String SFILES;
+    private String REFUSEREASON;
+    private String DISPATCHSTATUS;
+}

+ 32 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxApiController.java

@@ -0,0 +1,32 @@
+package com.rongwei.bsserver.controller;
+
+import com.rongwei.bscommon.sys.service.ZhcxApiService;
+import com.rongwei.bsentity.vo.ZhcxOutsideInspectionVo;
+import com.rongwei.rwcommon.base.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhuang
+ */
+@RestController
+@RequestMapping("/zhcxApi")
+public class ZhcxApiController {
+
+    @Autowired
+    private ZhcxApiService zhcxApiService;
+
+    @RequestMapping("/getOutsideInspectionList")
+    public R getOutsideInspectionList(@RequestBody Map<String,Object> map){
+        if(!map.containsKey("projectcode")){
+            return R.error("projectcode参数必填");
+        }
+        List<ZhcxOutsideInspectionVo> outsideInspectionList = zhcxApiService.getOutsideInspectionList(map);
+        return R.ok(outsideInspectionList);
+    }
+}

+ 24 - 4
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxOperOutsideInspectionController.java

@@ -1,24 +1,44 @@
 package com.rongwei.bsserver.controller;
 
+
 import com.rongwei.bscommon.sys.service.ZhcxOutsideInspectionItpService;
+import com.rongwei.bscommon.sys.utils.LockUtils;
 import com.rongwei.bsentity.vo.OperOutsideInspectionVo;
 import com.rongwei.rwcommon.base.R;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Map;
+import java.util.List;
 
 @RestController
 @RequestMapping("/zhcxOperOutsideInspection")
+@Slf4j
 public class ZhcxOperOutsideInspectionController {
     @Autowired
     private ZhcxOutsideInspectionItpService inspectionService;
+    @Autowired
+    private LockUtils lockUtils;
 
     @RequestMapping("/OperInspectionStatus")
-    public R OperInspectionStatus(@RequestBody OperOutsideInspectionVo vo) {
-        String msg = inspectionService.OperInspectionStatus(vo);
-        return R.ok(msg);
+    public R OperInspectionStatus(@RequestBody List<OperOutsideInspectionVo> vo) {
+        try {
+            for(OperOutsideInspectionVo inspectionVo : vo){
+                String itpId = inspectionVo.getItpId();
+                lockUtils.lock("itpid",itpId);
+            }
+            R r = inspectionService.operInspectionStatus(vo);
+            return r;
+        } catch (Exception e) {
+            log.error("操作失败, {}", e);
+            return R.errorWithMsg("操作失败");
+        }finally {
+            for(OperOutsideInspectionVo inspectionVo : vo){
+                String itpId = inspectionVo.getItpId();
+                lockUtils.unlock("itpid",itpId);
+            }
+        }
     }
 }

+ 8 - 2
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxOutsideInspectionItpController.java

@@ -2,14 +2,14 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ZhcxOutsideInspectionItpService;
-import com.rongwei.bsentity.vo.CopyAddTemplateVo;
+import com.rongwei.bsentity.dto.ReInspectionRequest;
 import com.rongwei.rwcommon.base.R;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -32,5 +32,11 @@ public class ZhcxOutsideInspectionItpController {
         service.splitOrder(map.get("id"));
         return R.ok();
     }
+
+    @PostMapping("/reInspection")
+    public R reInspection(@RequestBody ReInspectionRequest res){
+        service.reInspection(res.getId(), res.getMasterSlaveUpdate());
+        return R.ok();
+    }
 }