| | |
| | | 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.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.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | |
| | | * @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 |
| | |
| | | //获取当前登录人 |
| | | 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()); |
| | | } |
| | | } |
| | | //更新查询条件 |
| | | this.updateQueryWrapper(queryWrapper, user, scope); |
| | | |
| | | queryWrapper.eq(null != param.getDeptId(), "dept_id", param.getDeptId()); |
| | | queryWrapper.like(null != param.getName(), "title", param.getName()); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取用户待处理工单数 |
| | | * @param status |
| | | * @param userId |
| | | * 获取当前用户待办工单,根据用户类型或者没有指定处理人或者指定任务处理人的工单数量 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | public Integer getNumByUser(String status, String userId) { |
| | | public Integer getTodoNumByUser(SysUser user) { |
| | | |
| | | QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>(); |
| | | if (StringUtils.isBlank(userId) || StringUtils.isBlank(status)) { |
| | | return 0; |
| | | } |
| | | |
| | | queryWrapper.eq("assignee_id", userId); |
| | | queryWrapper.eq("status", status); |
| | | 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()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | //更新入库通知单状态 |
| | | if (work.getBizType().equals(WorkBizType.TYPE_10.getCode())) { |
| | | noticeInMapper.auditComplete(work.getBusinessId(), work.getStatus()); |
| | | noticeService.updateNoticeInStatus(work.getBusinessId(), work.getStatus()); |
| | | } |
| | | |
| | | //更新入库通知单状态 |
| | | //更新出库通知单状态 |
| | | if (work.getBizType().equals(WorkBizType.TYPE_20.getCode())) { |
| | | noticeOutMapper.auditComplete(work.getBusinessId(), work.getStatus()); |
| | | noticeService.updateNoticeOutStatus(work.getBusinessId(), work.getStatus()); |
| | | } |
| | | } |
| | | |
| | | |
| | | public void updateData(WorkOrder work) { |
| | | workOrderMapper.updateById(work); |
| | | } |
| | | |
| | | |
| | | } |