package com.fzzy.work.service; 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.constant.InoutConstant; import com.fzzy.igds.mapper.InoutNoticeInMapper; import com.fzzy.igds.mapper.InoutNoticeOutMapper; 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 org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; /** * @Desc: * @Author: Andy.jia * @Date: 2025/12/19 */ @Service public class WorkOrderService { @Resource private WorkOrderMapper workOrderMapper; @Resource private InoutNoticeInMapper noticeInMapper; @Resource private InoutNoticeOutMapper noticeOutMapper; 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 page, WorkOrderParam param) { //获取当前登录人 SysUser user = ContextUtil.getLoginUser(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("company_id", user.getCompanyId()); String scope = param.getScope(); if (StringUtils.isEmpty(scope)) scope = WorkOrderParam.SCOPE_SELF; //监管用户-查看所有库区和待办 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()); } } 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 triggerStatus() { List list = new ArrayList(); for (WorkStatus w : WorkStatus.values()) { list.add(new SysDictData(w.getMsg(), w.getCode())); } return list; } public List triggerType() { List list = new ArrayList(); for (WorkBizType w : WorkBizType.values()) { list.add(new SysDictData(w.getMsg(), w.getCode())); } return list; } public List triggerBizType() { List list = new ArrayList(); for (WorkBizType w : WorkBizType.values()) { list.add(new SysDictData(w.getMsg(), w.getCode())); } return list; } /** * 获取用户待处理工单数 * @param status * @param userId * @return */ public Integer getNumByUser(String status, String userId) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (StringUtils.isBlank(userId) || StringUtils.isBlank(status)) { return 0; } queryWrapper.eq("assignee_id", userId); queryWrapper.eq("status", status); return workOrderMapper.selectCount(queryWrapper); } 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())) { noticeInMapper.auditComplete(work.getBusinessId(), work.getStatus()); } //更新入库通知单状态 if (work.getBizType().equals(WorkBizType.TYPE_20.getCode())) { noticeOutMapper.auditComplete(work.getBusinessId(), work.getStatus()); } } }