YYC
2026-03-02 9ba1061f62fa81f4b78e1d15984db7174d148406
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.fzzy.igds.app.v1.service.impl;
 
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamOrder;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PWorkOrderDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.service.SysUserService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkBizType;
import com.fzzy.work.data.WorkNode;
import com.fzzy.work.data.WorkOrderParam;
import com.fzzy.work.data.WorkStatus;
import com.fzzy.work.domain.WorkOrder;
import com.fzzy.work.mapper.WorkOrderMapper;
import com.fzzy.work.service.WorkOrderService;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
 
/**
 * @Author: YYC
 * @Description: 工单管理-查询工单列表
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5101 implements PhoneService {
    @Resource
    private WorkOrderMapper workOrderMapper;
    @Autowired
    private SysDeptService deptService;
    @Autowired
    private SysUserService userService;
 
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5101;
    }
 
    @Override
    public PhoneResponse execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        //转化对象
        ParamOrder param = JSONObject.parseObject(req.getData().toString(), ParamOrder.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
 
        param.setCompanyId(authUser.getCompanyId());
        QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq(null != param.getStatus(), "status", WorkStatus.STATUS_30.getCode());
        String scope = WorkOrderParam.SCOPE_SELF;
        SysUser user = userService.getUserByLoginName(authUser.getUsername());
        this.updateQueryWrapper(queryWrapper, user, scope);
        List<WorkOrder> list = workOrderMapper.selectList(queryWrapper);
        SysDept dept = deptService.getCacheDept(param.getCompanyId(), param.getDeptId().toString());
        List<PWorkOrderDto> reqList = new ArrayList<>();
        PWorkOrderDto orderDto;
        if (null != dept) {
            for (WorkOrder workOrder : list) {
                orderDto = new PWorkOrderDto();
                BeanUtils.copyProperties(workOrder, orderDto);
                orderDto.setDeptName(dept.getDeptName());
                orderDto.setBizTypeName(WorkBizType.getMsg(workOrder.getBizType()));
                reqList.add(orderDto);
            }
        }
        return PhoneRespUtil.success(reqList, req);
    }
 
 
    private void updateQueryWrapper(QueryWrapper<WorkOrder> queryWrapper, SysUser user, String scope) {
 
        queryWrapper.eq("company_id", user.getCompanyId());
 
        //如果是个人工单,处理人为空或者为当前人
        if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
            queryWrapper.and((wrapper)->{
                wrapper.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());
            }
        }
    }
}