From c43ee76a7bb8279c854bc27886666a72a7808151 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 26 十二月 2023 15:52:35 +0800
Subject: [PATCH] 加入工作单功能
---
service-oa/src/main/java/com/java110/oa/cmd/work/SaveWorkPoolCmd.java | 250 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 246 insertions(+), 4 deletions(-)
diff --git a/service-oa/src/main/java/com/java110/oa/cmd/work/SaveWorkPoolCmd.java b/service-oa/src/main/java/com/java110/oa/cmd/work/SaveWorkPoolCmd.java
index 493e1f8..f0223ed 100644
--- a/service-oa/src/main/java/com/java110/oa/cmd/work/SaveWorkPoolCmd.java
+++ b/service-oa/src/main/java/com/java110/oa/cmd/work/SaveWorkPoolCmd.java
@@ -15,6 +15,7 @@
*/
package com.java110.oa.cmd.work;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
@@ -23,15 +24,29 @@
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.oa.IWorkPoolV1InnerServiceSMO;
+import com.java110.dto.user.UserDto;
+import com.java110.dto.workCopy.WorkCopyDto;
+import com.java110.dto.workCycle.WorkCycleDto;
+import com.java110.dto.workPool.WorkPoolDto;
+import com.java110.dto.workPoolFile.WorkPoolFileDto;
+import com.java110.dto.workTask.WorkTaskDto;
+import com.java110.intf.oa.*;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.po.workCopy.WorkCopyPo;
+import com.java110.po.workCycle.WorkCyclePo;
import com.java110.po.workPool.WorkPoolPo;
+import com.java110.po.workPoolContent.WorkPoolContentPo;
+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.BeanConvertUtil;
+import com.java110.utils.util.*;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
+import java.util.Date;
+import java.util.List;
/**
* 绫昏〃杩帮細淇濆瓨
@@ -53,6 +68,36 @@
@Autowired
private IWorkPoolV1InnerServiceSMO workPoolV1InnerServiceSMOImpl;
+ @Autowired
+ private IWorkPoolContentV1InnerServiceSMO workPoolContentV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkPoolFileV1InnerServiceSMO workPoolFileV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkCycleV1InnerServiceSMO workCycleV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkTaskV1InnerServiceSMO workTaskV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkCopyV1InnerServiceSMO workCopyV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+ /**
+ * {"workName":"鍏充簬鎵洩浠诲姟","workTypes":[],"wtId":"102023122586210045",
+ * "workCycle":"1001","startTime":"2023-12-26 14:20:17","endTime":"2023-12-27 14:20:17",
+ * "staffs":[{"staffId":"302023071089700002","staffName":"ddysdd"}],"copyStaffs":[],"copyName":"",
+ * "pathUrl":"","content":"","period":"",
+ * "months":[],"days":[],"workdays":[],
+ * "hours":"24","context":"<p>璇峰ぇ瀹跺垵闆伐浣滐紝绉瀬瀹屾垚</p>"}
+ *
+ * @param event 浜嬩欢瀵硅薄
+ * @param cmdDataFlowContext 璇锋眰鎶ユ枃鏁版嵁
+ * @param reqJson
+ */
@Override
public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
@@ -62,21 +107,218 @@
Assert.hasKeyAndValue(reqJson, "startTime", "璇锋眰鎶ユ枃涓湭鍖呭惈startTime");
Assert.hasKeyAndValue(reqJson, "endTime", "璇锋眰鎶ユ枃涓湭鍖呭惈endTime");
String storeId = CmdContextUtils.getStoreId(cmdDataFlowContext);
- reqJson.put("storeId",storeId);
+ reqJson.put("storeId", storeId);
+
+ if (reqJson.containsKey("staffs")) {
+ throw new CmdException("鏈寘鍚鐞嗕汉");
+ }
+
+ JSONArray staffs = reqJson.getJSONArray("staffs");
+ if (staffs == null || staffs.isEmpty()) {
+ throw new CmdException("鏈寘鍚鐞嗕汉");
+ }
+
+ if (WorkPoolDto.WORK_CYCLE_ONE.equals(reqJson.getString("workCycle"))) {
+ return;
+ }
+ Assert.hasKeyAndValue(reqJson, "period", "鍛ㄦ湡鎬у伐鍗曟湭鍖呭惈鍛ㄦ湡");
+ Assert.hasKeyAndValue(reqJson, "hours", "鍛ㄦ湡鎬у伐鍗曟湭鍖呭惈瀹屾垚灏忔椂");
+
+ if (WorkCycleDto.PERIOD_MONTH_DAY.equals(reqJson.getString("period"))) {
+ JSONArray months = reqJson.getJSONArray("months");
+ JSONArray days = reqJson.getJSONArray("days");
+
+ if (ListUtil.isNull(months) || ListUtil.isNull(days)) {
+ throw new CmdException("鏈寘鍚湀/澶�");
+ }
+ }
+
+ if (WorkCycleDto.PERIOD_MONTH_WORKDAY.equals(reqJson.getString("period"))) {
+ JSONArray workdays = reqJson.getJSONArray("workdays");
+ if (ListUtil.isNull(workdays)) {
+ throw new CmdException("鏈寘鍚寜鍛�");
+ }
+ }
+
+
}
@Override
@Java110Transactional
public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+ String userId = CmdContextUtils.getUserId(cmdDataFlowContext);
+ UserDto userDto = new UserDto();
+ userDto.setUserId(userId);
+ List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+
+ Assert.listOnlyOne(userDtos, "鐢ㄦ埛鏈櫥褰�");
+
WorkPoolPo workPoolPo = BeanConvertUtil.covertBean(reqJson, WorkPoolPo.class);
workPoolPo.setWorkId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+ workPoolPo.setCreateUserId(userDtos.get(0).getUserId());
+ workPoolPo.setCreateUserName(userDtos.get(0).getName());
+ workPoolPo.setCreateUserTel(userDtos.get(0).getTel());
+ workPoolPo.setState(WorkPoolDto.STATE_WAIT);
int flag = workPoolV1InnerServiceSMOImpl.saveWorkPool(workPoolPo);
if (flag < 1) {
throw new CmdException("淇濆瓨鏁版嵁澶辫触");
}
+ //todo 淇濆瓨 宸ヤ綔鍗曞唴瀹�
+ saveContent(workPoolPo, reqJson, userDtos.get(0));
+
+ //todo 淇濆瓨 鎶勯�佷汉
+ saveCopyStaff(workPoolPo, reqJson, userDtos.get(0));
+
+ //todo 淇濆瓨鍛ㄦ湡
+ saveWorkCycle(workPoolPo, reqJson, userDtos.get(0));
+
+
+ // todo 淇濆瓨 宸ュ崟浠诲姟
+ saveWorkTask(workPoolPo, reqJson, userDtos.get(0));
+
+
cmdDataFlowContext.setResponseEntity(ResultVo.success());
}
+
+ private void saveWorkTask(WorkPoolPo workPoolPo, JSONObject reqJson, UserDto userDto) {
+ JSONArray staffs = reqJson.getJSONArray("staffs");
+ String startTime = reqJson.getString("startTime");
+ String endTime = reqJson.getString("endTime");
+
+ if (WorkPoolDto.WORK_CYCLE_CYCLE.equals(workPoolPo.getWorkCycle())) {
+ Date sTime = DateUtil.getDateFromStringA(startTime);
+ endTime = DateUtil.getAddHoursStringA(sTime, reqJson.getIntValue("hours"));
+ }
+
+
+ for (int staffIndex = 0; staffIndex < staffs.size(); staffIndex++) {
+ WorkTaskPo workTaskPo = new WorkTaskPo();
+ workTaskPo.setWorkId(workPoolPo.getWorkId());
+ workTaskPo.setState(WorkTaskDto.STATE_DOING);
+ workTaskPo.setTaskId(GenerateCodeFactory.getGeneratorId("11"));
+ workTaskPo.setStoreId(workPoolPo.getStoreId());
+ workTaskPo.setCommunityId(workPoolPo.getCommunityId());
+ workTaskPo.setStartTime(startTime);
+ workTaskPo.setEndTime(endTime);
+ workTaskPo.setStaffId(staffs.getJSONObject(staffIndex).getString("staffId"));
+ workTaskPo.setStaffName(staffs.getJSONObject(staffIndex).getString("staffName"));
+ int flag = workTaskV1InnerServiceSMOImpl.saveWorkTask(workTaskPo);
+
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨鏁版嵁澶辫触");
+ }
+
+ if(StringUtil.isEmpty(reqJson.getString("pathUrl"))){
+ continue;
+ }
+
+ WorkPoolFilePo workPoolFilePo = new WorkPoolFilePo();
+ workPoolFilePo.setCommunityId(workPoolPo.getCommunityId());
+ workPoolFilePo.setFileType(WorkPoolFileDto.FILE_TYPE_START);
+ workPoolFilePo.setFileId(GenerateCodeFactory.getGeneratorId("11"));
+ workPoolFilePo.setWorkId(workPoolPo.getWorkId());
+ workPoolFilePo.setTaskId(workTaskPo.getTaskId());
+ workPoolFilePo.setPathUrl(reqJson.getString("pathUrl"));
+ workPoolFilePo.setStoreId(workPoolPo.getStoreId());
+ workPoolFileV1InnerServiceSMOImpl.saveWorkPoolFile(workPoolFilePo);
+ }
+ }
+
+ private void saveWorkCycle(WorkPoolPo workPoolPo, JSONObject reqJson, UserDto userDto) {
+
+ JSONArray staffs = reqJson.getJSONArray("staffs");
+ for (int staffIndex = 0; staffIndex < staffs.size(); staffIndex++) {
+ WorkCyclePo workCyclePo = new WorkCyclePo();
+ workCyclePo.setWorkCycle(workPoolPo.getWorkCycle());
+ workCyclePo.setWorkId(workPoolPo.getWorkId());
+ workCyclePo.setCommunityId(workPoolPo.getCommunityId());
+ workCyclePo.setStoreId(workCyclePo.getStoreId());
+ workCyclePo.setBeforeTime("30");
+ workCyclePo.setCycleId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+ workCyclePo.setPeriod(reqJson.getString("period"));
+ workCyclePo.setHours(reqJson.getString("hours"));
+ if (WorkCycleDto.PERIOD_MONTH_DAY.equals(reqJson.getString("period"))) {
+ JSONArray months = reqJson.getJSONArray("months");
+ JSONArray days = reqJson.getJSONArray("days");
+ String monthStr = "";
+ for (int monthIndex = 0; monthIndex < months.size(); monthIndex++) {
+ monthStr += (months.getString(monthIndex) + ",");
+ }
+ String dayStr = "";
+ for (int dayIndex = 0; dayIndex < days.size(); dayIndex++) {
+ dayStr += (days.getString(dayIndex) + ",");
+ }
+ workCyclePo.setPeriodMonth(monthStr);
+ workCyclePo.setPeriodDay(dayStr);
+ }
+ if (WorkCycleDto.PERIOD_MONTH_WORKDAY.equals(reqJson.getString("period"))) {
+ JSONArray workdays = reqJson.getJSONArray("workdays");
+ String workdaysStr = "";
+ for (int workdaysIndex = 0; workdaysIndex < workdays.size(); workdaysIndex++) {
+ workdaysStr += (workdays.getString(workdaysIndex) + ",");
+ }
+ workCyclePo.setPeriodWorkday(workdaysStr);
+ }
+ workCyclePo.setStaffId(staffs.getJSONObject(staffIndex).getString("staffId"));
+ workCyclePo.setStaffName(staffs.getJSONObject(staffIndex).getString("staffName"));
+ int flag = workCycleV1InnerServiceSMOImpl.saveWorkCycle(workCyclePo);
+
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨鏁版嵁澶辫触");
+ }
+ }
+
+ }
+
+ /**
+ * 淇濆瓨鎶勯�佷汉
+ *
+ * @param workPoolPo
+ * @param reqJson
+ * @param userDto
+ */
+ private void saveCopyStaff(WorkPoolPo workPoolPo, JSONObject reqJson, UserDto userDto) {
+
+ if (!reqJson.containsKey("copyStaffs")) {
+ return;
+ }
+
+ JSONArray copyStaffs = reqJson.getJSONArray("copyStaffs");
+ if (ListUtil.isNull(copyStaffs)) {
+ return;
+ }
+ WorkCopyPo workCopyPo = null;
+ for (int copyIndex = 0; copyIndex < copyStaffs.size(); copyIndex++) {
+ workCopyPo = new WorkCopyPo();
+ workCopyPo.setCopyId(GenerateCodeFactory.getGeneratorId("11"));
+ workCopyPo.setStaffId(copyStaffs.getJSONObject(copyIndex).getString("staffId"));
+ workCopyPo.setStaffName(copyStaffs.getJSONObject(copyIndex).getString("staffName"));
+ workCopyPo.setStoreId(reqJson.getString("storeId"));
+ workCopyPo.setWorkId(workPoolPo.getWorkId());
+ workCopyPo.setCommunityId(reqJson.getString("communityId"));
+ workCopyPo.setState(WorkCopyDto.STATE_DOING);
+ workCopyV1InnerServiceSMOImpl.saveWorkCopy(workCopyPo);
+ }
+ }
+
+ /**
+ * 淇濆瓨鍐呭
+ *
+ * @param workPoolPo
+ * @param reqJson
+ * @param userDto
+ */
+ private void saveContent(WorkPoolPo workPoolPo, JSONObject reqJson, UserDto userDto) {
+
+ WorkPoolContentPo workPoolContentPo = new WorkPoolContentPo();
+ workPoolContentPo.setContentId(GenerateCodeFactory.getGeneratorId("11"));
+ workPoolContentPo.setContent(reqJson.getString("content"));
+ workPoolContentPo.setWorkId(workPoolPo.getWorkId());
+ workPoolContentPo.setCommunityId(reqJson.getString("communityId"));
+ workPoolContentPo.setStoreId(reqJson.getString("storeId"));
+ workPoolContentV1InnerServiceSMOImpl.saveWorkPoolContent(workPoolContentPo);
+ }
}
--
Gitblit v1.8.0