|
@@ -0,0 +1,225 @@
|
|
|
|
|
+package com.java110.oa.cmd.work;
|
|
|
|
|
+
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
+import com.java110.core.annotation.Java110Cmd;
|
|
|
|
|
+import com.java110.core.context.CmdContextUtils;
|
|
|
|
|
+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.GenerateCodeFactory;
|
|
|
|
|
+import com.java110.dto.user.UserDto;
|
|
|
|
|
+import com.java110.dto.workEvent.WorkEventDto;
|
|
|
|
|
+import com.java110.dto.workPool.WorkPoolDto;
|
|
|
|
|
+import com.java110.dto.workPoolFile.WorkPoolFileDto;
|
|
|
|
|
+import com.java110.dto.workTask.WorkTaskDto;
|
|
|
|
|
+import com.java110.intf.oa.IWorkEventV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.oa.IWorkPoolFileV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.oa.IWorkPoolV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.oa.IWorkTaskV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.user.IUserV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.po.workEvent.WorkEventPo;
|
|
|
|
|
+import com.java110.po.workPool.WorkPoolPo;
|
|
|
|
|
+import com.java110.po.workPoolFile.WorkPoolFilePo;
|
|
|
|
|
+import com.java110.po.workTask.WorkTaskPo;
|
|
|
|
|
+import com.java110.utils.exception.CmdException;
|
|
|
|
|
+import com.java110.utils.util.Assert;
|
|
|
|
|
+import com.java110.utils.util.ListUtil;
|
|
|
|
|
+import com.java110.utils.util.StringUtil;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+
|
|
|
|
|
+import java.text.ParseException;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+@Java110Cmd(serviceCode = "work.finishWorkTask")
|
|
|
|
|
+public class FinishWorkTaskCmd extends Cmd {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IWorkTaskV1InnerServiceSMO workTaskV1InnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IWorkEventV1InnerServiceSMO workEventV1InnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IWorkPoolV1InnerServiceSMO workPoolV1InnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IWorkPoolFileV1InnerServiceSMO workPoolFileV1InnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
|
|
|
|
|
+
|
|
|
|
|
+ Assert.hasKeyAndValue(reqJson, "taskId", "未包含任务");
|
|
|
|
|
+ Assert.hasKeyAndValue(reqJson, "auditCode", "未包含状态");
|
|
|
|
|
+ Assert.hasKeyAndValue(reqJson, "auditMessage", "未包含说明");
|
|
|
|
|
+
|
|
|
|
|
+ if ("T".equals(reqJson.getString("auditCode"))) {
|
|
|
|
|
+ Assert.hasKeyAndValue(reqJson, "taskId", "未包含转单人");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String userId = CmdContextUtils.getUserId(context);
|
|
|
|
|
+
|
|
|
|
|
+ WorkTaskDto workTaskDto = new WorkTaskDto();
|
|
|
|
|
+ workTaskDto.setTaskId(reqJson.getString("taskId"));
|
|
|
|
|
+ workTaskDto.setStaffId(userId);
|
|
|
|
|
+ List<WorkTaskDto> workTaskDtos = workTaskV1InnerServiceSMOImpl.queryWorkTasks(workTaskDto);
|
|
|
|
|
+
|
|
|
|
|
+ if (ListUtil.isNull(workTaskDtos)) {
|
|
|
|
|
+ throw new CmdException("工作单不在你的工位,您无权处理");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
|
|
|
|
|
+
|
|
|
|
|
+ String storeId = CmdContextUtils.getStoreId(context);
|
|
|
|
|
+
|
|
|
|
|
+ WorkTaskDto workTaskDto = new WorkTaskDto();
|
|
|
|
|
+ workTaskDto.setTaskId(reqJson.getString("taskId"));
|
|
|
|
|
+ workTaskDto.setStoreId(storeId);
|
|
|
|
|
+ List<WorkTaskDto> workTaskDtos = workTaskV1InnerServiceSMOImpl.queryWorkTasks(workTaskDto);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //todo 转单
|
|
|
|
|
+ if ("T".equals(reqJson.getString("auditCode"))) {
|
|
|
|
|
+ doTransfor(reqJson, workTaskDtos.get(0));
|
|
|
|
|
+ } else if ("C".equals(reqJson.getString("auditCode"))) {
|
|
|
|
|
+ doFinish(reqJson, workTaskDtos.get(0));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!reqJson.containsKey("pathUrl")) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String pathUrl = reqJson.getString("pathUrl");
|
|
|
|
|
+ if (StringUtil.isEmpty(pathUrl)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WorkPoolFilePo workPoolFilePo = new WorkPoolFilePo();
|
|
|
|
|
+ workPoolFilePo.setCommunityId(workTaskDtos.get(0).getCommunityId());
|
|
|
|
|
+ workPoolFilePo.setFileType(WorkPoolFileDto.FILE_TYPE_END);
|
|
|
|
|
+ workPoolFilePo.setFileId(GenerateCodeFactory.getGeneratorId("11"));
|
|
|
|
|
+ workPoolFilePo.setWorkId(workTaskDtos.get(0).getWorkId());
|
|
|
|
|
+ workPoolFilePo.setTaskId(workTaskDtos.get(0).getTaskId());
|
|
|
|
|
+ workPoolFilePo.setPathUrl(reqJson.getString("pathUrl"));
|
|
|
|
|
+ workPoolFilePo.setStoreId(workTaskDtos.get(0).getStoreId());
|
|
|
|
|
+ workPoolFileV1InnerServiceSMOImpl.saveWorkPoolFile(workPoolFilePo);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 完成工作单
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param reqJson
|
|
|
|
|
+ * @param workTaskDto
|
|
|
|
|
+ */
|
|
|
|
|
+ private void doFinish(JSONObject reqJson, WorkTaskDto workTaskDto) {
|
|
|
|
|
+
|
|
|
|
|
+ //todo 完成任务
|
|
|
|
|
+
|
|
|
|
|
+ WorkTaskPo workTaskPo = new WorkTaskPo();
|
|
|
|
|
+ workTaskPo.setState(WorkPoolDto.STATE_COMPLETE);
|
|
|
|
|
+ workTaskPo.setTaskId(workTaskDto.getTaskId());
|
|
|
|
|
+ workTaskPo.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ workTaskV1InnerServiceSMOImpl.updateWorkTask(workTaskPo);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //todo 查询 工作单
|
|
|
|
|
+ WorkPoolDto workPoolDto = new WorkPoolDto();
|
|
|
|
|
+ workPoolDto.setWorkId(workTaskDto.getWorkId());
|
|
|
|
|
+ workPoolDto.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ List<WorkPoolDto> workPoolDtos = workPoolV1InnerServiceSMOImpl.queryWorkPools(workPoolDto);
|
|
|
|
|
+
|
|
|
|
|
+ Assert.listOnlyOne(workPoolDtos, "工作单不存在");
|
|
|
|
|
+
|
|
|
|
|
+ String preStaffId = workPoolDtos.get(0).getCreateUserId();
|
|
|
|
|
+ String preStaffName = workPoolDtos.get(0).getCreateUserName();
|
|
|
|
|
+
|
|
|
|
|
+ WorkEventDto workEventDto = new WorkEventDto();
|
|
|
|
|
+ workEventDto.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ workEventDto.setTaskId(workTaskDto.getTaskId());
|
|
|
|
|
+ workEventDto.setWorkId(workTaskDto.getWorkId());
|
|
|
|
|
+ workEventDto.setOrderByDesc("desc");
|
|
|
|
|
+ List<WorkEventDto> workEventDtos = workEventV1InnerServiceSMOImpl.queryWorkEvents(workEventDto);
|
|
|
|
|
+ if(!ListUtil.isNull(workEventDtos)){
|
|
|
|
|
+ preStaffId = workEventDtos.get(0).getStaffId();
|
|
|
|
|
+ preStaffName = workEventDtos.get(0).getStaffName();
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //todo 保存事件
|
|
|
|
|
+ WorkEventPo workEventPo = new WorkEventPo();
|
|
|
|
|
+ workEventPo.setWorkId(workTaskDto.getWorkId());
|
|
|
|
|
+ workEventPo.setEventId(GenerateCodeFactory.getGeneratorId("11"));
|
|
|
|
|
+ workEventPo.setCommunityId(workTaskDto.getCommunityId());
|
|
|
|
|
+ workEventPo.setRemark(reqJson.getString("auditMessage"));
|
|
|
|
|
+ workEventPo.setStaffId(workTaskDto.getStaffId());
|
|
|
|
|
+ workEventPo.setPreStaffId(preStaffId);
|
|
|
|
|
+ workEventPo.setPreStaffName(preStaffName);
|
|
|
|
|
+ workEventPo.setStaffName(workTaskDto.getStaffName());
|
|
|
|
|
+ workEventPo.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ workEventPo.setTaskId(workTaskDto.getTaskId());
|
|
|
|
|
+ workEventV1InnerServiceSMOImpl.saveWorkEvent(workEventPo);
|
|
|
|
|
+
|
|
|
|
|
+ //todo 查询 工单任务
|
|
|
|
|
+
|
|
|
|
|
+ WorkTaskDto tmpWorkTaskDto = new WorkTaskDto();
|
|
|
|
|
+ tmpWorkTaskDto.setWorkId(workTaskDto.getWorkId());
|
|
|
|
|
+ tmpWorkTaskDto.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ tmpWorkTaskDto.setState(WorkTaskDto.STATE_WAIT);
|
|
|
|
|
+ int waitCount = workTaskV1InnerServiceSMOImpl.queryWorkTasksCount(tmpWorkTaskDto);
|
|
|
|
|
+ WorkPoolPo workPoolPo = new WorkPoolPo();
|
|
|
|
|
+ workPoolPo.setWorkId(workTaskDto.getWorkId());
|
|
|
|
|
+ if (waitCount > 0) {
|
|
|
|
|
+ workPoolPo.setState(WorkPoolDto.STATE_DOING);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ workPoolPo.setState(WorkPoolDto.STATE_COMPLETE);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ workPoolV1InnerServiceSMOImpl.updateWorkPool(workPoolPo);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void doTransfor(JSONObject reqJson, WorkTaskDto workTaskDto) {
|
|
|
|
|
+
|
|
|
|
|
+ UserDto userDto = new UserDto();
|
|
|
|
|
+ userDto.setUserId(reqJson.getString("staffId"));
|
|
|
|
|
+
|
|
|
|
|
+ List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
|
|
|
|
|
+
|
|
|
|
|
+ //todo 完成任务
|
|
|
|
|
+
|
|
|
|
|
+ WorkTaskPo workTaskPo = new WorkTaskPo();
|
|
|
|
|
+ workTaskPo.setState(WorkPoolDto.STATE_WAIT);
|
|
|
|
|
+ workTaskPo.setTaskId(workTaskDto.getTaskId());
|
|
|
|
|
+ workTaskPo.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ workTaskPo.setStaffId(userDtos.get(0).getUserId());
|
|
|
|
|
+ workTaskPo.setStaffName(userDtos.get(0).getName());
|
|
|
|
|
+ workTaskV1InnerServiceSMOImpl.updateWorkTask(workTaskPo);
|
|
|
|
|
+
|
|
|
|
|
+ //todo 查询 工作单
|
|
|
|
|
+ WorkPoolDto workPoolDto = new WorkPoolDto();
|
|
|
|
|
+ workPoolDto.setWorkId(workTaskDto.getWorkId());
|
|
|
|
|
+ workPoolDto.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ List<WorkPoolDto> workPoolDtos = workPoolV1InnerServiceSMOImpl.queryWorkPools(workPoolDto);
|
|
|
|
|
+
|
|
|
|
|
+ Assert.listOnlyOne(workPoolDtos, "工作单不存在");
|
|
|
|
|
+
|
|
|
|
|
+ WorkEventPo workEventPo = new WorkEventPo();
|
|
|
|
|
+ workEventPo.setWorkId(workTaskDto.getWorkId());
|
|
|
|
|
+ workEventPo.setEventId(GenerateCodeFactory.getGeneratorId("11"));
|
|
|
|
|
+ workEventPo.setCommunityId(workTaskDto.getCommunityId());
|
|
|
|
|
+ workEventPo.setRemark(reqJson.getString("auditMessage") + ";转单给" + userDtos.get(0).getName());
|
|
|
|
|
+ workEventPo.setStaffId(workTaskDto.getStaffId());
|
|
|
|
|
+ workEventPo.setPreStaffId(workPoolDtos.get(0).getCreateUserId());
|
|
|
|
|
+ workEventPo.setPreStaffName(workPoolDtos.get(0).getCreateUserName());
|
|
|
|
|
+ workEventPo.setStaffName(workTaskDto.getStaffName());
|
|
|
|
|
+ workEventPo.setStoreId(workTaskDto.getStoreId());
|
|
|
|
|
+ workEventPo.setTaskId(workTaskDto.getTaskId());
|
|
|
|
|
+ workEventV1InnerServiceSMOImpl.saveWorkEvent(workEventPo);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|