From 19dbb9026527cdfba75b74e8048c46781fe91c9f Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期三, 21 一月 2026 15:10:15 +0800
Subject: [PATCH] 优化通知单审核后状态更新
---
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java | 246 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 240 insertions(+), 6 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
index 08605f8..31f4d2c 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
@@ -2,11 +2,26 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fzzy.igds.constant.Constant;
+import com.fzzy.igds.mapper.InoutNoticeInMapper;
+import com.fzzy.igds.mapper.InoutNoticeOutMapper;
+import com.fzzy.igds.service.InoutNoticeService;
import com.fzzy.igds.utils.ContextUtil;
+import com.fzzy.igds.utils.DateUtil;
+import com.fzzy.work.data.WorkNode;
+import com.fzzy.work.data.WorkStatus;
+import com.fzzy.work.data.WorkBizType;
import com.fzzy.work.data.WorkOrderParam;
import com.fzzy.work.domain.WorkOrder;
import com.fzzy.work.mapper.WorkOrderMapper;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+
+import java.util.*;
import javax.annotation.Resource;
@@ -15,22 +30,241 @@
* @Author: Andy.jia
* @Date: 2025/12/19
*/
+@Slf4j
@Service
public class WorkOrderService {
@Resource
private WorkOrderMapper workOrderMapper;
+ @Resource
+ private InoutNoticeService noticeService;
+ @Resource
+ private InoutNoticeInMapper noticeInMapper;
+ @Resource
+ private InoutNoticeOutMapper noticeOutMapper;
- public void pageQuery(Page<WorkOrder> page, WorkOrderParam param) {
+ public void addData(WorkOrder data) {
+ if (null == data.getId()) data.setId(ContextUtil.generateOrderId("GD"));
+
+ if (null == data.getCompanyId()) data.setCompanyId(ContextUtil.getCompanyId());
+
+ if (null == data.getCreateBy()) {
+ SysUser user = ContextUtil.getLoginUser();
+ data.setCreateBy(user.getUserName());
+ data.setCreateById(user.getLoginName());
+ }
+ data.setUpdateTime(new Date());
+
+ workOrderMapper.insert(data);
+ }
+
+ public void pageQueryByUserType(Page<WorkOrder> page, WorkOrderParam param) {
+ //鑾峰彇褰撳墠鐧诲綍浜�
+ SysUser user = ContextUtil.getLoginUser();
QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
- if (null == param) {
- param = new WorkOrderParam();
- }
- param.setCompanyId(ContextUtil.getCompanyId());
+ String scope = param.getScope();
+ if (StringUtils.isEmpty(scope)) scope = WorkOrderParam.SCOPE_SELF;
- queryWrapper.eq("company_id", param.getCompanyId());
+ //鏇存柊鏌ヨ鏉′欢
+ this.updateQueryWrapper(queryWrapper, user, scope);
+
+ queryWrapper.eq(null != param.getDeptId(), "dept_id", param.getDeptId());
+ queryWrapper.like(null != param.getName(), "title", param.getName());
+ queryWrapper.eq(null != param.getStatus(), "status", param.getStatus());
+
+ if (null != param.getStart()) {
+ queryWrapper.gt("create_time", DateUtil.getNextZero(param.getStart()));
+ }
+ if (null != param.getEnd()) {
+ queryWrapper.lt("create_time", DateUtil.getCurZero(param.getEnd()));
+ }
workOrderMapper.selectPage(page, queryWrapper);
}
+
+ public List<SysDictData> triggerStatus() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ for (WorkStatus w : WorkStatus.values()) {
+ list.add(new SysDictData(w.getMsg(), w.getCode()));
+ }
+ return list;
+ }
+
+ public List<SysDictData> triggerType() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ for (WorkBizType w : WorkBizType.values()) {
+ list.add(new SysDictData(w.getMsg(), w.getCode()));
+ }
+ return list;
+ }
+
+ public List<SysDictData> triggerBizType() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ for (WorkBizType w : WorkBizType.values()) {
+ list.add(new SysDictData(w.getMsg(), w.getCode()));
+ }
+ return list;
+ }
+
+ public List<SysDictData> triggerNode() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ for (WorkNode w : WorkNode.values()) {
+ list.add(new SysDictData(w.getMsg(), w.getCode()));
+ }
+ return list;
+ }
+
+ public WorkOrder selectByBusinessId(String businessId) {
+
+ QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("business_id", businessId);
+
+ List<WorkOrder> list = workOrderMapper.selectList(queryWrapper);
+
+ if (null == list || list.isEmpty()) return null;
+
+ return list.get(0);
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鐢ㄦ埛寰呭姙宸ュ崟锛屾牴鎹敤鎴风被鍨嬫垨鑰呮病鏈夋寚瀹氬鐞嗕汉鎴栬�呮寚瀹氫换鍔″鐞嗕汉鐨勫伐鍗曟暟閲�
+ * @param user
+ * @return
+ */
+ public Integer getTodoNumByUser(SysUser user) {
+
+ QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
+
+ this.updateQueryWrapper(queryWrapper, user, WorkOrderParam.SCOPE_SELF);
+
+ return workOrderMapper.selectCount(queryWrapper);
+ }
+
+ /**
+ * 鑾峰彇椤甸潰姹囨�荤粺璁★紝鎴戠殑寰呭姙宸ュ崟锛涙垜鐨勬寚娲惧伐鍗曪紱浠婃棩寰呭姙宸ュ崟锛涙�诲緟鍔炲伐鍗�
+ *
+ * 鏌ヨ鎵�鏈夌殑寰呭姙宸ュ崟锛岀劧鍚庤繘琛屾眹鎬荤粺璁�
+ * @return
+ */
+ public Map<String, String> pageSummary() {
+ Map<String, String> result = new HashMap<>();
+
+ //鎴戠殑寰呭姙宸ュ崟
+ result.put("selfTodo", "0");
+ //鎴戠殑鎸囨淳宸ュ崟
+ result.put("assignTodo", "0");
+ //浠婃棩寰呭姙宸ュ崟
+ result.put("todayTodo", "0");
+ //鎬诲緟鍔炲伐鍗曟暟閲�
+ result.put("sumTodo", "0");
+
+ //鑾峰彇鎬诲緟鍔炲伐鍗�
+ SysUser user = ContextUtil.getLoginUser();
+ QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
+
+ String scope = WorkOrderParam.SCOPE_SELF;
+ this.updateQueryWrapper(queryWrapper, user, scope);
+
+ //鑾峰彇鎵�鏈夌殑宸ュ崟
+ List<WorkOrder> list = workOrderMapper.selectList(queryWrapper);
+
+ if (null == list || list.isEmpty()) {
+ log.info("---------宸ュ崟姹囨�荤粨鏋�---------{}", result);
+ return result;
+ }
+
+ int selfTodo = 0, assignTodo = 0, todayTodo = 0, sumTodo = list.size();
+ for (WorkOrder work : list) {
+ if (null == work.getAssigneeId()) {
+ selfTodo++;
+ }
+ if (null != work.getAssigneeId() && work.getAssigneeId().equals(user.getLoginName())) {
+ selfTodo++;
+ assignTodo++;
+ }
+ if (DateUtil.isToday(work.getCreateTime())) {
+ todayTodo++;
+ }
+ }
+ //鎴戠殑寰呭姙宸ュ崟
+ result.put("selfTodo", selfTodo + "");
+ //鎴戠殑鎸囨淳宸ュ崟
+ result.put("assignTodo", assignTodo + "");
+ //浠婃棩寰呭姙宸ュ崟
+ result.put("todayTodo", todayTodo + "");
+ //鎬诲緟鍔炲伐鍗曟暟閲�
+ result.put("sumTodo", sumTodo + "");
+
+ log.info("---------宸ュ崟姹囨�荤粨鏋�---------{}", result);
+ return result;
+ }
+
+ private void updateQueryWrapper(QueryWrapper<WorkOrder> queryWrapper, SysUser user, String scope) {
+
+ queryWrapper.eq("company_id", user.getCompanyId());
+
+ //濡傛灉鏄釜浜哄伐鍗曪紝澶勭悊浜轰负绌烘垨鑰呬负褰撳墠浜�
+ if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
+ queryWrapper.isNull("assignee_id").or().eq("assignee_id", user.getLoginName());
+ }
+
+ //鐩戠鐢ㄦ埛-鏌ョ湅鎵�鏈夊簱鍖哄拰寰呭姙
+ if (Constant.USER_TYPE_10.equals(user.getUserType())) {
+ if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
+ queryWrapper.eq("node", WorkNode.NODE2.getCode());
+ }
+ }
+
+ //搴撳尯鐢ㄦ埛锛屽鏋滄槸鍏徃鐢ㄦ埛鍙互鏌ョ湅鍏徃涓嬪睘鎵�鏈夊簱鍖猴紝濡傛灉涓哄綋鍓嶅簱鍖哄彧鏌ヨ褰撳墠搴撳尯
+ if (Constant.USER_TYPE_30.equals(user.getUserType())) {
+ if (ContextUtil.isDepotUser(user.getDeptId() + "")) {
+ queryWrapper.eq("dept_id", user.getDeptId() + "");
+ } else {
+ queryWrapper.likeRight("dept_id", user.getDeptId() + "");
+ }
+ if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
+ queryWrapper.eq("node", WorkNode.NODE1.getCode());
+ }
+
+ }
+
+ //閾惰鐢ㄦ埛锛屾牴鎹悎鍚屾煡璇㈤摱琛屼笅鎵�鏈夊簱鍖�
+ if (Constant.USER_TYPE_20.equals(user.getUserType())) {
+ //濡傛灉娌℃湁閰嶇疆閾惰锛岃缃竴涓笉瀛樺湪鐨勯摱琛屽彿
+ if (StringUtils.isBlank(user.getUserData())) user.setUserData("9");
+ queryWrapper.eq("bank_id", user.getUserData());
+ if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
+ queryWrapper.eq("node", WorkNode.NODE3.getCode());
+ }
+ }
+ }
+
+
+ public WorkOrder selectById(String orderId) {
+ if (null == orderId) return null;
+ return workOrderMapper.selectById(orderId);
+ }
+
+ public void complete(WorkOrder work) {
+ //鏇存柊宸ュ崟
+ workOrderMapper.updateById(work);
+
+ //鏇存柊鍏ュ簱閫氱煡鍗曠姸鎬�
+ if (work.getBizType().equals(WorkBizType.TYPE_10.getCode())) {
+ noticeService.updateNoticeInStatus(work.getBusinessId(), work.getStatus());
+ }
+
+ //鏇存柊鍑哄簱閫氱煡鍗曠姸鎬�
+ if (work.getBizType().equals(WorkBizType.TYPE_20.getCode())) {
+ noticeService.updateNoticeOutStatus(work.getBusinessId(), work.getStatus());
+ }
+ }
+
+
+ public void updateData(WorkOrder work) {
+ workOrderMapper.updateById(work);
+ }
+
+
}
--
Gitblit v1.9.3