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 execute(PhoneRequest 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 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 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 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 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; } }