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 | 388 +++++++++++++++++++++++-------------------------------
1 files changed, 166 insertions(+), 222 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 f6ab41e..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
@@ -2,23 +2,31 @@
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.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.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.IVisitV1InnerServiceSMO;
-import com.java110.intf.user.IOwnerCarAttrInnerServiceSMO;
-import com.java110.intf.user.IOwnerCarInnerServiceSMO;
-import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
+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.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;
@@ -34,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 {
@@ -49,7 +54,7 @@
private IVisitV1InnerServiceSMO visitV1InnerServiceSMOImpl;
@Autowired
- private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
+ private IPhotoSMO photoSMOImpl;
@Autowired
private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
@@ -64,7 +69,33 @@
private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
@Autowired
- private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+ 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";
@@ -87,224 +118,137 @@
}
@Override
+ @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));
- //鏄惁闇�瑕佸鏍�
- String isNeedReviewFlag = CommunitySettingFactory.getValue(reqJson.getString("communityId"), IS_NEED_REVIEW);
- //鏄惁鏈夌┖闂茶溅浣� false 鏈夌┖闂� true鏃犵┖闂�
- boolean freeSpace = false;
- //鏄惁瓒呰繃瑙勫畾娆℃暟
- boolean specifiedTimes = false;
- //鏄惁瀛樺湪杞﹁締
- boolean existCar = false;
- if (!StringUtils.isEmpty(isNeedReviewFlag) && isNeedReviewFlag.equals("true") && reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) {
- reqJson.put("state", "0"); //0琛ㄧず鏈鏍革紱1琛ㄧず瀹℃牳閫氳繃锛�2琛ㄧず瀹℃牳鎷掔粷
- } else {
- reqJson.put("state", "1");
- }
//闅忚浜烘暟
- if (reqJson.containsKey("entourage") && reqJson.getString("entourage").equals("")) {
+ if (StringUtil.isEmpty(reqJson.getString("entourage"))) {
reqJson.put("entourage", "0");
}
reqJson.put("recordState", "0");
- if (reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) {
- //鑾峰彇棰勭害杞﹀厤璐规椂闀跨殑鍊�
- String freeTime = CommunitySettingFactory.getValue(reqJson.getString("communityId"), CAR_FREE_TIME);
-
- if (StringUtil.isEmpty(freeTime)) {
- freeTime = "120";
- }
- Date time = DateUtil.getDateFromStringA(reqJson.getString("visitTime"));
- Calendar newTime = Calendar.getInstance();
- newTime.setTime(time);
- newTime.add(Calendar.MINUTE, Integer.parseInt(freeTime));//鏃ユ湡鍔犱笂鍒嗛挓
- Date newDate = newTime.getTime();
- String finishFreeTime = DateUtil.getFormatTimeString(newDate, DateUtil.DATE_FORMATE_STRING_A);
- reqJson.put("freeTime", finishFreeTime);
- if (!StringUtils.isEmpty(isNeedReviewFlag) && isNeedReviewFlag.equals("false")) { //涓嶉渶瑕佸鏍稿氨闅忔満鑷姩鍒嗛厤杞︿綅
- //鑾峰彇灏忓尯閰嶇疆閲岄厤缃殑鍋滆溅鍦篿d
- String parkingAreaId = CommunitySettingFactory.getValue(reqJson.getString("communityId"), ASCRIPTION_CAR_AREA_ID);
- if (StringUtil.isEmpty(parkingAreaId)) { //濡傛灉娌℃湁閰嶇疆鍋滆溅鍦篿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(parkingAreaId); //鍋滆溅鍦篿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);
- }
- }
- } else { //闇�瑕佸鏍稿氨鍦ㄥ鏍搁�氳繃鏃舵墠鍒嗛厤杞︿綅
- reqJson.put("psId", "-1");
- }
- //鏌ヨ棰勭害杞﹁締鐧昏娆℃暟
- String visitNumber = CommunitySettingFactory.getValue(reqJson.getString("communityId"), VISIT_NUMBER);
- if (StringUtil.isEmpty(visitNumber)) {
- visitNumber = "10000";
- }
- int number = Integer.parseInt(visitNumber);
-
- VisitDto visitDto = new VisitDto();
- //鏌ヨ褰撳ぉ杞﹁締鐧昏娆℃暟
- visitDto.setOwnerId(reqJson.getString("ownerId"));
- visitDto.setCarNumNoEmpty("1");
- visitDto.setSameDay("1");
- List<VisitDto> visitDtos = visitInnerServiceSMOImpl.queryVisits(visitDto);
- int count = visitDtos.size();
- //棰勭害杞﹁締鐧昏娆℃暟0涓嶅仛闄愬埗
- if (count >= number && number > 0) {
- if (!StringUtils.isEmpty(isNeedReviewFlag) && isNeedReviewFlag.equals("false")) {
- reqJson.put("state", "0");
- reqJson.put("psId", null);
- reqJson.put("freeTime", null);
- }
- specifiedTimes = true;
- }
- //鏍¢獙杞︾墝鍙锋槸鍚﹀瓨鍦�
- OwnerCarDto ownerCarDto1 = new OwnerCarDto();
- ownerCarDto1.setCommunityId(reqJson.getString("communityId"));
- ownerCarDto1.setCarNum(reqJson.getString("carNum"));
- int existCarCount = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto1);
- if (existCarCount > 0) {
- existCar = true;
- reqJson.put("psId", "-1");
- }
- }
- String result = "";
- if (existCar) {
- result = "璁垮淇℃伅鐧昏鎴愬姛,杞﹁締宸茬粡瀛樺湪棰勭害锛岃鎮ㄥ湪棰勭害鍒版湡鍚庯紝鍐嶆杩涜杞﹁締棰勭害锛岃阿璋紒";
- }
- if (specifiedTimes) {
- result = "璁垮淇℃伅鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曡嚜鍔ㄥ鏍革紒";
- }
- if (freeSpace) {
- result = "璁垮淇℃伅鐧昏鎴愬姛,褰撳墠鍋滆溅鍦哄凡鏃犵┖闂茶溅浣嶏紝鐧昏杞﹁締灏嗘殏鏃朵笉鑳借繘鍏ュ仠杞﹀満锛岃鎮ㄥ悎鐞嗗畨鎺掑嚭琛屻��";
- }
- reqJson.put("stateRemark", result);
- addVisit(reqJson);
- if (reqJson.containsKey("photo") && !StringUtils.isEmpty(reqJson.getString("photo"))) {
- if(reqJson.getString("photo").length()>512){ //璇存槑鏄浘鐗�
- FileDto fileDto = new FileDto();
- fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
- fileDto.setFileName(fileDto.getFileId());
- fileDto.setContext(reqJson.getString("photo"));
- fileDto.setSuffix("jpeg");
- fileDto.setCommunityId(reqJson.getString("communityId"));
- String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
- reqJson.put("photo", fileName);
-
- }
- JSONObject businessUnit = new JSONObject();
- businessUnit.put("fileRelId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_fileRelId));
- businessUnit.put("relTypeCd", "11000");
- businessUnit.put("saveWay", "table");
- businessUnit.put("objId", reqJson.getString("vId"));
- businessUnit.put("fileRealName", reqJson.getString("photo"));
- businessUnit.put("fileSaveName", reqJson.getString("photo"));
- FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
- fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
- }
- if ("1".equals(reqJson.getString("state"))
- && reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))
- && !existCar && !StringUtil.isEmpty(reqJson.getString("psId")) && !"-1".equals(reqJson.getString("psId"))) { //瀹℃牳閫氳繃涓旀湁杞︿綅灏辨洿鏂拌溅浣嶇姸鎬�
- ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
- parkingSpaceDto.setPsId(reqJson.getString("psId"));
- //鏌ヨ鍋滆溅浣�
- List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
- Assert.listOnlyOne(parkingSpaceDtos, "璁垮鐧昏,鏌ヨ鍋滆溅浣嶉敊璇紒");
- //娣诲姞杞﹁締淇℃伅
- OwnerCarPo ownerCarPo = new OwnerCarPo();
- ownerCarPo.setCarId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId));
- ownerCarPo.setOwnerId(reqJson.getString("ownerId"));
- ownerCarPo.setbId("-1");
- ownerCarPo.setCarNum(reqJson.getString("carNum"));
- ownerCarPo.setCarBrand("鏃狅紙棰勭害杞︼級");
- ownerCarPo.setCarType("9901");
- ownerCarPo.setCarColor("鏃狅紙棰勭害杞︼級");
- ownerCarPo.setPsId(reqJson.getString("psId"));
- ownerCarPo.setUserId(userId);
- ownerCarPo.setRemark("璁垮鐧昏棰勭害杞�");
- ownerCarPo.setCommunityId(reqJson.getString("communityId"));
- ownerCarPo.setStartTime(reqJson.getString("visitTime"));
- ownerCarPo.setEndTime(reqJson.getString("freeTime"));
- ownerCarPo.setState(OwnerCarDto.STATE_NORMAL); //1001 姝e父鐘舵�侊紝2002 杞︿綅閲婃斁娆犺垂鐘舵�� 3003 杞︿綅閲婃斁
- ownerCarPo.setCarTypeCd(OwnerCarDto.CAR_TYPE_TEMP); //1001 涓氫富杞﹁締 1002 鎴愬憳杞﹁締 1003 涓存椂杞�
- ownerCarPo.setMemberId(reqJson.getString("ownerId"));
- ownerCarPo.setLeaseType(OwnerCarDto.LEASE_TYPE_RESERVE); //H 鏈堢杞� S 鍑哄敭杞� I 鍐呴儴杞� NM 鍏嶈垂杞� R 棰勭害杞�
- ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo);
- //娣诲姞杞﹁締灞炴��
- OwnerCarAttrPo ownerCarAttrPo = new OwnerCarAttrPo();
- ownerCarAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_cartId));
- ownerCarAttrPo.setCarId(ownerCarPo.getCarId());
- ownerCarAttrPo.setCommunityId(ownerCarPo.getCommunityId());
- ownerCarAttrPo.setSpecCd("6443000036"); //6443000036涓氫富杞﹁締
- ownerCarAttrPo.setValue("true"); //棰勭害杞�
- ownerCarAttrPo.setbId("-1");
- ownerCarAttrInnerServiceSMOImpl.saveOwnerCarAttr(ownerCarAttrPo);
- //鏇存敼杞︿綅鐘舵��
- ParkingSpacePo parkingSpacePo = new ParkingSpacePo();
- parkingSpacePo.setPsId(reqJson.getString("psId"));
- parkingSpacePo.setState("H"); //杞︿綅鐘舵�� 鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F
- parkingSpaceInnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
- }
- if (existCar) {
- ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,杞﹁締宸茬粡瀛樺湪棰勭害锛岃鎮ㄥ湪棰勭害鍒版湡鍚庯紝鍐嶆杩涜杞﹁締棰勭害锛岃阿璋紒");
- context.setResponseEntity(responseEntity);
- return;
- }
- if (specifiedTimes) {
- ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曡嚜鍔ㄥ鏍革紒");
- context.setResponseEntity(responseEntity);
- return;
- }
- if (freeSpace) {
- ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,褰撳墠鍋滆溅鍦哄凡鏃犵┖闂茶溅浣嶏紝鐧昏杞﹁締灏嗘殏鏃朵笉鑳借繘鍏ュ仠杞﹀満锛岃鎮ㄥ悎鐞嗗畨鎺掑嚭琛屻��");
- context.setResponseEntity(responseEntity);
- return;
- }
- }
-
- /**
- * 娣诲姞灏忓尯淇℃伅
- *
- * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
- * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
- */
- public void addVisit(JSONObject paramInJson) {
-
- JSONObject businessVisit = new JSONObject();
- businessVisit.putAll(paramInJson);
-
- VisitPo visitPo = BeanConvertUtil.covertBean(businessVisit, VisitPo.class);
+ VisitPo visitPo = BeanConvertUtil.covertBean(reqJson, VisitPo.class);
+ visitPo.setState(VisitDto.STATE_W);
+ visitPo.setUserId(userId);
int flag = visitV1InnerServiceSMOImpl.saveVisit(visitPo);
if (flag < 1) {
throw new CmdException("淇濆瓨璁垮澶辫触");
}
+ photoSMOImpl.savePhoto(reqJson, reqJson.getString("vId"), reqJson.getString("communityId"));
+
+ // 鏄惁闇�瑕佸鏍�
+ 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, 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(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