From 6e13e0fa577df5511157a7841617106bd2f5c0b2 Mon Sep 17 00:00:00 2001
From: xiaogang <905166056@qq.com>
Date: 星期一, 20 三月 2023 16:03:05 +0800
Subject: [PATCH] 1、优化采购批次相关内容2、优化访客停车白名单下发3、新增权限组排序4、优化设备相关5、优化页面相关展示bug

---
 service-community/src/main/java/com/java110/community/cmd/visit/AuditUndoVisitCmd.java |  250 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 235 insertions(+), 15 deletions(-)

diff --git a/service-community/src/main/java/com/java110/community/cmd/visit/AuditUndoVisitCmd.java b/service-community/src/main/java/com/java110/community/cmd/visit/AuditUndoVisitCmd.java
index 699a6e2..d90faa6 100644
--- a/service-community/src/main/java/com/java110/community/cmd/visit/AuditUndoVisitCmd.java
+++ b/service-community/src/main/java/com/java110/community/cmd/visit/AuditUndoVisitCmd.java
@@ -2,23 +2,33 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
-import com.java110.dto.itemRelease.ItemReleaseDto;
+import com.java110.dto.parking.ParkingSpaceDto;
 import com.java110.dto.visit.VisitDto;
-import com.java110.intf.common.IItemReleaseV1InnerServiceSMO;
+import com.java110.dto.visitSetting.VisitSettingDto;
 import com.java110.intf.common.IOaWorkflowActivitiInnerServiceSMO;
+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.po.itemRelease.ItemReleasePo;
 import com.java110.po.owner.VisitPo;
+import com.java110.po.parking.ParkingSpacePo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 
 import java.text.ParseException;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
+import java.util.Random;
 
 /**
  * 瀹℃牳 鏀捐
@@ -33,7 +43,15 @@
     private IVisitV1InnerServiceSMO visitV1InnerServiceSMOImpl;
 
     @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Autowired
+    private IVisitInnerServiceSMO visitInnerServiceSMOImpl;
+
+    @Autowired
     private IVisitSettingV1InnerServiceSMO visitSettingV1InnerServiceSMOImpl;
+
+    public static final String CODE_PREFIX_ID = "10";
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
@@ -42,27 +60,24 @@
         Assert.hasKeyAndValue(reqJson, "flowId", "鏈寘鍚祦绋�");
         Assert.hasKeyAndValue(reqJson, "auditCode", "鏈寘鍚姸鎬�");
         Assert.hasKeyAndValue(reqJson, "auditMessage", "鏈寘鍚姸鎬佽鏄�");
-
     }
 
     @Override
+    @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
-
         String storeId = context.getReqHeaders().get("store-id");
-
         VisitDto visitDto = new VisitDto();
         visitDto.setvId(reqJson.getString("vId"));
+        visitDto.setCommunityId(reqJson.getString("communityId"));
         List<VisitDto> visitDtos = visitV1InnerServiceSMOImpl.queryVisits(visitDto);
-
         Assert.listOnlyOne(visitDtos, "璁垮涓嶅瓨鍦�");
-
         //鐘舵�� W寰呭鏍� D 瀹℃牳涓� C 瀹℃牳瀹屾垚 D 瀹℃牳澶辫触
         VisitPo visitPo = new VisitPo();
+        visitPo.setMark("1");
         visitPo.setvId(visitDtos.get(0).getvId());
-        reqJson.put("id",reqJson.getString("vId"));
-        reqJson.put("storeId",storeId);
-
-
+        visitPo.setCommunityId(reqJson.getString("communityId"));
+        reqJson.put("id", reqJson.getString("vId"));
+        reqJson.put("storeId", storeId);
         //涓氬姟鍔炵悊
         if ("1100".equals(reqJson.getString("auditCode"))
                 || "1500".equals(reqJson.getString("auditCode"))) { //鍔炵悊鎿嶄綔
@@ -73,24 +88,229 @@
             } else {
                 visitPo.setState(VisitDto.STATE_D);
             }
-            visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+            if (!StringUtil.isEmpty(visitPo.getState()) && visitPo.getState().equals(VisitDto.STATE_C)) { //璁垮瀹℃牳閫氳繃
+                //鏌ヨ璁垮閰嶇疆淇℃伅
+                VisitSettingDto visitSettingDto = new VisitSettingDto();
+                visitSettingDto.setCommunityId(reqJson.getString("communityId"));
+                List<VisitSettingDto> visitSettingDtos = visitSettingV1InnerServiceSMOImpl.queryVisitSettings(visitSettingDto);
+                if (!StringUtil.isEmpty(visitDtos.get(0).getCarNum())) { //鏈夎溅杈�
+
+                    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.setCarState(VisitDto.CAR_STATE_W); //杞﹁締鐘舵�佷负寰呭鏍哥姸鎬�
+                            int flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                            if (flag < 1) {
+                                throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
+                            }
+                        } else { //鍏朵粬鎯呭喌榛樿涓鸿溅杈嗗鏍搁�氳繃
+                            reqJson.put("ownerId", visitDtos.get(0).getOwnerId());
+                            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);
+                                int 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);
+                                    int flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                                    if (flag < 1) {
+                                        throw new CmdException("淇濆瓨璁垮澶辫触");
+                                    }
+                                } else { //鏈夌┖闂茶溅浣�
+                                    visitPo.setPsId(paramJson.getString("psId"));
+                                    reqJson.put("visitTime", visitDtos.get(0).getVisitTime());
+                                    //澶勭悊棰勭害杞﹀厤璐规椂闀�
+                                    String freeTime = dealVisitCarFreeTime(visitJson);
+                                    visitPo.setFreeTime(freeTime); //棰勭害杞﹀厤璐规椂闀�
+                                    visitPo.setCarState(VisitDto.CAR_STATE_C); //杞﹁締鐘舵�佷负瀹℃牳閫氳繃鐘舵��
+                                    int flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                                    if (flag < 1) {
+                                        throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
+                                    }
+                                    //淇敼杞︿綅鐘舵��
+                                    modifyParkingSpaceSate(paramJson.getString("psId"));
+                                    VisitDto visit = new VisitDto();
+                                    visit.setvId(reqJson.getString("vId"));
+                                    List<VisitDto> visits = visitV1InnerServiceSMOImpl.queryVisits(visitDto);
+                                    Assert.listOnlyOne(visits, "鏌ヨ璁垮淇℃伅閿欒锛�");
+                                }
+                            }
+                        }
+                    } else if (visitSettingDtos != null && visitSettingDtos.size() == 1 && visitSettingDtos.get(0).getCarNumWay().equals("N")) { //杞﹁締涓嶅悓姝�
+                        visitPo.setCarState(VisitDto.CAR_STATE_C); //杞﹁締瀹℃牳閫氳繃
+                        visitPo.setCarStateRemark("杞﹁締涓嶅悓姝ワ紒");
+                        int flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                        if (flag < 1) {
+                            throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
+                        }
+                    }
+                } else { //鏃犺溅杈�
+                    int flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                    if (flag < 1) {
+                        throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
+                    }
+                }
+            } else { //鍏朵粬鐘舵��
+                int flag = visitV1InnerServiceSMOImpl.updateVisit(visitPo);
+                if (flag < 1) {
+                    throw new CmdException("淇敼璁垮鐘舵�佸け璐�");
+                }
+            }
             //瀹屾垚褰撳墠娴佺▼ 鎻掑叆涓嬩竴澶勭悊浜�
         } else if ("1300".equals(reqJson.getString("auditCode"))) { //杞崟鎿嶄綔
             reqJson.put("nextUserId", reqJson.getString("staffId"));
             oaWorkflowUserInnerServiceSMOImpl.changeTaskToOtherUser(reqJson);
             //reqJson.put("state", "1004"); //宸ュ崟杞崟
             visitPo.setState(VisitDto.STATE_D);
+            visitPo.setSign("1");
             visitV1InnerServiceSMOImpl.updateVisit(visitPo);
         } else if ("1200".equals(reqJson.getString("auditCode"))
-                || "1400".equals(reqJson.getString("auditCode"))
-        ) { //閫�鍥炴搷浣�
+                || "1400".equals(reqJson.getString("auditCode"))) { //閫�鍥炴搷浣�
+            reqJson.put("startUserId", reqJson.getString("userId"));
             oaWorkflowUserInnerServiceSMOImpl.goBackTask(reqJson);
             //reqJson.put("state", "1003"); //宸ュ崟閫�鍗�
             visitPo.setState(VisitDto.STATE_F);
+            visitPo.setSign("1");
             visitV1InnerServiceSMOImpl.updateVisit(visitPo);
         } else {
             throw new IllegalArgumentException("涓嶆敮鎸佺殑绫诲瀷");
         }
+    }
 
+    //澶勭悊杞︿綅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(String psId) {
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setPsId(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.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