czt
2026-02-07 2ebf9333d0a53949ff647444064a4c2b73c52fd3
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutDataPR.java
@@ -4,17 +4,29 @@
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.Date;
import java.util.*;
/**
 * @Description 出入库详单页面管理
@@ -26,6 +38,12 @@
    @Resource
    private InoutRecordService inoutRecordService;
    @Resource
    private ExportService exportService;
    @Resource
    private InoutNoticeService noticeService;
    @Resource
    private DepotService depotService;
    /**
     * inoutDataPR#pageInoutData
@@ -37,7 +55,7 @@
    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) {
        if (null == param) {
            param = new InoutParam();
        }
        inoutRecordService.listPageInout(corePage, param);
@@ -58,7 +76,8 @@
        if (!Constant.PROGRESS_RECORD.equals(data.getProgress())) {
            return "系统:未结束流程的数据不支持修改!";
        }
        int i = inoutRecordService.updateInoutRecord(data);
        int i = inoutRecordService.checkAndUpdate(data);
        if (i > 0) {
            return null;
        } else {
@@ -75,6 +94,7 @@
     */
    @DataResolver
    @Transactional
    @Log(title = "出入库数据执行异常终止", businessType = BusinessType.UPDATE,bizType = BizTypeEnum.INOUT)
    public String errorInoutData(InoutRecord data) {
        return inoutRecordService.errorInoutData(data);
    }
@@ -157,4 +177,123 @@
            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());
        }
    }
}