diff --git a/mailbox-lan/pom.xml b/mailbox-lan/pom.xml
index 443425d..dda6e1b 100644
--- a/mailbox-lan/pom.xml
+++ b/mailbox-lan/pom.xml
@@ -44,12 +44,6 @@
tongweb-spring-boot-starter-3.x
-
- org.springframework.boot
- spring-boot-devtools
- true
-
-
org.projectlombok
lombok
@@ -139,6 +133,12 @@
2.2.0-M1
provided
+
+ com.aliyun
+ alibabacloud-dysmsapi20170525
+ 2.0.24
+ compile
+
diff --git a/mailbox-lan/sql/0318.sql b/mailbox-lan/sql/0318.sql
new file mode 100644
index 0000000..a7e4788
--- /dev/null
+++ b/mailbox-lan/sql/0318.sql
@@ -0,0 +1,4 @@
+ALTER TABLE "mailbox"."mail_flow"
+ ADD COLUMN "remark" text;
+
+COMMENT ON COLUMN "mailbox"."mail_flow"."remark" IS '备注';
\ No newline at end of file
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/controller/MailController.java b/mailbox-lan/src/main/java/com/biutag/lan/controller/MailController.java
index 8c41ef6..9ab1241 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/controller/MailController.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/controller/MailController.java
@@ -1,9 +1,11 @@
package com.biutag.lan.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.biutag.aop.NotPower;
import com.biutag.core.AjaxResult;
+import com.biutag.lan.domain.bo.CoHandlingReq;
import com.biutag.lan.domain.bo.FlowAction;
import com.biutag.lan.domain.bo.InvalidCompletion;
import com.biutag.lan.domain.bo.MailOuter;
@@ -62,4 +64,15 @@ public class MailController {
return AjaxResult.success(mailService.invalidCompletion(completion));
}
+ /**
+ * 编辑协办民警
+ * @param coHandlingReq
+ * @return
+ */
+ @NotPower
+ @PostMapping("coHandling/add")
+ public AjaxResult addCoHandling(@RequestBody CoHandlingReq coHandlingReq) {
+ return AjaxResult.success(mailService.saveCoHandling(coHandlingReq));
+ }
+
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/domain/MailFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/domain/MailFlow.java
index 02030fc..62de376 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/domain/MailFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/domain/MailFlow.java
@@ -83,4 +83,9 @@ public class MailFlow {
*/
private Long limitedTime;
+ /**
+ * 备注
+ */
+ private String remark;
+
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/domain/bo/CoHandlingReq.java b/mailbox-lan/src/main/java/com/biutag/lan/domain/bo/CoHandlingReq.java
new file mode 100644
index 0000000..fcdada4
--- /dev/null
+++ b/mailbox-lan/src/main/java/com/biutag/lan/domain/bo/CoHandlingReq.java
@@ -0,0 +1,27 @@
+package com.biutag.lan.domain.bo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Setter
+@Getter
+public class CoHandlingReq {
+
+ private String mailId;
+
+ private List polices;
+
+ @Setter
+ @Getter
+ public static class Police {
+
+ private String empNo;
+
+ private String name;
+
+ private String mobile;
+
+ }
+}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailOuter.java b/mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailOuter.java
index 68c88e0..7360aaa 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailOuter.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailOuter.java
@@ -24,6 +24,7 @@ public class MailOuter {
* 联系人姓名
*/
@NotBlank(message = "请输入联系人姓名")
+ @Length(min = 2, max = 20, message = "请输入正确的联系人姓名(长度为2-20字)")
private String contactName;
/**
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/enums/WorkType.java b/mailbox-lan/src/main/java/com/biutag/lan/enums/WorkType.java
index b60ba80..a649be1 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/enums/WorkType.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/enums/WorkType.java
@@ -10,6 +10,9 @@ public enum WorkType {
extension_approval,
// 协办
- co_handling;
+ co_handling,
+
+ // 次责单位
+ secondary;
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/Flow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/Flow.java
index 3abc4e3..ced0e66 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/Flow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/Flow.java
@@ -1,7 +1,9 @@
package com.biutag.lan.flow;
import com.alibaba.fastjson2.JSONObject;
+import com.biutag.exception.BusinessException;
import com.biutag.lan.domain.FlowNode;
+import com.biutag.lan.domain.Mail;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;
@@ -28,6 +30,13 @@ public abstract class Flow {
return this;
}
+ public boolean valid(Mail mail) {
+ if (!mail.getFlowKey().equals(flowNode.getKey())) {
+ throw new BusinessException("该信件已被其他专班处理,请刷新后重试");
+ }
+ return true;
+ }
+
public abstract Flow next(String nextActionKey, String mailId, JSONObject data);
}
\ No newline at end of file
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstApprovalFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstApprovalFlow.java
index 2775a50..b480424 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstApprovalFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstApprovalFlow.java
@@ -63,6 +63,8 @@ public class FirstApprovalFlow extends Flow {
workService.updateDoneByRole(mailId, FlowNameEnum.PENDING_APPROVAL.getDoneName());
// 更新信件(信件已办结)
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
Boolean problemSolvingStatus = data.getBoolean("problemSolvingStatus");
String satisfactionStatus = data.getString("satisfactionStatus");
mail.setUpdateTime(now)
@@ -105,6 +107,8 @@ public class FirstApprovalFlow extends Flow {
// 更新已办
workService.updateDoneByRole(mailId, FlowNameEnum.MAIL_RETURN.getDoneName());
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstDistributeFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstDistributeFlow.java
index 770e935..d47b9b3 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstDistributeFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstDistributeFlow.java
@@ -45,31 +45,35 @@ public class FirstDistributeFlow extends Flow {
Assert.notNull(mainDeptId, "未选择主办层级");
LocalDateTime now = LocalDateTime.now();
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
// 将我的工作待办改成已办
workService.updateDoneByRole(mailId, FlowNameEnum.PENDING_DISTRIBUTE.getDoneName());
-
- JSONObject firstDistributeInfo = JSONObject.of("mainDept", JSONObject.of("id", mainDeptId));
+ // 更新信件
+ DeptVo deptVo = deptService.detail(mainDeptId);
+ JSONObject firstDistributeInfo = JSONObject.of("mainDept", JSONObject.of("id", mainDeptId, "name", deptVo.getName()));
// 下发信件(主责单位)
workService.saveOrUpdate(mail, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mainDeptId, now, true, FlowNameEnum.PENDING_SIGN.getName());
Integer secondDeptId1 = data.getInteger("secondDeptId1");
if (Objects.nonNull(secondDeptId1)) {
+ DeptVo secondDept = deptService.detail(secondDeptId1);
// 下发信件(次责单位1)
workService.saveOrUpdate(mail, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), secondDeptId1, now, false,
FlowNameEnum.PENDING_SIGN_CO.getName(),
FlowNodeEnum.SECOND_SIGN.getKey());
- firstDistributeInfo.put("secondDept1", JSONObject.of("id", secondDeptId1));
+ firstDistributeInfo.put("secondDept1", JSONObject.of("id", secondDeptId1, "name", secondDept.getName()));
}
Integer secondDeptId2 = data.getInteger("secondDeptId2");
if (Objects.nonNull(secondDeptId2)) {
+ DeptVo secondDept = deptService.detail(secondDeptId2);
// 下发信件(次责单位2)
workService.saveOrUpdate(mail, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), secondDeptId2, now, false,
FlowNameEnum.PENDING_SIGN_CO.getName(),
FlowNodeEnum.SECOND_SIGN.getKey());
- firstDistributeInfo.put("secondDept2", JSONObject.of("id", secondDeptId2));
+ firstDistributeInfo.put("secondDept2", JSONObject.of("id", secondDeptId2, "name", secondDept.getName()));
}
Flow nextNode = next.get(nextActionKey);
- // 更新信件
- DeptVo deptVo = deptService.detail(mainDeptId);
+
mail.setUpdateTime(now)
.setFlowKey(nextNode.getFlowNode().getKey())
.setFlowName(nextNode.getFlowNode().getBeforeName())
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstSignFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstSignFlow.java
index 2f3bc86..dbdfbe0 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstSignFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstSignFlow.java
@@ -29,9 +29,6 @@ public class FirstSignFlow extends Flow {
private final MailService mailService;
private final MailSourceService mailSourceService;
private final WorkService workService;
- private final MailApprovalService mailApprovalService;
- private final MailExtensionApprovalService mailExtensionApprovalService;
- private final MailCountersignService mailCountersignService;
private final NoticeService noticeService;
@Override
@@ -40,8 +37,11 @@ public class FirstSignFlow extends Flow {
String mailFirstCategory = data.getString("mailFirstCategory");
Assert.hasText(mailFirstCategory, "参数错误");
// 将首次签收标识 改为是
- MailSource mailSource = mailSourceService.getById(mailId)
- .setSignFlag(true);
+ MailSource mailSource = mailSourceService.getById(mailId);
+ if (mailSource.getSignFlag()) {
+ throw new BusinessException("该信件已被其他专班处理,请刷新后重试");
+ }
+ mailSource.setSignFlag(true);
mailSourceService.updateById(mailSource);
// 感谢信
if (mailFirstCategory.equals(MailCategory.THANK_MAIL.getName())) {
@@ -144,9 +144,6 @@ public class FirstSignFlow extends Flow {
if (mailService.exists(mailId)) {
// 如果存在则删除相关数据
mailService.removeById(mailId);
- mailApprovalService.remove(mailId);
- mailExtensionApprovalService.remove(mailId);
- mailCountersignService.remove(mailId);
}
}
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondApprovalFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondApprovalFlow.java
index 963ebbd..224f45c 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondApprovalFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondApprovalFlow.java
@@ -44,6 +44,8 @@ public class SecondApprovalFlow extends Flow {
data.getList("countersignDeptIds", Integer.class));
}
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
// 线下
if (mail.getCompleteMethod().equals(CompleteMethod.offline.name())) {
return offlineApproval(mail, data);
@@ -60,6 +62,8 @@ public class SecondApprovalFlow extends Flow {
String reason = data.getString("reason");
Assert.hasText(reason, "参数错误");
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDistributeFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDistributeFlow.java
index b23d1ec..ee14061 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDistributeFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDistributeFlow.java
@@ -1,5 +1,7 @@
package com.biutag.lan.flow.node;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.biutag.enums.RoleEnum;
import com.biutag.lan.config.AdminThreadLocal;
@@ -14,14 +16,11 @@ import com.biutag.lan.service.MailService;
import com.biutag.lan.service.WorkService;
import com.biutag.lan.vo.system.DeptVo;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Objects;
@RequiredArgsConstructor
@@ -54,23 +53,31 @@ public class SecondDistributeFlow extends Flow {
Work myWork = workService.getOne(mailId, AdminThreadLocal.getEmpNo());
myWork.setWorkState(Work.State.done.name()).setUpdateTime(now);
workService.updateById(myWork);
-
- JSONObject secondDistributeInfo = JSONObject.of("mainDept", JSONObject.of("id", mainDeptId));
+ DeptVo deptVo = deptService.detail(mainDeptId);
+ JSONObject secondDistributeInfo = StrUtil.isNotBlank(mail.getSecondDistributeInfo()) ? JSON.parseObject(mail.getSecondDistributeInfo()) : new JSONObject();
if (myWork.getMainDeptFlag()) {
+ secondDistributeInfo.fluentPut("mainDept", JSONObject.of("id", mainDeptId, "name", deptVo.getName()));
+ // 校验
+ valid(mail);
// 下发信件(主责单位)
workService.saveOrUpdate(mail, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), mainDeptId, now, true, FlowNameEnum.PENDING_SIGN.getName());
} else {
// 非主责
workService.saveOrUpdate(mail, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), mainDeptId, now, false,
FlowNameEnum.SECONDARY_VERIFY.getName(),
- FlowNodeEnum.VERIFY.getKey());
+ FlowNodeEnum.SECONDARY_VERIFY.getKey());
+ if (!secondDistributeInfo.containsKey("secondDept1")) {
+ secondDistributeInfo.fluentPut("secondDept1", JSONObject.of("id", mainDeptId, "name", deptVo.getName()));
+ } else {
+ secondDistributeInfo.fluentPut("secondDept2", JSONObject.of("id", mainDeptId, "name", deptVo.getName()));
+ }
}
Integer secondDeptId1 = data.getInteger("secondDeptId1");
if (Objects.nonNull(secondDeptId1)) {
// 下发信件(次责单位1)
workService.saveOrUpdate(mail, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), secondDeptId1, now, false,
FlowNameEnum.PENDING_SIGN_CO.getName(),
- FlowNodeEnum.VERIFY.getKey());
+ FlowNodeEnum.SECONDARY_VERIFY.getKey());
secondDistributeInfo.put("secondDept1", JSONObject.of("id", secondDeptId1));
}
Integer secondDeptId2 = data.getInteger("secondDeptId2");
@@ -78,23 +85,26 @@ public class SecondDistributeFlow extends Flow {
// 下发信件(次责单位2)
workService.saveOrUpdate(mail, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), secondDeptId2, now, false,
FlowNameEnum.PENDING_SIGN_CO.getName(),
- FlowNodeEnum.VERIFY.getKey());
+ FlowNodeEnum.SECONDARY_VERIFY.getKey());
secondDistributeInfo.put("secondDept2", JSONObject.of("id", secondDeptId2));
}
Flow nextNode = next.get(nextActionKey);
+ mail.setSecondDistributeInfo(secondDistributeInfo.toJSONString());
if (myWork.getMainDeptFlag()) {
// 更新信件
- DeptVo deptVo = deptService.detail(mainDeptId);
mail.setUpdateTime(now)
.setFlowKey(nextNode.getFlowNode().getKey())
.setFlowName(nextNode.getFlowNode().getBeforeName())
.setCurrentOperator(String.format("%s专班", deptVo.getName()))
.setFlowLimitedLastHandlerTime(now)
.setThreeDeptId(mainDeptId)
- .setThreeDeptName(deptVo.getName())
- .setSecondDistributeInfo(secondDistributeInfo.toJSONString());
- mailService.updateById(mail);
+ .setThreeDeptName(deptVo.getName());
+ Integer mainDeptLevel = data.getInteger("mainDeptLevel");
+ if (Objects.nonNull(mainDeptLevel)) {
+ mail.setMainDeptLevel(mainDeptLevel);
+ }
}
+ mailService.updateById(mail);
return null;
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondReportingFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondReportingFlow.java
index b71831c..2eeab1c 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondReportingFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondReportingFlow.java
@@ -26,6 +26,8 @@ public class SecondReportingFlow extends Flow {
public Flow next(String nextActionKey, String mailId, JSONObject data) {
LocalDateTime now = LocalDateTime.now();
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
// 将二级专班信件改为已办
workService.updateDoneByRole(mailId, FlowNameEnum.PENDING_REPORT.getDoneName());
// 将市局专班信件改为待办
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondSignFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondSignFlow.java
index d449a17..a741714 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondSignFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondSignFlow.java
@@ -6,6 +6,7 @@ import com.biutag.exception.BusinessException;
import com.biutag.lan.config.AdminThreadLocal;
import com.biutag.lan.domain.Mail;
import com.biutag.lan.domain.MailReturn;
+import com.biutag.lan.domain.MailSource;
import com.biutag.lan.domain.Work;
import com.biutag.lan.flow.ActionEnum;
import com.biutag.lan.flow.Flow;
@@ -37,6 +38,8 @@ public class SecondSignFlow extends Flow {
private final NoticeService noticeService;
+ private final MailSourceService mailSourceService;
+
@Override
@Transactional(rollbackFor = Exception.class)
public Flow next(String nextActionKey, String mailId, JSONObject data) {
@@ -47,6 +50,8 @@ public class SecondSignFlow extends Flow {
}
public Flow mailReturn(String mailId, JSONObject data) {
+ String reason = data.getString("reason");
+ Assert.hasText(reason, "参数错误");
LocalDateTime now = LocalDateTime.now();
Integer roleId = AdminThreadLocal.getRoleId();
Integer deptId = AdminThreadLocal.getDeptId();
@@ -54,8 +59,6 @@ public class SecondSignFlow extends Flow {
if (work.getWorkState().equals(Work.State.done.name())) {
throw new BusinessException("该信件已被其他专班处理");
}
- String reason = data.getString("reason");
- Assert.hasText(reason, "参数错误");
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
@@ -77,6 +80,9 @@ public class SecondSignFlow extends Flow {
mail.setUpdateTime(now)
.setFlowKey(FlowNodeEnum.FIRST_SIGN.getKey())
.setFlowName(FlowNameEnum.MAIL_RETURN.getName());
+ // 将信件源表的签收设置为未签收
+ MailSource mailSource = mailSourceService.getById(mailId).setSignFlag(false);
+ mailSourceService.updateById(mailSource);
} else {
JSONObject firstDistributeInfo = JSON.parseObject(mail.getFirstDistributeInfo());
JSONObject secondDept1 = firstDistributeInfo.getJSONObject("secondDept1");
@@ -107,6 +113,9 @@ public class SecondSignFlow extends Flow {
if (work.getWorkState().equals(Work.State.done.name())) {
throw new BusinessException("该信件已被其他专班处理");
}
+ // 更新信件
+ Mail mail = mailService.getById(mailId);
+
// 更新我的工作
work.setPoliceEmpNo(empNo)
.setUpdateTime(now)
@@ -115,10 +124,11 @@ public class SecondSignFlow extends Flow {
if (!work.getMainDeptFlag()) {
work.setFlowName(FlowNameEnum.PENDING_DISTRIBUTE_CO.getName())
.setFlowKey(FlowNodeEnum.SECOND_DISTRIBUTE.getKey());
+ } else {
+ // 校验
+ valid(mail);
}
workService.updateById(work);
- // 更新信件
- Mail mail = mailService.getById(mailId);
Flow nextNode = next.get(nextActionKey);
// 主责单位
if (work.getMainDeptFlag()) {
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeContactWriterFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeContactWriterFlow.java
index ee89af1..4d9e81a 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeContactWriterFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeContactWriterFlow.java
@@ -54,6 +54,8 @@ public class ThreeContactWriterFlow extends Flow {
LocalDateTime now = LocalDateTime.now();
// 更新信件
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
Flow nextNode = next.get(nextActionKey);
mail.setUpdateTime(now)
.setContactPoliceName(contactPolice.getString("name"))
@@ -74,12 +76,7 @@ public class ThreeContactWriterFlow extends Flow {
Work work = workService.getOne(mailId, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), AdminThreadLocal.getDeptId());
work.setFlowName(FlowNameEnum.INTERVIEW_WRITER.getName()).setUpdateTime(now);
workService.updateById(work);
- // 处理协办民警
- threeSignFlow.saveCoHandling(mail, data);
- JSONArray coHandingPolices = data.getJSONArray("coHandingPolices");
- if (Objects.nonNull(coHandingPolices) && !coHandingPolices.isEmpty()) {
- mail.setCoHandlingPolices(coHandingPolices.toJSONString());
- }
+
mailService.updateById(mail);
return nextNode;
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeInterviewWriterFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeInterviewWriterFlow.java
index dce2bae..dc79b19 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeInterviewWriterFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeInterviewWriterFlow.java
@@ -35,13 +35,16 @@ public class ThreeInterviewWriterFlow extends Flow {
if (ActionEnum.mailReturn.getValue().equals(nextActionKey)) {
return threeSignFlow.mailReturn(mailId, data);
}
+ Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
LocalDateTime now = LocalDateTime.now();
// 更新我的工作
Work work = workService.getOne(mailId, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), AdminThreadLocal.getDeptId());
work.setFlowName(FlowNameEnum.VERIFY.getName()).setUpdateTime(now);
workService.updateById(work);
// 更新信件
- Mail mail = mailService.getById(mailId);
+
Flow nextNode = next.get(nextActionKey);
mail.setUpdateTime(now)
.setInterviewType(data.getString("interviewType"))
@@ -52,12 +55,6 @@ public class ThreeInterviewWriterFlow extends Flow {
.setInterviewAttachments(data.getString("interviewAttachments"))
.setFlowKey(nextNode.getFlowNode().getKey())
.setFlowName(nextNode.getFlowNode().getBeforeName());
- // 处理协办民警
- threeSignFlow.saveCoHandling(mail, data);
- JSONArray coHandingPolices = data.getJSONArray("coHandingPolices");
- if (Objects.nonNull(coHandingPolices) && !coHandingPolices.isEmpty()) {
- mail.setCoHandlingPolices(coHandingPolices.toJSONString());
- }
mailService.updateById(mail);
return nextNode;
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeSignFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeSignFlow.java
index 84a61c7..4997ec8 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeSignFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeSignFlow.java
@@ -53,15 +53,17 @@ public class ThreeSignFlow extends Flow {
}
public Flow mailReturn(String mailId, JSONObject data) {
+ String reason = data.getString("reason");
+ Assert.hasText(reason, "参数错误");
LocalDateTime now = LocalDateTime.now();
Integer deptId = AdminThreadLocal.getDeptId();
Work work = workService.getOne(mailId, RoleEnum.THREE_DEPT_CLASSES.getRoleId(),deptId);
if (work.getWorkState().equals(Work.State.done.name())) {
throw new BusinessException("该信件已被其他专班处理");
}
- String reason = data.getString("reason");
- Assert.hasText(reason, "参数错误");
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
@@ -115,32 +117,6 @@ public class ThreeSignFlow extends Flow {
return nextNode;
}
- public void saveCoHandling(Mail mail, JSONObject data) {
- LocalDateTime now = LocalDateTime.now();
- // 处理协办民警
- JSONArray coHandlingPolices = data.getJSONArray("coHandlingPolices");
- if (Objects.nonNull(coHandlingPolices) && coHandlingPolices.size() > 0) {
- for (Object coHandingPolice : coHandlingPolices) {
- Map obj = (LinkedHashMap) coHandingPolice;
- Object empNoObj = obj.get("empNo");
- if (Objects.isNull(empNoObj)) {
- continue;
- }
- String empNo = empNoObj.toString();
- Work coWork = workService.getOne(mail.getId(), empNo);
- if (Objects.nonNull(coWork)) {
- continue;
- }
- Work work = new Work();
- BeanUtils.copyProperties(mail, work);
- work.setMailId(mail.getId())
- .setPoliceEmpNo(empNo)
- .setCreateTime(now)
- .setWorkState(Work.State.todo.name())
- .setWorkType(WorkType.co_handling.name());
- workService.save(work);
- }
- }
- }
+
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeVerifyFlow.java b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeVerifyFlow.java
index b5d210c..440bc61 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeVerifyFlow.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeVerifyFlow.java
@@ -90,6 +90,8 @@ public class ThreeVerifyFlow extends Flow {
public Flow save(String mailId, JSONObject data) {
JSONObject contactPolice = data.getJSONObject("contactPolice");
Mail mail = mailService.getById(mailId);
+ // 校验
+ valid(mail);
Mail source = new Mail()
// 联系群众
.setContactPoliceName(Optional.ofNullable(contactPolice).map(item -> item.getString("name")).orElse(null))
@@ -124,13 +126,6 @@ public class ThreeVerifyFlow extends Flow {
"mobile", verifyFollowupPoliceObj.getString("mobile")).toJSONString();
source.setVerifyFollowupPolice(verifyFollowupPolice);
}
- BeanUtil.copyProperties(source, mail, CopyOptions.create().setIgnoreNullValue(true));
- JSONArray coHandlingPolices = data.getJSONArray("coHandlingPolices");
- if (Objects.nonNull(coHandlingPolices) && !coHandlingPolices.isEmpty()) {
- // 处理协办民警
- threeSignFlow.saveCoHandling(mail, data);
- mail.setCoHandlingPolices(coHandlingPolices.toJSONString());
- }
mailService.updateById(mail);
return null;
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/service/MailService.java b/mailbox-lan/src/main/java/com/biutag/lan/service/MailService.java
index 3a35526..787dc70 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/service/MailService.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/service/MailService.java
@@ -4,6 +4,8 @@ import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,6 +14,7 @@ import com.biutag.enums.RoleEnum;
import com.biutag.exception.BusinessException;
import com.biutag.lan.config.AdminThreadLocal;
import com.biutag.lan.domain.*;
+import com.biutag.lan.domain.bo.CoHandlingReq;
import com.biutag.lan.domain.bo.FlowAction;
import com.biutag.lan.domain.bo.InvalidCompletion;
import com.biutag.lan.domain.bo.MailOuter;
@@ -40,6 +43,8 @@ import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
+import static org.bouncycastle.asn1.iana.IANAObjectIdentifiers.mail;
+
@RequiredArgsConstructor
@Service
public class MailService extends ServiceImpl {
@@ -220,6 +225,13 @@ public class MailService extends ServiceImpl {
.setLimitedTime(flow.getFlowNode().getLimitedTime())
.setConsumingTime(consumingTime)
.setCreateTime(now);
+ if (Objects.nonNull(flowAction.getData().getString("comment"))) {
+ mailFlow.setRemark(flowAction.getData().getString("comment"));
+ } else if (Objects.nonNull(flowAction.getData().getString("comments"))) {
+ mailFlow.setRemark(flowAction.getData().getString("comments"));
+ } else if (Objects.nonNull(flowAction.getData().getString("reason"))) {
+ mailFlow.setRemark(flowAction.getData().getString("reason"));
+ }
mailFlowService.save(mailFlow);
});
// 下一节点操作
@@ -398,4 +410,32 @@ public class MailService extends ServiceImpl {
return updateById(mail);
}
+ @Transactional(rollbackFor = Exception.class)
+ public boolean saveCoHandling(CoHandlingReq coHandlingReq) {
+ LocalDateTime now = LocalDateTime.now();
+ // 处理协办民警
+ List polices = coHandlingReq.getPolices();
+ Mail mail = getById(coHandlingReq.getMailId());
+ mail.setCoHandlingPolices(JSON.toJSONString(polices));
+ updateById(mail);
+ for (CoHandlingReq.Police police : polices) {
+ String empNo = police.getEmpNo();
+ if (Objects.isNull(empNo)) {
+ continue;
+ }
+ Work coWork = workService.getOne(mail.getId(), empNo);
+ if (Objects.nonNull(coWork)) {
+ continue;
+ }
+ Work work = new Work();
+ BeanUtils.copyProperties(mail, work);
+ work.setMailId(mail.getId())
+ .setPoliceEmpNo(empNo)
+ .setCreateTime(now)
+ .setWorkState(Work.State.todo.name())
+ .setWorkType(WorkType.co_handling.name());
+ workService.save(work);
+ }
+ return true;
+ }
}
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/service/NoticeService.java b/mailbox-lan/src/main/java/com/biutag/lan/service/NoticeService.java
index e9a0282..6fc777c 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/service/NoticeService.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/service/NoticeService.java
@@ -25,7 +25,7 @@ public class NoticeService extends ServiceImpl {
private final SimpMessagingTemplate messagingTemplate;
- @Async
+
public void save(Integer roleId, Integer deptId, String content, Integer workId) {
Notice notice = new Notice().setRoleId(roleId).setDeptId(deptId).setContent(content).setCreateTime(LocalDateTime.now()).setReadFlag(AppConstants.NO).setWorkId(workId);
save(notice);
@@ -33,7 +33,7 @@ public class NoticeService extends ServiceImpl {
log.info("发送通知:{}", String.format("/topic/role/%s/%s", roleId, deptId));
}
- @Async
+
public void save(String empNo, String content, Integer workId) {
Notice notice = new Notice().setEmpNo(empNo).setContent(content).setCreateTime(LocalDateTime.now()).setReadFlag(AppConstants.NO).setWorkId(workId);
save(notice);
@@ -41,7 +41,7 @@ public class NoticeService extends ServiceImpl {
log.info("发送通知:{}", String.format("/topic/user/%s", empNo));
}
- @Async
+
public void sendNoticeDoneByRole() {
Integer roleId = AdminThreadLocal.getRoleId();
Integer deptId = AdminThreadLocal.getDeptId();
diff --git a/mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java b/mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java
index bd48577..5bf4cca 100644
--- a/mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java
+++ b/mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java
@@ -122,7 +122,11 @@ public class WorkService extends ServiceImpl {
work.setWorkState(Work.State.todo.name())
.setUpdateTime(time)
.setMainDeptFlag(mainDeptFlag)
- .setFlowName(flowName).setFlowKey(flowKey);
+ .setFlowName(flowName)
+ .setFlowKey(flowKey);
+ if (!mainDeptFlag) {
+ work.setWorkType(WorkType.secondary.name());
+ }
boolean flag = saveOrUpdate(work);
noticeService.save(work.getSignRoleId(), work.getSignDeptId(), String.format("%s 的来信未签收,请尽快签收!", work.getContactName()), work.getId());