| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- package com.java110.community.cmd.visit;
- 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.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.*;
- 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.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;
- import com.java110.utils.util.BeanConvertUtil;
- 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.util.*;
- @Java110Cmd(serviceCode = "visit.saveVisit")
- public class SaveVisitCmd extends Cmd {
- @Autowired
- private IVisitInnerServiceSMO visitInnerServiceSMOImpl;
- @Autowired
- private IVisitV1InnerServiceSMO visitV1InnerServiceSMOImpl;
- @Autowired
- private IPhotoSMO photoSMOImpl;
- @Autowired
- 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;
- @Autowired
- private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
- public static final String CODE_PREFIX_ID = "10";
- //键
- public static final String IS_NEED_REVIEW = "IS_NEED_REVIEW";
- //键
- public static final String VISIT_NUMBER = "VISIT_NUMBER";
- //键
- public static final String CAR_FREE_TIME = "CAR_FREE_TIME";
- //键
- public static final String ASCRIPTION_CAR_AREA_ID = "ASCRIPTION_CAR_AREA_ID";
- @Override
- public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
- Assert.hasKeyAndValue(reqJson, "vName", "必填,请填写访客姓名");
- Assert.hasKeyAndValue(reqJson, "visitGender", "必填,请填写访客姓名");
- Assert.hasKeyAndValue(reqJson, "phoneNumber", "必填,请填写访客联系方式");
- Assert.hasKeyAndValue(reqJson, "visitTime", "必填,请填写访客拜访时间");
- }
- @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));
- //随行人数
- if (StringUtil.isEmpty(reqJson.getString("entourage"))) {
- reqJson.put("entourage", "0");
- }
- reqJson.put("recordState", "0");
- 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", userId); // 这里要求流程 下一处理人必须要指定
- 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;
- }
- }
|