From 0b04f664887c73e90bf684a4e69c0fdbfe26349d Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 29 三月 2023 13:35:20 +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 |  435 ++++++++++++++++++++++++++++++++----------------------
 1 files changed, 259 insertions(+), 176 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..c0b33dd 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,26 +9,16 @@
 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.owner.OwnerCarDto;
+import com.java110.dto.oaWorkflowXml.OaWorkflowXmlDto;
 import com.java110.dto.parking.ParkingSpaceDto;
 import com.java110.dto.visit.VisitDto;
 import com.java110.dto.visitSetting.VisitSettingDto;
 import com.java110.intf.common.*;
 import com.java110.intf.community.*;
 import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
-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.intf.oa.IOaWorkflowXmlInnerServiceSMO;
 import com.java110.po.owner.VisitPo;
-import com.java110.po.ownerCarAttr.OwnerCarAttrPo;
 import com.java110.po.parking.ParkingSpacePo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
@@ -36,12 +26,18 @@
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 
+import java.text.ParseException;
 import java.util.*;
 
+/**
+ * 璁垮鐧昏
+ *
+ * @author fqz
+ * @date 2023-02-27 10:23
+ */
 @Java110Cmd(serviceCode = "visit.saveVisit")
 public class SaveVisitCmd extends Cmd {
 
@@ -58,37 +54,16 @@
     private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
 
     @Autowired
-    private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
-
-    @Autowired
-    private IOwnerCarAttrInnerServiceSMO ownerCarAttrInnerServiceSMOImpl;
-
-    @Autowired
-    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
-
-    @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;
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
 
     @Autowired
-    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
+    private IOaWorkflowXmlInnerServiceSMO oaWorkflowXmlInnerServiceSMOImpl;
 
     public static final String CODE_PREFIX_ID = "10";
 
@@ -114,7 +89,7 @@
 
     @Override
     @Java110Transactional
-    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
         String userId = context.getReqHeaders().get("user-id");
         String storeId = context.getReqHeaders().get("store-id");
         reqJson.put("vId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_vId));
@@ -131,130 +106,99 @@
             throw new CmdException("淇濆瓨璁垮澶辫触");
         }
         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("鍚屾闂ㄧ鐧藉悕鍗曞け璐�");
+        //鏈夎溅杈嗕俊鎭殑鎯呭喌涓嬪垽鏂溅杈嗘槸鍚﹂渶瑕佸鏍�
+        if (reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) { //鏈夎溅杈�
+            if (visitSettingDtos != null && visitSettingDtos.size() == 1 && visitSettingDtos.get(0).getCarNumWay().equals("Y")) { //杞﹁締鍚屾 Y 鏄� N 鍚�
+                //鑾峰彇棰勭害杞﹁締鍋滆溅鍦篒D銆侀绾﹁溅杈嗗厤璐规椂闀裤�侀绾﹁溅闄愬埗娆℃暟銆侀绾﹁溅鏄惁瀹℃牳
+                JSONObject visitJson = getVisitCarOperate(reqJson);
+                //杞﹁締鏄惁闇�瑕佸鏍�
+//            String isNeedReview = CommunitySettingFactory.getValue(reqJson.getString("communityId"), IS_NEED_REVIEW); //鑾峰彇灏忓尯閰嶇疆閲岃溅杈嗘槸鍚﹂渶瑕佸鏍哥殑鍊�
+                String isNeedReview = visitJson.getString("isNeedReview"); //鑾峰彇杞﹁締鏄惁闇�瑕佸鏍哥殑鍊�
+                if (!StringUtil.isEmpty(isNeedReview) && isNeedReview.equals("0")) { //0琛ㄧず闇�瑕佸鏍�  1琛ㄧず涓嶉渶瑕佸鏍�
+                    visitPo = new VisitPo();
+                    visitPo.setCarState(VisitDto.CAR_STATE_W); //杞﹁締鐘舵�佷负寰呭鏍哥姸鎬�
+                    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("淇敼璁垮鐘舵�佸け璐�");
+                    }
+                } else { //鍏朵粬鎯呭喌榛樿涓鸿溅杈嗗鏍搁�氳繃
+                    visitPo = new VisitPo();
+                    visitPo.setState(VisitDto.STATE_C); //璁垮璁板綍鐘舵�佸彉涓哄鏍搁�氳繃
+                    visitPo.setvId(reqJson.getString("vId"));
+                    visitPo.setCommunityId(reqJson.getString("communityId"));
+                    JSONObject param = dealVisitorRegistrationTimes(visitJson); //鍒ゆ柇鏄惁瓒呰繃璁垮鐧昏娆℃暟
+                    if (param.containsKey("specifiedTimes") && !StringUtil.isEmpty(param.getString("specifiedTimes")) && param.getString("specifiedTimes").equals("true")) { //瓒呰繃杞﹁締鐧昏娆℃暟
+                        visitPo.setStateRemark("璁垮淇℃伅鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曞鏍革紒");
+                        visitPo.setCarStateRemark("璁垮淇℃伅鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曞鏍革紒");
+                        visitPo.setCarState(VisitDto.CAR_STATE_F); //杞﹁締鐘舵�佸彉涓哄鏍告嫆缁�
+                        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曡嚜鍔ㄥ鏍革紒");
+                        context.setResponseEntity(responseEntity);
+                        flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                        if (flag < 1) {
+                            throw new CmdException("淇濆瓨璁垮澶辫触");
+                        }
+                    } else { //鏈秴杩囪溅杈嗙櫥璁版鏁�
+                        //鑾峰彇杞︿綅
+                        JSONObject paramJson = dealParkingSpace(visitJson);
+                        if (paramJson.containsKey("freeSpace") && !StringUtil.isEmpty(paramJson.getString("freeSpace")) && paramJson.getString("freeSpace").equals("true")) { //鏃犵┖闂茶溅浣�
+                            visitPo.setStateRemark("璁垮淇℃伅鐧昏鎴愬姛,褰撳墠鍋滆溅鍦哄凡鏃犵┖闂茶溅浣嶏紝鐧昏杞﹁締灏嗘殏鏃朵笉鑳借繘鍏ュ仠杞﹀満锛岃鎮ㄥ悎鐞嗗畨鎺掑嚭琛屻��");
+                            visitPo.setCarStateRemark("璁垮淇℃伅鐧昏鎴愬姛,褰撳墠鍋滆溅鍦哄凡鏃犵┖闂茶溅浣嶏紝鐧昏杞﹁締灏嗘殏鏃朵笉鑳借繘鍏ュ仠杞﹀満锛岃鎮ㄥ悎鐞嗗畨鎺掑嚭琛屻��");
+                            visitPo.setCarState(VisitDto.CAR_STATE_F); //杞﹁締鐘舵�佷负瀹℃牳鎷掔粷鐘舵��
+                            ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,褰撳墠鍋滆溅鍦哄凡鏃犵┖闂茶溅浣嶏紝鐧昏杞﹁締灏嗘殏鏃朵笉鑳借繘鍏ュ仠杞﹀満锛岃鎮ㄥ悎鐞嗗畨鎺掑嚭琛屻��");
+                            context.setResponseEntity(responseEntity);
+                            flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                            if (flag < 1) {
+                                throw new CmdException("淇濆瓨璁垮澶辫触");
+                            }
+                        } else { //鏈夌┖闂茶溅浣�
+                            visitPo.setPsId(paramJson.getString("psId"));
+                            //澶勭悊棰勭害杞﹀厤璐规椂闀�
+                            String freeTime = dealVisitCarFreeTime(visitJson);
+                            reqJson.put("freeTime", freeTime);
+                            visitPo.setFreeTime(freeTime); //棰勭害杞﹀厤璐规椂闀�
+                            visitPo.setCarState(VisitDto.CAR_STATE_C); //杞﹁締鐘舵�佷负瀹℃牳閫氳繃鐘舵��
+                            flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                            if (flag < 1) {
+                                throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
+                            }
+                            //淇敼杞︿綅鐘舵��
+                            modifyParkingSpaceSate(paramJson);
+                        }
+                    }
                 }
-            } else {
-                accessControlWhitePo.setAcwId(accessControlWhiteDtos.get(0).getAcwId());
-                accessControlWhitePo.setStartTime(visitPo.getVisitTime());
-                accessControlWhitePo.setEndTime(visitPo.getDepartureTime());
-                int flag = accessControlWhiteV1InnerServiceSMOImpl.updateAccessControlWhite(accessControlWhitePo);
+            } else if (visitSettingDtos != null && visitSettingDtos.size() == 1 && visitSettingDtos.get(0).getCarNumWay().equals("N")) { //杞﹁締涓嶅悓姝�
+                visitPo = new VisitPo();
+                visitPo.setState(VisitDto.STATE_C);
+                visitPo.setCarState(VisitDto.CAR_STATE_C); //杞﹁締瀹℃牳閫氳繃
+                visitPo.setCarStateRemark("杞﹁締涓嶅悓姝ワ紒");
+                visitPo.setvId(reqJson.getString("vId"));
+                visitPo.setCommunityId(reqJson.getString("communityId"));
+                flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
                 if (flag < 1) {
-                    throw new CmdException("淇濆瓨鏁版嵁澶辫触");
+                    throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
                 }
             }
-
-            photoSMOImpl.savePhoto(photo, accessControlWhitePo.getAcwId(), accessControlWhitePo.getCommunityId());
-
+        } else { //鏃犺溅杈�
+            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 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);
-        if (flag < 1) {
-            throw new CmdException("棰勭害杞﹁締娣诲姞鐧藉悕鍗曞け璐�");
-        }
-
-
     }
 
     /**
@@ -263,62 +207,201 @@
      * @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();
         visitSettingDto.setCommunityId(reqJson.getString("communityId"));
         List<VisitSettingDto> visitSettingDtos = visitSettingV1InnerServiceSMOImpl.queryVisitSettings(visitSettingDto);
-
         if (visitSettingDtos == null || visitSettingDtos.size() < 1) {
             return false;
         }
-
         // 闇�瑕佸鏍�
         if (!VisitSettingDto.AUDIT_WAY_YES.equals(visitSettingDtos.get(0).getAuditWay())) {
             return false;
         }
-
-
         //瑙﹀彂 瀹℃壒娴佺▼
         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())) {
             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);
+        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"));
+        if (reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) {
+            visitPo.setCarState(VisitDto.CAR_STATE_D);
+        }
+        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;
+    }
 
+    //澶勭悊杞︿綅id
+    public JSONObject dealParkingSpace(JSONObject reqJson) {
+        //鏄惁鏈夌┖闂茶溅浣� false 鏈夌┖闂�  true鏃犵┖闂�
+        boolean freeSpace = false;
+        //鑾峰彇璁垮閰嶇疆閲岄厤缃殑鍋滆溅鍦篿d
+//        String parkingAreaId = CommunitySettingFactory.getValue(reqJson.getString("communityId"), ASCRIPTION_CAR_AREA_ID);
+        String ascriptionCarAreaId = reqJson.getString("ascriptionCarAreaId");
+        if (StringUtil.isEmpty(ascriptionCarAreaId)) { //濡傛灉娌℃湁閰嶇疆鍋滆溅鍦篿d锛屽氨闅忎究鍒嗛厤璇ュ皬鍖轰笅涓�涓┖闂茶溅浣�
+            ParkingSpaceDto parkingSpace = new ParkingSpaceDto();
+            parkingSpace.setCommunityId(reqJson.getString("communityId"));
+            parkingSpace.setState("F"); //杞︿綅鐘舵�� 鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F
+            parkingSpace.setParkingType("1"); //1锛氭櫘閫氳溅浣�  2锛氬瓙姣嶈溅浣�  3锛氳豹鍗庤溅浣�
+            //鏌ヨ灏忓尯绌洪棽杞︿綅
+            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpace);
+            if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
+                freeSpace = true;
+            } else {
+                //闅忔満鐢熸垚涓�涓笉澶т簬闆嗗悎闀垮害鐨勬暣鏁�
+                Random random = new Random();
+                int i = random.nextInt(parkingSpaceDtos.size());
+                //鑾峰彇杞︿綅id
+                String psId = parkingSpaceDtos.get(i).getPsId();
+                reqJson.put("psId", psId);
+            }
+        } else {
+            ParkingSpaceDto parkingSpace = new ParkingSpaceDto();
+            parkingSpace.setCommunityId(reqJson.getString("communityId"));
+            parkingSpace.setPaId(ascriptionCarAreaId); //鍋滆溅鍦篿d
+            parkingSpace.setState("F"); //杞︿綅鐘舵�� 鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F
+            parkingSpace.setParkingType("1"); //1锛氭櫘閫氳溅浣�  2锛氬瓙姣嶈溅浣�  3锛氳豹鍗庤溅浣�
+            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpace);
+            if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
+                freeSpace = true;
+            } else {
+                //闅忔満鐢熸垚涓�涓笉澶т簬闆嗗悎闀垮害鐨勬暣鏁�
+                Random random = new Random();
+                int i = random.nextInt(parkingSpaceDtos.size());
+                //鑾峰彇杞︿綅id
+                String psId = parkingSpaceDtos.get(i).getPsId();
+                reqJson.put("psId", psId);
+            }
+        }
+        reqJson.put("freeSpace", freeSpace);
+        return reqJson;
+    }
+
+    //鏇存敼杞︿綅鐘舵��
+    public void modifyParkingSpaceSate(JSONObject reqJson) {
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setPsId(reqJson.getString("psId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+        Assert.listOnlyOne(parkingSpaceDtos, "鏌ヨ杞︿綅閿欒锛�");
+        ParkingSpacePo parkingSpacePo = new ParkingSpacePo();
+        parkingSpacePo.setPsId(parkingSpaceDtos.get(0).getPsId());
+        parkingSpacePo.setState("H"); //杞︿綅鐘舵�� 鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F
+        parkingSpaceInnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
+    }
+
+    //鍒ゆ柇鏄惁瓒呰繃璁垮鐧昏娆℃暟
+    public JSONObject dealVisitorRegistrationTimes(JSONObject reqJson) {
+        //鏄惁瓒呰繃瑙勫畾娆℃暟
+        boolean specifiedTimes = false;
+        //鏌ヨ棰勭害杞﹁締鐧昏娆℃暟
+//        String visitNumber = CommunitySettingFactory.getValue(reqJson.getString("communityId"), VISIT_NUMBER);
+        String visitNumber = reqJson.getString("visitNumber"); //棰勭害杞﹂檺鍒舵鏁�
+        if (StringUtil.isEmpty(visitNumber)) {
+            reqJson.put("specifiedTimes", specifiedTimes);
+            return reqJson;
+        }
+        int number = Integer.parseInt(visitNumber);
+        VisitDto visitDto = new VisitDto();
+        //鏌ヨ褰撳ぉ杞﹁締鐧昏娆℃暟
+        visitDto.setOwnerId(reqJson.getString("ownerId"));
+        visitDto.setCommunityId(reqJson.getString("communityId"));
+        visitDto.setCarNumNoEmpty("1");
+        visitDto.setSameDay("1");
+        visitDto.setCarState("1"); //杞﹁締瀹℃牳閫氳繃
+        visitDto.setSign(reqJson.getString("vId"));
+        List<VisitDto> visitDtos = visitInnerServiceSMOImpl.queryVisits(visitDto);
+        int count = visitDtos.size();
+        //棰勭害杞﹁締鐧昏娆℃暟0涓嶅仛闄愬埗
+        if (count >= number && number > 0) {
+            reqJson.put("psId", null);
+            reqJson.put("freeTime", null);
+            specifiedTimes = true;
+        }
+        reqJson.put("specifiedTimes", specifiedTimes);
+        return reqJson;
+    }
+
+    //澶勭悊棰勭害杞﹀厤璐规椂闀�
+    public String dealVisitCarFreeTime(JSONObject reqJson) {
+        //鑾峰彇棰勭害杞﹀厤璐规椂闀跨殑鍊�
+//        String freeTime = CommunitySettingFactory.getValue(reqJson.getString("communityId"), CAR_FREE_TIME);
+        String carFreeTime = reqJson.getString("carFreeTime");
+        if (StringUtil.isEmpty(carFreeTime)) {
+            carFreeTime = "120";
+        }
+        Date time = DateUtil.getDateFromStringA(reqJson.getString("visitTime"));
+        Calendar newTime = Calendar.getInstance();
+        newTime.setTime(time);
+        newTime.add(Calendar.MINUTE, Integer.parseInt(carFreeTime));//鏃ユ湡鍔犱笂鍒嗛挓
+        Date newDate = newTime.getTime();
+        String finishFreeTime = DateUtil.getFormatTimeString(newDate, DateUtil.DATE_FORMATE_STRING_A);
+        return finishFreeTime;
+    }
+
+    //鑾峰彇棰勭害杞﹁締鍋滆溅鍦篒D銆侀绾﹁溅杈嗗厤璐规椂闀裤�侀绾﹁溅闄愬埗娆℃暟銆侀绾﹁溅鏄惁瀹℃牳
+    public JSONObject getVisitCarOperate(JSONObject reqJson) {
+        VisitSettingDto visitSettingDto = new VisitSettingDto();
+        visitSettingDto.setCommunityId(reqJson.getString("communityId"));
+        List<VisitSettingDto> visitSettingDtos = visitSettingV1InnerServiceSMOImpl.queryVisitSettings(visitSettingDto);
+        if (visitSettingDtos != null && visitSettingDtos.size() > 0) {
+            reqJson.put("ascriptionCarAreaId", visitSettingDtos.get(0).getPaId()); //棰勭害杞﹁締褰掑睘鍋滆溅鍦篒D
+            reqJson.put("carFreeTime", visitSettingDtos.get(0).getCarFreeTime()); //棰勭害杞﹁締鍏嶈垂鏃堕暱(鍗曚綅涓哄垎閽�)
+            reqJson.put("visitNumber", visitSettingDtos.get(0).getVisitNumber()); //棰勭害杞﹂檺鍒舵鏁�
+            reqJson.put("isNeedReview", visitSettingDtos.get(0).getIsNeedReview()); //棰勭害杞︽槸鍚﹀鏍�  0琛ㄧず闇�瑕佸鏍�  1琛ㄧず涓嶉渶瑕佸鏍�
+        }
+        return reqJson;
+    }
 }

--
Gitblit v1.8.0