From c0328edb2de39f27e47b7ad1eedf8f80b883335e Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期二, 24 一月 2023 17:41:49 +0800
Subject: [PATCH] 优化 供应链 类型的bug

---
 service-community/src/main/java/com/java110/community/cmd/visit/SaveVisitCmd.java |  190 +++++++++++++++--------------------------------
 1 files changed, 60 insertions(+), 130 deletions(-)

diff --git a/service-community/src/main/java/com/java110/community/cmd/visit/SaveVisitCmd.java b/service-community/src/main/java/com/java110/community/cmd/visit/SaveVisitCmd.java
index 6335538..dd1be5d 100644
--- a/service-community/src/main/java/com/java110/community/cmd/visit/SaveVisitCmd.java
+++ b/service-community/src/main/java/com/java110/community/cmd/visit/SaveVisitCmd.java
@@ -15,6 +15,7 @@
 import com.java110.dto.machine.CarBlackWhiteDto;
 import com.java110.dto.machine.MachineDto;
 import com.java110.dto.oaWorkflow.OaWorkflowDto;
+import com.java110.dto.oaWorkflowXml.OaWorkflowXmlDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.parking.ParkingSpaceDto;
 import com.java110.dto.visit.VisitDto;
@@ -22,6 +23,7 @@
 import com.java110.intf.common.*;
 import com.java110.intf.community.*;
 import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
+import com.java110.intf.oa.IOaWorkflowXmlInnerServiceSMO;
 import com.java110.intf.user.*;
 import com.java110.po.accessControlWhite.AccessControlWhitePo;
 import com.java110.po.car.CarBlackWhitePo;
@@ -90,6 +92,9 @@
     @Autowired
     private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
 
+    @Autowired
+    private IOaWorkflowXmlInnerServiceSMO oaWorkflowXmlInnerServiceSMOImpl;
+
     public static final String CODE_PREFIX_ID = "10";
 
     //閿�
@@ -133,129 +138,20 @@
         photoSMOImpl.savePhoto(reqJson, reqJson.getString("vId"), reqJson.getString("communityId"));
 
         // 鏄惁闇�瑕佸鏍�
-        if (hasAuditVisit(visitPo, reqJson,storeId,userId)) {
+        if (hasAuditVisit(visitPo, reqJson, storeId, userId)) {
             return; // 闇�瑕佸鏍哥粨鏉燂紝瀹℃牳鏃跺鐞� 鐩稿簲 閫佸浘鐗� 鍜岃溅鐗屾暟鎹�
         }
 
-        String faceWay = "Y";
-        String carNumWay = "N";
-
-        // 鏌ヨ璁垮璁剧疆
-        VisitSettingDto visitSettingDto = new VisitSettingDto();
-        visitSettingDto.setCommunityId(reqJson.getString("communityId"));
-        List<VisitSettingDto> visitSettingDtos = visitSettingV1InnerServiceSMOImpl.queryVisitSettings(visitSettingDto);
-
-        if (visitSettingDtos != null && visitSettingDtos.size() > 0) {
-            faceWay = visitSettingDtos.get(0).getFaceWay();
-            carNumWay = visitSettingDtos.get(0).getCarNumWay();
-            // 鍚屾杞︾墝 杩欓噷闇�瑕佸仠杞﹀満锛屾墍浠ユ病鏈夐厤缃瀹㈣缃紝涓嶅悓姝�
-            synchronizedVisitCarNum(visitPo, carNumWay, visitSettingDtos.get(0));
-        }
-
-        // 鍚屾璁垮浜鸿劯
-        synchronousVisitFace(visitPo, faceWay, reqJson.getString("photo"));
-
-    }
-
-    private void synchronousVisitFace(VisitPo visitPo, String faceWay, String photo) {
-        if (VisitSettingDto.FACE_WAY_NO.equals(faceWay) || StringUtil.isEmpty(photo)) {
-            return;
-        }
-        // 鏌ヨ 璁块棶涓氫富鍙互璁块棶鐨勯棬绂佽澶�
-        RoomDto roomDto = new RoomDto();
-        roomDto.setOwnerId(visitPo.getOwnerId());
-        //杩欑鎯呭喌璇存槑 涓氫富宸茬粡鍒犳帀浜� 闇�瑕佹煡璇㈢姸鎬佷负 1 鐨勬暟鎹�
-        List<RoomDto> rooms = roomInnerServiceSMOImpl.queryRoomsByOwner(roomDto);
-
-        //鎷垮埌灏忓尯ID
-        String communityId = visitPo.getCommunityId();
-        //鏍规嵁灏忓尯ID鏌ヨ鐜版湁璁惧
-        MachineDto machineDto = new MachineDto();
-        machineDto.setCommunityId(communityId);
-        //String[] locationObjIds = new String[]{communityId};
-        List<String> locationObjIds = new ArrayList<>();
-        locationObjIds.add(communityId);
-        for (RoomDto tRoomDto : rooms) {
-            locationObjIds.add(tRoomDto.getUnitId());
-            locationObjIds.add(tRoomDto.getRoomId());
-            locationObjIds.add(tRoomDto.getFloorId());
-        }
-
-        machineDto.setLocationObjIds(locationObjIds.toArray(new String[locationObjIds.size()]));
-        List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
-        if (machineDtos == null || machineDtos.size() < 1) {
-            return;
-        }
-
-        // 鍚屾鍒� 闂ㄧ鐧藉悕鍗曚腑
-        for (MachineDto tmpMachineDto : machineDtos) {
-            if (!"9999".equals(tmpMachineDto.getMachineTypeCd())) {
-                continue;
-            }
-            AccessControlWhiteDto accessControlWhiteDto = new AccessControlWhiteDto();
-            accessControlWhiteDto.setCommunityId(communityId);
-            accessControlWhiteDto.setTel(visitPo.getPhoneNumber());
-            accessControlWhiteDto.setMachineId(tmpMachineDto.getMachineId());
-            List<AccessControlWhiteDto> accessControlWhiteDtos = accessControlWhiteV1InnerServiceSMOImpl.queryAccessControlWhites(accessControlWhiteDto);
-            AccessControlWhitePo accessControlWhitePo = new AccessControlWhitePo();
-            if (accessControlWhiteDtos == null || accessControlWhiteDtos.size() < 1) {
-                accessControlWhitePo.setAcwId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
-                accessControlWhitePo.setCommunityId(visitPo.getCommunityId());
-                accessControlWhitePo.setEndTime(visitPo.getDepartureTime());
-                accessControlWhitePo.setIdCard("");
-                accessControlWhitePo.setMachineId(tmpMachineDto.getMachineId());
-                accessControlWhitePo.setPersonName(visitPo.getvName());
-                accessControlWhitePo.setPersonType(AccessControlWhiteDto.PERSON_TYPE_VISIT);
-                accessControlWhitePo.setStartTime(visitPo.getVisitTime());
-                accessControlWhitePo.setTel(visitPo.getPhoneNumber());
-                accessControlWhitePo.setThirdId(visitPo.getvId());
-                int flag = accessControlWhiteV1InnerServiceSMOImpl.saveAccessControlWhite(accessControlWhitePo);
-                if (flag < 1) {
-                    throw new CmdException("鍚屾闂ㄧ鐧藉悕鍗曞け璐�");
-                }
-            } else {
-                accessControlWhitePo.setAcwId(accessControlWhiteDtos.get(0).getAcwId());
-                accessControlWhitePo.setStartTime(visitPo.getVisitTime());
-                accessControlWhitePo.setEndTime(visitPo.getDepartureTime());
-                int flag = accessControlWhiteV1InnerServiceSMOImpl.updateAccessControlWhite(accessControlWhitePo);
-                if (flag < 1) {
-                    throw new CmdException("淇濆瓨鏁版嵁澶辫触");
-                }
-            }
-
-            photoSMOImpl.savePhoto(photo, accessControlWhitePo.getAcwId(), accessControlWhitePo.getCommunityId());
-
-        }
-    }
-
-    /**
-     * 棰勭害杞﹁締 鍔犲叆 鐧藉悕鍗� 鏄渶鍚堥�傜殑
-     * 涓嶅簲璇ュ姞鍏ュ埌涓氫富杞﹁締涓�
-     *
-     * @param visitPo
-     * @param carNumWay
-     * @param visitSettingDto
-     */
-    private void synchronizedVisitCarNum(VisitPo visitPo, String carNumWay, VisitSettingDto visitSettingDto) {
-        if (VisitSettingDto.CAR_NUM_WAY_NO.equals(carNumWay)) {
-            return;
-        }
-
-        CarBlackWhitePo carBlackWhitePo = new CarBlackWhitePo();
-        carBlackWhitePo.setCarNum(visitPo.getCarNum());
-        carBlackWhitePo.setBlackWhite(CarBlackWhiteDto.BLACK_WHITE_WHITE);
-        carBlackWhitePo.setCommunityId(visitPo.getCommunityId());
-        carBlackWhitePo.setPaId(visitSettingDto.getPaId());
-        carBlackWhitePo.setBwId(GenerateCodeFactory.getGeneratorId("11"));
-        carBlackWhitePo.setStartTime(visitPo.getVisitTime());
-        carBlackWhitePo.setEndTime(visitPo.getDepartureTime());
-        int flag = carBlackWhiteV1InnerServiceSMOImpl.saveCarBlackWhite(carBlackWhitePo);
+        visitPo = new VisitPo();
+        visitPo.setState(VisitDto.STATE_C);
+        visitPo.setvId(reqJson.getString("vId"));
+        visitPo.setCommunityId(reqJson.getString("communityId"));
+        flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
         if (flag < 1) {
-            throw new CmdException("棰勭害杞﹁締娣诲姞鐧藉悕鍗曞け璐�");
+            throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
         }
-
-
     }
+
 
     /**
      * 鏄惁闇�瑕佸鏍�
@@ -263,7 +159,7 @@
      * @param visitPo
      * @param reqJson
      */
-    private boolean hasAuditVisit(VisitPo visitPo, JSONObject reqJson,String storeId,String userId) {
+    private boolean hasAuditVisit(VisitPo visitPo, JSONObject reqJson, String storeId, String userId) {
 
 
         VisitSettingDto visitSettingDto = new VisitSettingDto();
@@ -283,7 +179,7 @@
         //瑙﹀彂 瀹℃壒娴佺▼
         OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
         oaWorkflowDto.setStoreId(storeId);
-        oaWorkflowDto.setFlowId(visitPo.getvId());
+        oaWorkflowDto.setFlowId(visitSettingDtos.get(0).getFlowId());
         List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
         Assert.listOnlyOne(oaWorkflowDtos, "娴佺▼涓嶅瓨鍦�");
         if (!OaWorkflowDto.STATE_COMPLAINT.equals(oaWorkflowDtos.get(0).getState())) {
@@ -297,26 +193,60 @@
         //鍚姩浠诲姟
         JSONObject flowJson = new JSONObject();
         flowJson.put("processDefinitionKey", oaWorkflowDtos.get(0).getProcessDefinitionKey());
-        flowJson.put("createUserId",userId);
-        flowJson.put("flowId",oaWorkflowDtos.get(0).getFlowId());
-        flowJson.put("id",visitPo.getvId());
-        flowJson.put("auditMessage","鎻愪氦瀹℃牳");
-        flowJson.put("storeId",storeId);
+        flowJson.put("createUserId", userId);
+        flowJson.put("flowId", oaWorkflowDtos.get(0).getFlowId());
+        flowJson.put("id", visitPo.getvId());
+        flowJson.put("auditMessage", "鎻愪氦瀹℃牳");
+        flowJson.put("storeId", storeId);
         reqJson.put("processDefinitionKey", oaWorkflowDtos.get(0).getProcessDefinitionKey());
         JSONObject result = oaWorkflowActivitiInnerServiceSMOImpl.startProcess(flowJson);
 
         //鎻愪氦鑰呮彁浜�
         flowJson = new JSONObject();
-        flowJson.put("processInstanceId",result.getString("processInstanceId"));
-        flowJson.put("createUserId",userId);
-        flowJson.put("nextUserId",userId); // 杩欓噷瑕佹眰娴佺▼ 涓嬩竴澶勭悊浜哄繀椤昏鎸囧畾
-        flowJson.put("storeId",storeId);
-        flowJson.put("id",visitPo.getvId());
-        flowJson.put("flowId",oaWorkflowDtos.get(0).getFlowId());
+        flowJson.put("processInstanceId", result.getString("processInstanceId"));
+        flowJson.put("createUserId", userId);
+        flowJson.put("nextUserId", nextAuditStaff(storeId, visitSettingDtos.get(0).getFlowId())); // 杩欓噷瑕佹眰娴佺▼ 涓嬩竴澶勭悊浜哄繀椤昏鎸囧畾
+        flowJson.put("storeId", storeId);
+        flowJson.put("id", visitPo.getvId());
+        flowJson.put("flowId", oaWorkflowDtos.get(0).getFlowId());
 
         oaWorkflowActivitiInnerServiceSMOImpl.autoFinishFirstTask(flowJson);
 
+        visitPo = new VisitPo();
+        visitPo.setState(VisitDto.STATE_D);
+        visitPo.setvId(reqJson.getString("vId"));
+        visitPo.setCommunityId(reqJson.getString("communityId"));
+        int flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+        if (flag < 1) {
+            throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
+        }
         return true;
+    }
+
+    private String nextAuditStaff(String storeId, String flowId) {
+        OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
+        oaWorkflowDto.setFlowId(flowId);
+        oaWorkflowDto.setStoreId(storeId);
+        List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
+
+        Assert.listOnlyOne(oaWorkflowDtos, "娴佺▼涓嶅瓨鍦�");
+
+        OaWorkflowXmlDto oaWorkflowXmlDto = new OaWorkflowXmlDto();
+        oaWorkflowXmlDto.setFlowId(oaWorkflowDtos.get(0).getFlowId());
+        List<OaWorkflowXmlDto> oaWorkflowXmlDtos = oaWorkflowXmlInnerServiceSMOImpl.queryOaWorkflowXmls(oaWorkflowXmlDto);
+        Assert.listOnlyOne(oaWorkflowXmlDtos, "娴佺▼涓嶅瓨鍦�");
+
+        List<JSONObject> tasks = oaWorkflowActivitiInnerServiceSMOImpl.queryFirstAuditStaff(oaWorkflowXmlDtos.get(0));
+
+        if (tasks == null || tasks.size() < 1) {
+            throw new CmdException("娴佺▼鏈缃笅涓�姝ュ鏍镐汉");
+        }
+        String assignee = tasks.get(0).getString("assignee");
+
+        if (assignee.startsWith("-")) {
+            throw new CmdException("娴佺▼鏈缃笅涓�姝ュ鏍镐汉");
+        }
+        return assignee;
 
     }
 

--
Gitblit v1.8.0