package com.fzzy.igds;
|
|
import com.bstek.dorado.annotation.DataProvider;
|
import com.bstek.dorado.annotation.DataResolver;
|
import com.bstek.dorado.annotation.Expose;
|
import com.bstek.dorado.data.provider.Page;
|
import com.fzzy.common.constant.BizTypeEnum;
|
import com.fzzy.igds.constant.Constant;
|
import com.fzzy.igds.data.BaseResp;
|
import com.fzzy.igds.data.InoutData;
|
import com.fzzy.igds.data.InoutParam;
|
import com.fzzy.igds.domain.InoutNoticeIn;
|
import com.fzzy.igds.domain.InoutNoticeOut;
|
import com.fzzy.igds.domain.InoutRecord;
|
import com.fzzy.igds.service.DepotService;
|
import com.fzzy.igds.service.ExportService;
|
import com.fzzy.igds.service.InoutNoticeService;
|
import com.fzzy.igds.service.InoutRecordService;
|
import com.fzzy.igds.utils.ContextUtil;
|
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.utils.StringUtils;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.apache.commons.lang3.time.DateUtils;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
/**
|
* @Description 出入库详单页面管理
|
* @Author CZT
|
* @Date 2025/12/05 10:40
|
*/
|
@Component
|
public class InoutDataPR {
|
|
@Resource
|
private InoutRecordService inoutRecordService;
|
@Resource
|
private ExportService exportService;
|
@Resource
|
private InoutNoticeService noticeService;
|
@Resource
|
private DepotService depotService;
|
|
/**
|
* inoutDataPR#pageInoutData
|
*
|
* @param page
|
* @param param
|
*/
|
@DataProvider
|
public void pageInoutData(Page<InoutRecord> page, InoutParam param) {
|
com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutRecord> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
|
|
if (null == param) {
|
param = new InoutParam();
|
}
|
inoutRecordService.listPageInout(corePage, param);
|
|
// 重新封装
|
page.setEntities(corePage.getRecords());
|
page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
|
}
|
|
/**
|
* 保存出入库数据 inoutDataPR#saveInoutData
|
*/
|
@DataResolver
|
public String saveInoutData(InoutRecord data) {
|
if (Constant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
|
return "系统:已经删除的数据不支持修改!";
|
}
|
if (!Constant.PROGRESS_RECORD.equals(data.getProgress())) {
|
return "系统:未结束流程的数据不支持修改!";
|
}
|
int i = inoutRecordService.updateInoutRecord(data);
|
if (i > 0) {
|
return null;
|
} else {
|
return "保存失败!";
|
}
|
}
|
|
/**
|
* inoutDataPR#errorInoutData 出入库数据执行 异常终止
|
*
|
* @param data
|
* @return
|
* @throws Exception
|
*/
|
@DataResolver
|
@Transactional
|
@Log(title = "出入库数据执行异常终止", businessType = BusinessType.UPDATE,bizType = BizTypeEnum.INOUT)
|
public String errorInoutData(InoutRecord data) {
|
return inoutRecordService.errorInoutData(data);
|
}
|
|
/**
|
* inoutDataPR#printWeightBill 获取打印单信息
|
*
|
* @param data
|
* @return
|
* @throws Exception
|
*/
|
@Expose
|
public String printWeightBill(InoutRecord data) {
|
if (Constant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
|
return "删除的数据不支持打印!";
|
}
|
if (!Constant.PROGRESS_RECORD.equals(data.getProgress())) {
|
return "未完成的数据不支持打印!";
|
}
|
|
if (Constant.TYPE_IN.equals(data.getType())) {
|
return inoutRecordService.inWeightBill(data);
|
} else {
|
return inoutRecordService.outWeightBill(data);
|
}
|
}
|
|
|
/**
|
* inoutDataPR#initDataByHand 新增
|
*
|
* @return
|
*/
|
@DataProvider
|
public InoutData initDataByHand(String type) {
|
SysUser user = ContextUtil.getLoginUser();
|
InoutData data = new InoutData();
|
data.setCompanyId(user.getCompanyId());
|
data.setRegisterTime(new Date());
|
data.setType(type);
|
data.setRegisterUser(user.getUserName());
|
data.setDeptId(ContextUtil.subDeptId(user));
|
data.setCheckUser(user.getUserName());
|
data.setProgress(Constant.PROGRESS_RECORD);
|
data.setRecordStatus(Constant.RECORD_STATUS_ADD);
|
return data;
|
}
|
|
/**
|
* 补单 inoutDataPR#addData
|
*/
|
@DataResolver
|
public String addData(InoutData data) {
|
if (data.getSettleWeight() <= 0.0) {
|
return "系统:结算重量必须大于0";
|
}
|
|
return inoutRecordService.handAddInoutRecord(data);
|
}
|
|
/**
|
* inoutDataPR#printWeightBill 获取打印单信息
|
*
|
* @param data
|
* @return
|
* @throws Exception
|
*/
|
@Expose
|
public String printWeightBillHand(InoutData data) {
|
if (Constant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
|
return "删除的数据不支持打印!";
|
}
|
if (!Constant.PROGRESS_RECORD.equals(data.getProgress())) {
|
return "未完成的数据不支持打印!";
|
}
|
|
if (Constant.TYPE_IN.equals(data.getType())) {
|
return inoutRecordService.inWeightBill(data);
|
} else {
|
return inoutRecordService.outWeightBill(data);
|
}
|
}
|
|
/**
|
* inoutDataPR#analysisExcel
|
*
|
* @param fileName
|
* @return
|
*/
|
@Expose
|
public BaseResp analysisExcel(String fileName) {
|
|
try {
|
List<InoutRecord> inoutRecords = exportService.readExcel(fileName);
|
if (null == inoutRecords || inoutRecords.isEmpty()) {
|
return BaseResp.error("导入失败,原因-->未获取到excel中文档数据!");
|
}
|
|
//判断数据完整性
|
boolean addTag = false;
|
int hour = 10;
|
int min = 10;
|
|
for (InoutRecord inoutRecord : inoutRecords) {
|
//设置数据状态及流程
|
inoutRecord.setRecordStatus(Constant.RECORD_STATUS_ADD);
|
inoutRecord.setProgress(Constant.PROGRESS_RECORD);
|
|
//校验通知单
|
String noticeId = inoutRecord.getNoticeId();
|
if(StringUtils.isBlank(noticeId)){
|
addTag = true;
|
break;
|
}
|
if(noticeId.startsWith("RK_")){
|
InoutNoticeIn noticeInOne = noticeService.getNoticeInOne(noticeId);
|
if(null == noticeInOne){
|
addTag = true;
|
break;
|
}
|
inoutRecord.setDeptId(noticeInOne.getDeptId());
|
}
|
if(noticeId.startsWith("CK_")){
|
InoutNoticeOut noticeOut = noticeService.getNoticeOutOne(noticeId);
|
if(null == noticeOut){
|
addTag = true;
|
break;
|
}
|
inoutRecord.setDeptId(noticeOut.getDeptId());
|
}
|
|
//校验仓库
|
String depotName = inoutRecord.getDepotId();
|
if(StringUtils.isBlank(depotName)){
|
addTag = true;
|
break;
|
}
|
//根据仓库名称获取仓库编码
|
String depotId = depotService.getDepotId(inoutRecord.getDeptId(), depotName);
|
if(StringUtils.isBlank(depotId)){
|
addTag = true;
|
break;
|
}
|
inoutRecord.setDepotId(depotId);
|
|
//校验日期是否完整
|
String plateNum = inoutRecord.getPlateNum();
|
if(null == plateNum){
|
addTag = true;
|
break;
|
}
|
inoutRecord.setPlateNum(plateNum);
|
|
//校验日期是否完整
|
Date registerTime = inoutRecord.getRegisterTime();
|
if(null == registerTime){
|
addTag = true;
|
break;
|
}
|
|
//设置登记、称重、完成时间
|
String time = DateFormatUtils.format(registerTime, "yyyy-MM-dd");
|
if(min >= 60){
|
min = 10;
|
hour ++;
|
}
|
time += " " + hour + ":" + min + ":00";
|
inoutRecord.setRegisterTime(DateUtils.parseDate(time,"yyyy-MM-dd HH:mm:ss"));
|
if(Constant.TYPE_IN.equals(inoutRecord.getType())){
|
inoutRecord.setFullWeightTime(DateUtils.addMinutes(inoutRecord.getRegisterTime(), 3));
|
inoutRecord.setHandleEnd(DateUtils.addMinutes(inoutRecord.getRegisterTime(), 30));
|
inoutRecord.setEmptyWeightTime(DateUtils.addMinutes(inoutRecord.getRegisterTime(), 50));
|
}
|
if(Constant.TYPE_OUT.equals(inoutRecord.getType())){
|
inoutRecord.setEmptyWeightTime(DateUtils.addMinutes(inoutRecord.getRegisterTime(), 3));
|
inoutRecord.setHandleEnd(DateUtils.addMinutes(inoutRecord.getRegisterTime(), 30));
|
inoutRecord.setFullWeightTime(DateUtils.addMinutes(inoutRecord.getRegisterTime(), 50));
|
}
|
inoutRecord.setCompleteTime(DateUtils.addHours(inoutRecord.getRegisterTime(), 1));
|
|
inoutRecord.setCompanyId(ContextUtil.getCompanyId());
|
min ++;
|
}
|
|
if(addTag){
|
return BaseResp.error("导入失败,原因-->数据校验失败,请核查数据<日期、类型、车牌、通知单、仓库、品种等信息>!!!");
|
}
|
|
//新增数据
|
String msg = inoutRecordService.addInoutRecordList(inoutRecords);
|
|
if(null == msg){
|
return BaseResp.success("导入成功,共计导入" + inoutRecords.size() + "条数据!" );
|
}else {
|
return BaseResp.error(msg);
|
}
|
} catch (Exception e) {
|
return BaseResp.error("导入失败,原因-->" + e.getMessage());
|
}
|
|
}
|
}
|