Browse Source

BUG修复、完善

master
wxc 2 years ago
parent
commit
1055615997
  1. 2
      mailbox-common/src/main/java/com/biutag/config/Minio.java
  2. 16
      mailbox-lan/pom.xml
  3. 4
      mailbox-lan/src/main/java/com/biutag/lan/config/AdminInterceptor.java
  4. 27
      mailbox-lan/src/main/java/com/biutag/lan/controller/FileController.java
  5. 1
      mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailOuter.java
  6. 33
      mailbox-lan/src/main/java/com/biutag/lan/flow/FlowNameEnum.java
  7. 9
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstApprovalFlow.java
  8. 3
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstDistributeFlow.java
  9. 4
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstSignFlow.java
  10. 13
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondApprovalFlow.java
  11. 6
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDeputyApprovalFlow.java
  12. 4
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondLeaderApprovalFlow.java
  13. 6
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondReportingFlow.java
  14. 2
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondSignFlow.java
  15. 7
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeContactWriterFlow.java
  16. 8
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeInterviewWriterFlow.java
  17. 12
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeLeaderApprovalFlow.java
  18. 10
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeSignFlow.java
  19. 21
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeVerifyFlow.java
  20. 12
      mailbox-lan/src/main/java/com/biutag/lan/service/MailService.java
  21. 54
      mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java
  22. 12
      mailbox-lan/src/main/resources/application.yml
  23. BIN
      mailbox-lan/src/main/resources/templates/《处理反馈表》.doc
  24. BIN
      mailbox-lan/src/main/resources/templates/《核查办理报告》.doc
  25. 1
      mailbox-lan/src/test/java/com/biutag/lan/JsonTest.java
  26. 32
      mailbox-lan/src/test/java/com/biutag/lan/TestResource.java
  27. 7
      pom.xml
  28. 1
      sql/240227.sql

2
mailbox-common/src/main/java/com/biutag/config/Minio.java

@ -74,8 +74,6 @@ public class Minio {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = response.read(buffer, 0, buffer.length)) != -1) {
// 处理读取的数据,例如写入到其他流或进行其他操作
// 这里只是简单的打印数据
os.write(buffer, 0, bytesRead);
}
response.close();

16
mailbox-lan/pom.xml

@ -116,9 +116,6 @@
<artifactId>easyexcel</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies>
<build>
@ -145,6 +142,19 @@
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application.yml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<finalName>mailbox-lan</finalName>
</build>
</project>

4
mailbox-lan/src/main/java/com/biutag/lan/config/AdminInterceptor.java

@ -57,6 +57,9 @@ public class AdminInterceptor implements HandlerInterceptor {
// 请求方法类型
String reqUri = request.getRequestURI();
if (reqUri.startsWith("/api/file/download/template/")) {
return true;
}
if (!(handler instanceof HandlerMethod) || !reqUri.startsWith("/api")) {
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@ -216,7 +219,6 @@ public class AdminInterceptor implements HandlerInterceptor {
if (StringUtils.isNotNull(method) && method.isAnnotationPresent(NotPower.class)) {
break;
}
// 路由转权限
String prefix = "/api/";
String route = uri.replaceFirst(prefix, "");

27
mailbox-lan/src/main/java/com/biutag/lan/controller/FileController.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.biutag.aop.NotPower;
import com.biutag.config.Minio;
import com.biutag.core.AjaxResult;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
@ -13,6 +14,9 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Objects;
@Slf4j
@RequiredArgsConstructor
@ -43,7 +47,30 @@ public class FileController {
@GetMapping("stream/**")
public void download(HttpServletRequest request, HttpServletResponse response) throws IOException {
String requestURI = request.getRequestURI();
if (requestURI.toLowerCase().endsWith(".pdf")) {
response.setContentType("application/pdf");
}
minio.get(requestURI.substring("/api/file/stream/".length()), response.getOutputStream());
}
@NotPower
@GetMapping("download/template/{filename}")
public void download(@PathVariable String filename, HttpServletResponse response) throws IOException {
InputStream is = getClass().getResourceAsStream(String.format("/templates/%s", filename));
if (Objects.isNull(is)) {
return;
}
// 下载
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
ServletOutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = is.read(buffer, 0, buffer.length)) != -1) {
os.write(buffer, 0, bytesRead);
}
is.close();
os.close();
}
}

1
mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailOuter.java

@ -29,7 +29,6 @@ public class MailOuter {
/**
* 联系人性别 M / F
*/
@NotBlank(message = "请选择联系人性别")
private String contactSex;
/**

33
mailbox-lan/src/main/java/com/biutag/lan/flow/FlowNameEnum.java

@ -3,33 +3,36 @@ package com.biutag.lan.flow;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum FlowNameEnum {
PENDING_SIGN("待签收"),
PENDING_SIGN_CO("待签收(协办)"),
PENDING_DISTRIBUTE("待下发"),
PENDING_SIGN("待签收", "已签收"),
PENDING_SIGN_CO("待签收(协办)","已签收(协办)"),
PENDING_DISTRIBUTE("待下发", "已下发"),
PENDING_DISTRIBUTE_CO("待下发(协办)"),
PENDING_DISTRIBUTE_CO("待下发(协办)", "已下发"),
CONTACT_WRITER("联系群众"),
INTERVIEW_WRITER("接访群众"),
CONTACT_WRITER("联系群众", "联系群众"),
INTERVIEW_WRITER("接访群众", "接访群众"),
VERIFY("核查办理"),
VERIFY("核查办理", "核查办理"),
PENDING_APPROVAL("待审批"),
PENDING_APPROVAL("待审批", "已审批"),
PENDING_REPORT("待呈报"),
PENDING_REPORT("待呈报", "已呈报"),
COUNTERSIGNING("会签中"),
COUNTERSIGNING("会签中", "会签完成"),
PENDING_COUNTERSIGN("待会签"),
MAIL_RETURN("信件退回"),
RETURN_RECTIFICATION("退回整改"),
PENDING_COUNTERSIGN("待会签", "已会签"),
MAIL_RETURN("信件退回", "信件退回"),
RETURN_RECTIFICATION("退回整改", "退回整改"),
CO_HANDLING("协查办理", "协查办理");
CO_HANDLING("协查办理");
@Getter
private String name;
private String doneName;
}

9
mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstApprovalFlow.java

@ -8,6 +8,7 @@ import com.biutag.lan.config.AdminThreadLocal;
import com.biutag.lan.domain.Mail;
import com.biutag.lan.domain.MailMark;
import com.biutag.lan.domain.MailReturn;
import com.biutag.lan.domain.Work;
import com.biutag.lan.enums.MailState;
import com.biutag.lan.flow.ActionEnum;
import com.biutag.lan.flow.Flow;
@ -61,7 +62,7 @@ public class FirstApprovalFlow extends Flow {
public void confirmedCompletion(String mailId, JSONObject data) {
LocalDateTime now = LocalDateTime.now();
// 将市局专班信件改为已办
workService.updateDone(mailId, RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId(), now);
workService.updateByMunicipal(mailId, Work.State.done.name(), FlowNameEnum.PENDING_APPROVAL.getDoneName());
// 更新信件(信件已办结)
Mail mail = mailService.getById(mailId);
Boolean problemSolvingStatus = data.getBoolean("problemSolvingStatus");
@ -96,6 +97,7 @@ public class FirstApprovalFlow extends Flow {
Assert.hasText(returnOperate, "参数错误");
String reason = data.getString("reason");
Assert.hasText(reason, "参数错误");
Mail mail = mailService.getById(mailId);
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
@ -106,11 +108,10 @@ public class FirstApprovalFlow extends Flow {
.setCreateTime(now);
mailReturnService.save(mailReturn);
// 更新已办
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), now);
workService.updateByMunicipal(mailId, Work.State.done.name(), FlowNameEnum.MAIL_RETURN.getDoneName());
// 更新二级机构专班的待办
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.RETURN_RECTIFICATION.getName());
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.RETURN_RECTIFICATION.getName());
// 更新信件
Mail mail = mailService.getById(mailId);
mail.setUpdateTime(now)
.setFlowKey(FlowNodeEnum.SECOND_APPROVAL.getKey())
.setReturnOperate(returnOperate);

3
mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstDistributeFlow.java

@ -3,6 +3,7 @@ package com.biutag.lan.flow.node;
import com.alibaba.fastjson2.JSONObject;
import com.biutag.enums.RoleEnum;
import com.biutag.lan.domain.Mail;
import com.biutag.lan.domain.Work;
import com.biutag.lan.flow.Flow;
import com.biutag.lan.flow.FlowNameEnum;
import com.biutag.lan.flow.FlowNodeEnum;
@ -41,7 +42,7 @@ public class FirstDistributeFlow extends Flow {
LocalDateTime now = LocalDateTime.now();
Mail mail = mailService.getById(mailId);
// 将我的工作待办改成已办
workService.updateDone(mailId, RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId(),now);
workService.updateByMunicipal(mailId, Work.State.done.name(), FlowNameEnum.PENDING_DISTRIBUTE.getDoneName());
JSONObject firstDistributeInfo = JSONObject.of("mainDept", JSONObject.of("id", mainDeptId));
// 下发信件(主责单位)

4
mailbox-lan/src/main/java/com/biutag/lan/flow/node/FirstSignFlow.java

@ -103,7 +103,7 @@ public class FirstSignFlow extends Flow {
.setUpdateTime(now);
mailService.save(mail);
// 更新为已办
workService.updateDone(mailId, AdminThreadLocal.getRoleId(), now);
workService.updateByMunicipal(mailId, Work.State.done.name(), null);
return null;
}
@ -118,7 +118,7 @@ public class FirstSignFlow extends Flow {
.setUpdateTime(now);
mailService.save(mail);
// 更新为已办
workService.updateDone(mailId, AdminThreadLocal.getRoleId(), now);
workService.updateByMunicipal(mailId, Work.State.done.name(), null);
return null;
}

13
mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondApprovalFlow.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.Work;
import com.biutag.lan.enums.CompleteMethod;
import com.biutag.lan.flow.ActionEnum;
import com.biutag.lan.flow.Flow;
@ -59,6 +60,7 @@ public class SecondApprovalFlow extends Flow {
LocalDateTime now = LocalDateTime.now();
String reason = data.getString("reason");
Assert.hasText(reason, "参数错误");
Mail mail = mailService.getById(mailId);
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
@ -69,11 +71,10 @@ public class SecondApprovalFlow extends Flow {
.setCreateTime(now);
mailReturnService.save(mailReturn);
// 更新已办
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), now);
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), FlowNameEnum.MAIL_RETURN.getDoneName());
// 更新三级机构专班的待办
workService.updateTodo(mailId, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.RETURN_RECTIFICATION.getName());
workService.updateTodo(mailId, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.RETURN_RECTIFICATION.getName());
// 更新信件
Mail mail = mailService.getById(mailId);
mail.setUpdateTime(now)
.setFlowKey(FlowNodeEnum.VERIFY.getKey())
.setFlowBeforeName("信件退回");
@ -88,9 +89,9 @@ public class SecondApprovalFlow extends Flow {
// 审批意见
mailApprovalService.saveOrUpdate(mail.getId(), mail.getFlowKey(), data.getString("approvalComment"), null, now);
// 将二级专班角色的信件改为已办
workService.updateDone(mail.getId(), RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now);
workService.updateDone(mail.getId(), RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.PENDING_APPROVAL.getDoneName());
// 将市局专班信件改为待办
workService.updateTodo(mail.getId(), RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.PENDING_APPROVAL.getName());
workService.updateByMunicipal(mail.getId(), Work.State.todo.name(), FlowNameEnum.PENDING_APPROVAL.getName());
// 更新信件
mail.setUpdateTime(now)
.setFlowKey(FlowNodeEnum.FIRST_APPROVAL.getKey())
@ -108,7 +109,7 @@ public class SecondApprovalFlow extends Flow {
// 审批意见
mailApprovalService.saveOrUpdate(mail.getId(), mail.getFlowKey(), data.getString("approvalComment"), leaderEmpNo, now);
// 将二级专班角色的信件改为已办
workService.updateDone(mail.getId(), RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now);
workService.updateDone(mail.getId(), RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), AdminThreadLocal.getDeptId(), FlowNameEnum.PENDING_APPROVAL.getDoneName());
// 将二级副职领导新增信件
workService.save(mail, leaderEmpNo, now, FlowNameEnum.PENDING_APPROVAL.getName());
Flow nextNode = next.get(nextActionKey);

6
mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDeputyApprovalFlow.java

@ -51,7 +51,7 @@ public class SecondDeputyApprovalFlow extends Flow {
// 审批意见
mailApprovalService.saveOrUpdate(mailId, mail.getFlowKey(), data.getString("approvalComment"), leaderEmpNo, now);
// 将我的信件改为已办
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), now);
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), FlowNameEnum.PENDING_APPROVAL.getDoneName());
// 给二级机构正职领导新增待办
workService.save(mail, leaderEmpNo, now, FlowNameEnum.PENDING_APPROVAL.getName());
Flow nextNode = next.get(nextActionKey);
@ -68,9 +68,9 @@ public class SecondDeputyApprovalFlow extends Flow {
Mail mail = mailService.getById(mailId);
mailApprovalService.saveOrUpdate(mailId, mail.getFlowKey(), data.getString("reason"), null, true, now);
// 将我的信件改为已办
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), now);
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), FlowNameEnum.MAIL_RETURN.getDoneName());
// 更新二级机构专班的待办
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.PENDING_APPROVAL.getName());
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.PENDING_APPROVAL.getName());
// 更新信件
mail.setUpdateTime(now)
.setFlowKey(FlowNodeEnum.SECOND_APPROVAL.getKey())

4
mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondLeaderApprovalFlow.java

@ -42,9 +42,9 @@ public class SecondLeaderApprovalFlow extends Flow {
// 审批意见
mailApprovalService.saveOrUpdate(mailId, mail.getFlowKey(), data.getString("approvalComment"), null, now);
// 将我的信件改为已办
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), now);
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), FlowNameEnum.PENDING_APPROVAL.getDoneName());
// 转给二级专班
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.PENDING_REPORT.getName());
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.PENDING_REPORT.getName());
Flow nextNode = next.get(nextActionKey);
// 更新信件
mail.setUpdateTime(now)

6
mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondReportingFlow.java

@ -2,7 +2,9 @@ package com.biutag.lan.flow.node;
import com.alibaba.fastjson2.JSONObject;
import com.biutag.enums.RoleEnum;
import com.biutag.lan.config.AdminThreadLocal;
import com.biutag.lan.domain.Mail;
import com.biutag.lan.domain.Work;
import com.biutag.lan.flow.Flow;
import com.biutag.lan.flow.FlowNameEnum;
import com.biutag.lan.service.MailService;
@ -25,9 +27,9 @@ public class SecondReportingFlow extends Flow {
LocalDateTime now = LocalDateTime.now();
Mail mail = mailService.getById(mailId);
// 将二级专班信件改为已办
workService.updateDone(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now);
workService.updateDone(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), AdminThreadLocal.getDeptId(), FlowNameEnum.PENDING_REPORT.getDoneName());
// 将市局专班信件改为待办
workService.updateTodo(mailId, RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.PENDING_APPROVAL.getName());
workService.updateByMunicipal(mailId, Work.State.todo.name(), FlowNameEnum.PENDING_APPROVAL.getName());
Flow nextNode = next.get(nextActionKey);
// 更新信件
mail.setUpdateTime(now)

2
mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondSignFlow.java

@ -67,7 +67,7 @@ public class SecondSignFlow extends Flow {
work.setUpdateTime(now).setWorkState(Work.State.done.name());
workService.updateById(work);
// 更新市局专班的待办
workService.updateTodo(mailId, RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.MAIL_RETURN.getName());
workService.updateByMunicipal(mailId, Work.State.todo.name(), FlowNameEnum.MAIL_RETURN.getName());
Mail mail = mailService.getById(mailId);
// 主责单位
if (work.getMainDeptFlag()) {

7
mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeContactWriterFlow.java

@ -71,13 +71,18 @@ public class ThreeContactWriterFlow extends Flow {
mail.setFlowKey(FlowNodeEnum.VERIFY.getKey())
.setFlowBeforeName(FlowNodeEnum.VERIFY.getFullName());
}
mailService.updateById(mail);
// 更新我的工作
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;
}

8
mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeInterviewWriterFlow.java

@ -1,5 +1,6 @@
package com.biutag.lan.flow.node;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.biutag.enums.RoleEnum;
import com.biutag.lan.config.AdminThreadLocal;
@ -14,6 +15,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Objects;
/**
* 接访群众
@ -50,9 +52,13 @@ public class ThreeInterviewWriterFlow extends Flow {
.setInterviewAttachments(data.getString("interviewAttachments"))
.setFlowKey(nextNode.getFlowNode().getKey())
.setFlowBeforeName(nextNode.getFlowNode().getBeforeName());
mailService.updateById(mail);
// 处理协办民警
threeSignFlow.saveCoHandling(mail, data);
JSONArray coHandingPolices = data.getJSONArray("coHandingPolices");
if (Objects.nonNull(coHandingPolices) && !coHandingPolices.isEmpty()) {
mail.setCoHandlingPolices(coHandingPolices.toJSONString());
}
mailService.updateById(mail);
return nextNode;
}

12
mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeLeaderApprovalFlow.java

@ -42,9 +42,10 @@ public class ThreeLeaderApprovalFlow extends Flow {
// 审批意见
mailApprovalService.saveOrUpdate(mailId, mail.getFlowKey(), data.getString("approvalComment"), null, now);
// 将我的信件改为已办
workService.updateDone(mailId, empNo, now);
workService.updateDone(mailId, empNo, FlowNameEnum.PENDING_APPROVAL.getDoneName());
// 将二级专班的信件改为待办
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.PENDING_APPROVAL.getName());
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.PENDING_APPROVAL.getName());
Flow nextNode = next.get(nextActionKey);
// 更新信件
mail.setUpdateTime(now)
@ -58,6 +59,8 @@ public class ThreeLeaderApprovalFlow extends Flow {
LocalDateTime now = LocalDateTime.now();
String reason = data.getString("reason");
Assert.hasText(reason, "参数错误");
Mail mail = mailService.getById(mailId);
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
@ -68,11 +71,10 @@ public class ThreeLeaderApprovalFlow extends Flow {
.setCreateTime(now);
mailReturnService.save(mailReturn);
// 更新已办
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), now);
workService.updateDone(mailId, AdminThreadLocal.getEmpNo(), FlowNameEnum.MAIL_RETURN.getDoneName());
// 更新三级机构专班的待办
workService.updateTodo(mailId, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.RETURN_RECTIFICATION.getName());
workService.updateTodo(mailId, RoleEnum.THREE_DEPT_CLASSES.getRoleId(), mail.getThreeDeptId(), FlowNameEnum.RETURN_RECTIFICATION.getName());
// 更新信件
Mail mail = mailService.getById(mailId);
mail.setUpdateTime(now)
.setFlowKey(FlowNodeEnum.VERIFY.getKey())
.setFlowBeforeName("信件退回");

10
mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeSignFlow.java

@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
@ -57,6 +58,8 @@ public class ThreeSignFlow extends Flow {
}
String reason = data.getString("reason");
Assert.hasText(reason, "参数错误");
Mail mail = mailService.getById(mailId);
MailReturn mailReturn = new MailReturn()
.setMailId(mailId)
.setReason(reason)
@ -66,12 +69,11 @@ public class ThreeSignFlow extends Flow {
.setCreateTime(now);
mailReturnService.save(mailReturn);
// 更新已办
work.setUpdateTime(now).setWorkState(Work.State.done.name());
work.setUpdateTime(now).setWorkState(Work.State.done.name()).setFlowName(FlowNameEnum.MAIL_RETURN.getDoneName());
workService.updateById(work);
// 更新二级机构专班的待办
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.MAIL_RETURN.getName());
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.MAIL_RETURN.getName());
// 更新信件
Mail mail = mailService.getById(mailId);
mail.setUpdateTime(now)
.setFlowKey(FlowNodeEnum.SECOND_DISTRIBUTE.getKey())
.setFlowBeforeName("信件退回");
@ -109,7 +111,7 @@ public class ThreeSignFlow extends Flow {
JSONArray coHandingPolices = data.getJSONArray("coHandingPolices");
if (Objects.nonNull(coHandingPolices) && coHandingPolices.size() > 0) {
for (Object coHandingPolice : coHandingPolices) {
Map obj = (JSONObject) coHandingPolice;
Map obj = (LinkedHashMap) coHandingPolice;
String empNo = obj.get("empNo").toString();
Work coWork = workService.getOne(mail.getId(), empNo);
if (Objects.nonNull(coWork)) {

21
mailbox-lan/src/main/java/com/biutag/lan/flow/node/ThreeVerifyFlow.java

@ -4,11 +4,13 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.biutag.enums.RoleEnum;
import com.biutag.exception.BusinessException;
import com.biutag.lan.config.AdminThreadLocal;
import com.biutag.lan.domain.Mail;
import com.biutag.lan.domain.Work;
import com.biutag.lan.enums.ExtensionState;
import com.biutag.lan.enums.WorkType;
import com.biutag.lan.flow.ActionEnum;
@ -21,6 +23,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.Optional;
@RequiredArgsConstructor
@ -56,12 +59,14 @@ public class ThreeVerifyFlow extends Flow {
Assert.notNull(extensionDays, "延期时长不能为空");
String reason = data.getString("extensionReason");
Assert.hasText(reason, "延期理由不能为空");
Mail mail = mailService.getById(mailId);
LocalDateTime now = LocalDateTime.now();
// 给二级机构增加待办
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), WorkType.extension_approval.name(), now, FlowNameEnum.PENDING_APPROVAL.getName());
Work work = workService.getOne(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId());
work.setWorkType(WorkType.extension_approval.name()).setFlowName(FlowNameEnum.PENDING_APPROVAL.getName()).setUpdateTime(now);
workService.updateById(work);
Mail mail = mailService.getById(mailId);
mail.setUpdateTime(now)
.setExtensionDays(extensionDays)
.setExtensionReason(reason)
@ -157,11 +162,17 @@ public class ThreeVerifyFlow extends Flow {
.setCompleteMethod(data.getString("completeMethod"))
.setFlowKey(nextNode.getFlowNode().getKey())
.setFlowBeforeName(nextNode.getFlowNode().getBeforeName());
mailService.updateById(mail);
// 将本人下的件改为已办
workService.updateDone(mail.getId(), AdminThreadLocal.getRoleId(), now);
workService.updateDone(mail.getId(), AdminThreadLocal.getRoleId(), AdminThreadLocal.getDeptId(), FlowNameEnum.VERIFY.getDoneName());
// 处理协办民警
threeSignFlow.saveCoHandling(mail, data);
JSONArray coHandingPolices = data.getJSONArray("coHandingPolices");
if (Objects.nonNull(coHandingPolices) && !coHandingPolices.isEmpty()) {
mail.setCoHandlingPolices(coHandingPolices.toJSONString());
}
// 更新信件
mailService.updateById(mail);
}
public Flow offline(String nextActionKey, String mailId, JSONObject data) {
@ -170,7 +181,7 @@ public class ThreeVerifyFlow extends Flow {
Mail mail = mailService.getById(mailId);
applicationCompleted(nextActionKey, mail, data, now);
// 给二级机构专班增加待办
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), now, FlowNameEnum.PENDING_APPROVAL.getName());
workService.updateTodo(mailId, RoleEnum.SECOND_DEPT_CLASSES.getRoleId(), mail.getSecondDeptId(), FlowNameEnum.PENDING_APPROVAL.getName());
return null;
}

12
mailbox-lan/src/main/java/com/biutag/lan/service/MailService.java

@ -87,7 +87,7 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
}
MailVo mailVo = MailVo.of(mail);
List<MailApproval> list = mailApprovalService.list(mailId);
List<MailFlow> flows = mailFlowService.list(mailId)
// 时间倒叙
@ -99,6 +99,8 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
// 部门会签
mailVo.setCountersigns(mailCountersignService.list(mailId));
// 审批
List<MailApproval> list = mailApprovalService.list(mailId);
if (!list.isEmpty()) {
// 线下
if (CompleteMethod.offline.name().equals(mail.getCompleteMethod())) {
@ -210,12 +212,12 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
public boolean invalidCompletion(InvalidCompletion completion) {
LocalDateTime now = LocalDateTime.now();
// 将我的工作更新为已办
workService.updateDone(completion.getMailId(), AdminThreadLocal.getRoleId(), now);
workService.updateByMunicipal(completion.getMailId(), Work.State.done.name(), null);
MailSource mailSource = mailSourceService.getById(completion.getMailId());
Mail mail = mailSource.toMail()
// 办理中
.setMailState(MailState.processing.getValue())
.setMailState(MailState.completion.getValue())
.setMailFirstCategory(completion.getMailFirstCategory())
.setMailCategory(completion.getMailCategory())
.setMailLevel(completion.getMailLevel())
@ -299,7 +301,9 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
workService.updateById(work);
if (!returnFlag) {
// 给市局机构增加待办
return workService.updateTodo(mailId, RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId(), WorkType.extension_approval.name(), now, FlowNameEnum.PENDING_APPROVAL.getName());
Work municipalWork = workService.getByMunicipal(mailId);
municipalWork.setWorkType(WorkType.extension_approval.name()).setUpdateTime(now).setFlowName(FlowNameEnum.PENDING_APPROVAL.getName());
return workService.updateById(municipalWork);
}
} else {
// 市局

54
mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java

@ -154,45 +154,36 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
return saveBatch(collect);
}
/**
* 更新角色的已办
*
* @param mailId
* @param roleId
* @param time
* @return
*/
public boolean updateDone(String mailId, Integer roleId, LocalDateTime time) {
Work work = getByRoleId(mailId, roleId);
work.setUpdateTime(time).setWorkState(Work.State.done.name());
public boolean updateDone(String mailId, Integer roleId, Integer deptId, String flowName) {
Work work = getOne(mailId, roleId, deptId);
work.setUpdateTime(LocalDateTime.now()).setWorkState(Work.State.done.name()).setFlowName(flowName);
return updateById(work);
}
/**
* 更新个人的角色已办
*
* @param mailId
* @param empNo
* @param time
* @return
*/
public boolean updateDone(String mailId, String empNo, LocalDateTime time) {
public boolean updateDone(String mailId, String empNo, String flowName) {
Work work = getOne(mailId, empNo);
work.setUpdateTime(time).setWorkState(Work.State.done.name());
work.setUpdateTime(LocalDateTime.now()).setWorkState(Work.State.done.name()).setFlowName(flowName);
return updateById(work);
}
public boolean updateTodo(String mailId, String empNo, String flowName) {
Work work = getOne(mailId, empNo);
work.setUpdateTime(LocalDateTime.now()).setWorkState(Work.State.todo.name()).setFlowName(flowName);
return updateById(work);
}
public boolean updateTodo(String mailId, Integer roleId, LocalDateTime time, String flowName) {
Work work = getByRoleId(mailId, roleId);
work.setUpdateTime(time).setWorkState(Work.State.todo.name()).setPoliceEmpNo(null).setFlowName(flowName);
public boolean updateTodo(String mailId, Integer roleId, Integer deptId, String flowName) {
Work work = getOne(mailId, roleId, deptId);
work.setUpdateTime(LocalDateTime.now()).setWorkState(Work.State.todo.name()).setFlowName(flowName);
return updateById(work);
}
public boolean updateTodo(String mailId, Integer roleId, String workType, LocalDateTime time, String flowName) {
Work work = getByRoleId(mailId, roleId);
work.setUpdateTime(time).setWorkState(Work.State.todo.name()).setPoliceEmpNo(null).setWorkType(workType).setFlowName(flowName);
public boolean updateByMunicipal(String mailId, String workState, String flowName) {
Work work = getByMunicipal(mailId);
work.setUpdateTime(LocalDateTime.now())
.setWorkState(workState)
.setFlowName(flowName);
return updateById(work);
}
@ -254,15 +245,6 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
return getOne(queryWrapper);
}
public Work getByRoleId(String mailId, Integer roleId) {
LambdaQueryWrapper<Work> queryWrapper = new LambdaQueryWrapper<Work>()
.eq(Work::getMailId, mailId)
.eq(Work::getSignRoleId, roleId)
.eq(Work::getWorkType, WorkType.processing.name())
.eq(Work::getMainDeptFlag, true);
return getOne(queryWrapper);
}
public Work getOne(String mailId, Integer roleId, Integer deptId) {
LambdaQueryWrapper<Work> queryWrapper = new LambdaQueryWrapper<Work>()
.eq(Work::getMailId, mailId)

12
mailbox-lan/src/main/resources/application.yml

@ -23,6 +23,10 @@ spring:
max-file-size: 100MB
max-request-size: 100MB
mybatis-plus:
# 对应的 XML 文件位置
mapper-locations: classpath*:mapper/*Mapper.xml
# Sa-token配置
sa-token:
token-name: admin # token的名称
@ -33,11 +37,9 @@ sa-token:
token-style: random-64 # token生成的风格
is-print: false # 打印版本字符画
is-log: false # 是否输出操作日志
logging:
level:
root: INFO
com.biutag: debug
mybatis-plus:
# 对应的 XML 文件位置
mapper-locations: classpath*:mapper/*Mapper.xml
com.biutag: debug

BIN
mailbox-lan/src/main/resources/templates/《处理反馈表》.doc

Binary file not shown.

BIN
mailbox-lan/src/main/resources/templates/《核查办理报告》.doc

Binary file not shown.

1
mailbox-lan/src/test/java/com/biutag/lan/JsonTest.java

@ -16,5 +16,6 @@ public class JsonTest {
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(map));
JSONArray jsonArray = jsonObject.getJSONArray("a");
System.out.println();
}
}

32
mailbox-lan/src/test/java/com/biutag/lan/TestResource.java

@ -0,0 +1,32 @@
package com.biutag.lan;
import org.junit.jupiter.api.Test;
import java.io.*;
public class TestResource {
@Test
public void testClassResource() throws IOException {
// InputStream is = getClass().getResourceAsStream("/templates/《处理反馈表》.doc");
File file = new File("D:\\deploy\\文档.doc");
FileInputStream is = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(is, "UTF-8");
// 创建UTF-8编码的输出流
FileOutputStream os = new FileOutputStream("D:\\deploy\\文档1.doc");
// 创建UTF-8编码的写入器
OutputStreamWriter writer = new OutputStreamWriter(os, "UTF-8");
int c;
while ((c = reader.read()) != -1) {
// 将每个字节从ISO-8859-1转换为UTF-8并写入输出流
writer.write((char) c);
}
// 关闭流
reader.close();
writer.close();
}
}

7
pom.xml

@ -121,13 +121,6 @@
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>

1
sql/240227.sql

@ -0,0 +1 @@
ALTER TABLE mailbox.mail ALTER COLUMN verify_attachments TYPE text USING verify_attachments::text;
Loading…
Cancel
Save