sgj
7 天以前 22a4f2b58fa1baa233e621d1406df456b516b4b1
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
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.ParamInoutHandle;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
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.constant.InoutConstant;
import com.fzzy.igds.data.FileData;
import com.fzzy.igds.data.InoutData;
import com.fzzy.igds.data.PageResponse;
import com.fzzy.igds.domain.FileInfo;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.domain.InoutSysConf;
import com.fzzy.igds.mapper.InoutRecordMapper;
import com.fzzy.igds.service.FileService;
import com.fzzy.igds.service.InoutConfService;
import com.fzzy.igds.service.InoutRecordService;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
 
/**
 * @Author: YYC
 * @Description: 粮食购销-入库值仓提交
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5402 implements PhoneService {
    @Resource
    private InoutRecordMapper inoutRecordMapper;
    @Resource
    private InoutRecordService inoutRecordService;
    @Resource
    private InoutConfService inoutConfService;
    @Resource
    private FileService fileService;
 
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5402;
    }
 
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
 
        //转化为对象
        ParamInoutHandle param = JSONObject.parseObject(req.getData().toString(), ParamInoutHandle.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        param.setCompanyId(authUser.getCompanyId());
        param.setDeptId(authUser.getDeptId());
 
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(param.getCompanyId())) {
            queryWrapper.eq("company_id", param.getCompanyId());
        }
        if (StringUtils.isNotBlank(param.getId())) {
            queryWrapper.eq("id", param.getId());
        }
        //值仓提交前,再次确认当前流水是否为值仓流程
        InoutRecord inoutRecord = inoutRecordMapper.selectOne(queryWrapper);
        if (!InoutConstant.PROGRESS_HANDLE.equals(inoutRecord.getProgress())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "该单子不在值仓状态,不能进行值仓提交!");
        }
 
        InoutData data = new InoutData();
        BeanUtils.copyProperties(inoutRecord, data);
        //值仓结束提交,需更新流程状态、值仓结束时间、值仓人、值仓扣重等
        data.setDeOther(param.getDeHandle());
        data.setHandleUser(authUser.getCname());
        //设置值仓图片信息
        List<FileInfo> files = new ArrayList<>();
        FileInfo fileData1 = new FileInfo();
        FileInfo fileData2 = new FileInfo();
        fileData1.setFileName(param.getFileName1());
        fileData2.setFileName(param.getFileName2());
        files.add(fileData1);
        files.add(fileData2);
        data.setFiles(files);
 
        if (null == data.getHandleUser()) {
            data.setHandleUser(authUser.getUsername());
        }
        InoutSysConf inoutSysConf = inoutConfService.getCacheInoutSysConf(authUser.getCompanyId(), data.getDeptId());
        if (null == inoutSysConf) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提示:当前系统中流程配置异常,请联系管理员");
        }
 
        // 获取下一个流程状态
        String curProgress = data.getProgress();
        String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
        data.setProgress(nextProgress);
        data.setHandleEnd(new Date());
 
        // 执行数据更新
        int num = inoutRecordService.updateInoutRecord(data);
        if (num == 0) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提交失败!");
        }
        //附件处理
        fileService.saveInoutFiles(data.getFiles(), data.getId(), curProgress, "INOUT");
 
        return PhoneRespUtil.success(RespCodeEnum.CODE_0000, req);
//        if (param.getType().equals(PhoneConstant.PHONE_INOUT_START)) {
//            //值仓开始提交,只更新值仓开始时间
//            int i = inoutRecordService.updateInoutRecord(data);
//            if (i > 0) {
//                return PhoneRespUtil.success(RespCodeEnum.CODE_0000, req);
//            }
//            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提交失败!");
//        } else {
//            //值仓结束提交,需更新流程状态、值仓结束时间、值仓人、值仓扣重等
//            data.setDeOther(param.getDeHandle());
//            data.setHandleUser(authUser.getCname());
//            //设置值仓图片信息
//            List<FileInfo> files = new ArrayList<>();
//            FileInfo fileData1 = new FileInfo();
//            FileInfo fileData2 = new FileInfo();
//            fileData1.setFileName(param.getFileName1());
//            fileData2.setFileName(param.getFileName2());
//            files.add(fileData1);
//            files.add(fileData2);
//            data.setFiles(files);
//
//            if (null == data.getHandleUser()) {
//                data.setHandleUser(authUser.getUsername());
//            }
//            InoutSysConf inoutSysConf = inoutConfService.getCacheInoutSysConf(authUser.getCompanyId(), data.getDeptId());
//            if (null == inoutSysConf) {
//                return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提示:当前系统中流程配置异常,请联系管理员");
//            }
//
//            // 获取下一个流程状态
//            String curProgress = data.getProgress();
//            String nextProgress = getNextProgress(curProgress, data.getType(), inoutSysConf);
//            data.setProgress(nextProgress);
//            data.setHandleEnd(new Date());
//
//            // 执行数据更新
//            int num = inoutRecordService.updateInoutRecord(data);
//            if (num == 0) {
//                return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "提交失败!");
//            }
//            //附件处理
//            fileService.saveInoutFiles(data.getFiles(), data.getId(), curProgress, "INOUT");
//
//            return PhoneRespUtil.success(RespCodeEnum.CODE_0000, req);
//        }
    }
 
 
    /**
     * 获取下一流程
     *
     * @param curProgress
     * @param type
     * @param sysConf
     * @return
     */
    private String getNextProgress(String curProgress, String type, InoutSysConf sysConf) {
        String nextProgress = null;
        List<String> list = null;
        if (Constant.TYPE_IN.equals(type)) {
            list = Arrays.asList(sysConf.getProgressIn().split("-"));
        }
        if (Constant.TYPE_OUT.equals(type)) {
            list = Arrays.asList(sysConf.getProgressOut().split("-"));
        }
        if (list != null) {
            for (int i = 0; i < list.size() - 1; i++) {
                if (curProgress.equals(list.get(i))) {
                    nextProgress = list.get(i + 1);
                    break;
                }
            }
        }
        return nextProgress;
    }
}