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 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<WorkOrder> page, WorkOrderParam param) {
|
//获取当前登录人
|
SysUser user = ContextUtil.getLoginUser();
|
QueryWrapper<WorkOrder> 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<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 status
|
* @param userId
|
* @return
|
*/
|
public Integer getNumByUser(String status, String userId) {
|
|
QueryWrapper<WorkOrder> 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());
|
}
|
}
|
|
|
}
|