From e23023b93f34286f5a807b0b85e9a0619a297ed7 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期二, 21 二月 2023 23:25:34 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

---
 service-community/src/main/java/com/java110/community/cmd/visit/SaveVisitCmd.java |  148 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 125 insertions(+), 23 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 2f59899..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
@@ -9,20 +9,24 @@
 import com.java110.core.factory.CommunitySettingFactory;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.smo.IPhotoSMO;
+import com.java110.dto.RoomDto;
+import com.java110.dto.accessControlWhite.AccessControlWhiteDto;
 import com.java110.dto.file.FileDto;
+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;
 import com.java110.dto.visitSetting.VisitSettingDto;
-import com.java110.intf.common.IFileInnerServiceSMO;
-import com.java110.intf.common.IFileRelInnerServiceSMO;
-import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
-import com.java110.intf.community.IVisitInnerServiceSMO;
-import com.java110.intf.community.IVisitSettingV1InnerServiceSMO;
-import com.java110.intf.community.IVisitV1InnerServiceSMO;
-import com.java110.intf.user.IOwnerCarAttrInnerServiceSMO;
-import com.java110.intf.user.IOwnerCarInnerServiceSMO;
-import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
+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;
 import com.java110.po.car.OwnerCarPo;
 import com.java110.po.file.FileRelPo;
 import com.java110.po.owner.VisitPo;
@@ -38,10 +42,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 
 @Java110Cmd(serviceCode = "visit.saveVisit")
 public class SaveVisitCmd extends Cmd {
@@ -70,6 +71,31 @@
     @Autowired
     private IVisitSettingV1InnerServiceSMO visitSettingV1InnerServiceSMOImpl;
 
+    @Autowired
+    private ICarBlackWhiteV1InnerServiceSMO carBlackWhiteV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
+    @Autowired
+    private IAccessControlWhiteV1InnerServiceSMO accessControlWhiteV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOaWorkflowInnerServiceSMO oaWorkflowInnerServiceSMOImpl;
+
+    @Autowired
+    private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
+    @Autowired
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
+
+    @Autowired
+    private IOaWorkflowXmlInnerServiceSMO oaWorkflowXmlInnerServiceSMOImpl;
+
+    public static final String CODE_PREFIX_ID = "10";
 
     //閿�
     public static final String IS_NEED_REVIEW = "IS_NEED_REVIEW";
@@ -95,6 +121,7 @@
     @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         String userId = context.getReqHeaders().get("user-id");
+        String storeId = context.getReqHeaders().get("store-id");
         reqJson.put("vId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_vId));
         //闅忚浜烘暟
         if (StringUtil.isEmpty(reqJson.getString("entourage"))) {
@@ -111,40 +138,115 @@
         photoSMOImpl.savePhoto(reqJson, reqJson.getString("vId"), reqJson.getString("communityId"));
 
         // 鏄惁闇�瑕佸鏍�
-        if(hasAuditVisit(visitPo,reqJson)){
+        if (hasAuditVisit(visitPo, reqJson, storeId, userId)) {
             return; // 闇�瑕佸鏍哥粨鏉燂紝瀹℃牳鏃跺鐞� 鐩稿簲 閫佸浘鐗� 鍜岃溅鐗屾暟鎹�
         }
 
-
-
-
-
-
-
+        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("淇敼璁垮鐘舵�佸け璐�");
+        }
     }
+
 
     /**
      * 鏄惁闇�瑕佸鏍�
+     *
      * @param visitPo
      * @param reqJson
      */
-    private boolean hasAuditVisit(VisitPo visitPo, JSONObject reqJson) {
+    private boolean hasAuditVisit(VisitPo visitPo, JSONObject reqJson, String storeId, String userId) {
 
 
         VisitSettingDto visitSettingDto = new VisitSettingDto();
         visitSettingDto.setCommunityId(reqJson.getString("communityId"));
         List<VisitSettingDto> visitSettingDtos = visitSettingV1InnerServiceSMOImpl.queryVisitSettings(visitSettingDto);
 
-        if(visitSettingDtos == null || visitSettingDtos.size()< 1){
+        if (visitSettingDtos == null || visitSettingDtos.size() < 1) {
             return false;
         }
 
         // 闇�瑕佸鏍�
-        if(VisitSettingDto.AUDIT_WAY_YES.equals(visitSettingDtos.get(0).getAuditWay())){
+        if (!VisitSettingDto.AUDIT_WAY_YES.equals(visitSettingDtos.get(0).getAuditWay())) {
             return false;
         }
 
+
+        //瑙﹀彂 瀹℃壒娴佺▼
+        OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
+        oaWorkflowDto.setStoreId(storeId);
+        oaWorkflowDto.setFlowId(visitSettingDtos.get(0).getFlowId());
+        List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
+        Assert.listOnlyOne(oaWorkflowDtos, "娴佺▼涓嶅瓨鍦�");
+        if (!OaWorkflowDto.STATE_COMPLAINT.equals(oaWorkflowDtos.get(0).getState())) {
+            throw new IllegalArgumentException(oaWorkflowDtos.get(0).getFlowName() + "娴佺▼鏈儴缃�");
+        }
+
+        if (StringUtil.isEmpty(oaWorkflowDtos.get(0).getProcessDefinitionKey())) {
+            throw new IllegalArgumentException(oaWorkflowDtos.get(0).getFlowName() + "娴佺▼鏈儴缃�");
+        }
+
+        //鍚姩浠诲姟
+        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);
+        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", 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