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.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 lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import java.util.*;
|
|
import javax.annotation.Resource;
|
|
/**
|
* @Desc:
|
* @Author: Andy.jia
|
* @Date: 2025/12/19
|
*/
|
@Slf4j
|
@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<WorkOrder> page, WorkOrderParam param) {
|
//获取当前登录人
|
SysUser user = ContextUtil.getLoginUser();
|
QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
|
|
String scope = param.getScope();
|
if (StringUtils.isEmpty(scope)) scope = WorkOrderParam.SCOPE_SELF;
|
|
//更新查询条件
|
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())) {
|
noticeInMapper.auditComplete(work.getBusinessId(), work.getStatus());
|
}
|
|
//更新入库通知单状态
|
if (work.getBizType().equals(WorkBizType.TYPE_20.getCode())) {
|
noticeOutMapper.auditComplete(work.getBusinessId(), work.getStatus());
|
}
|
}
|
|
|
public void updateData(WorkOrder work) {
|
workOrderMapper.updateById(work);
|
}
|
|
|
}
|