| | |
| | | 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; |
| | |
| | | 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 { |
| | |
| | | @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; |
| | | |
| | | @Autowired |
| | | private IOaWorkflowXmlInnerServiceSMO oaWorkflowXmlInnerServiceSMOImpl; |
| | | |
| | | public static final String CODE_PREFIX_ID = "10"; |
| | | |
| | | //键 |
| | | public static final String IS_NEED_REVIEW = "IS_NEED_REVIEW"; |
| | |
| | | @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"))) { |
| | |
| | | photoSMOImpl.savePhoto(reqJson, reqJson.getString("vId"), reqJson.getString("communityId")); |
| | | |
| | | // 是否需要审核 |
| | | 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 void 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) { |
| | | 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; |
| | | |
| | | } |
| | | |
| | | |