sgj
2026-03-10 5790d7573a83278667878e0f73104f8fc8ec5cf3
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
@@ -1,7 +1,7 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.igds.constant.AuditStatus;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.InoutConstant;
import com.fzzy.igds.data.*;
@@ -10,6 +10,7 @@
import com.fzzy.igds.mapper.InoutNoticeOutMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkBizType;
import com.fzzy.work.data.WorkStatus;
import com.fzzy.work.domain.WorkOrderConf;
import com.fzzy.work.service.BizWorkService;
import com.ruoyi.common.utils.StringUtils;
@@ -65,6 +66,11 @@
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
        }else {
            queryWrapper.likeRight("dept_id", ContextUtil.subDeptId(null));
        }
        if (StringUtils.isNotBlank(param.getCustomerName())) {
            queryWrapper.like("customer_name", param.getCustomerName());
        }
@@ -75,6 +81,7 @@
            queryWrapper.like("complete_status", param.getCompleteStatus());
        }
        queryWrapper.orderByDesc("id");
        noticeInMapper.selectPage(page, queryWrapper);
    }
@@ -90,6 +97,9 @@
        }
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
        }
        if (StringUtils.isNotBlank(param.getAuditStatus())) {
            queryWrapper.eq("audit_status", param.getAuditStatus());
        }
        if (StringUtils.isNotBlank(param.getCompleteStatus())) {
            queryWrapper.eq("complete_status", param.getCompleteStatus());
@@ -143,7 +153,7 @@
            //获取质押合同数据
            PledgeContract pledge = this.getPledgeByDepotId(data);
            if (null != pledge && pledge.getStatus().equals(Constant.YN_N)) {
                return BaseResp.error("当前仓库有未解压的质押合同,质押合同=" + pledge.getName());
                return BaseResp.error("当前仓库有未解押的质押合同,质押合同=" + pledge.getName());
            }
        }
@@ -177,15 +187,14 @@
        data.setUpdateTime(new Date());
        data.setCreateBy(ContextUtil.getLoginUserName());
        data.setCreateTime(new Date());
        data.setAuditStatus(AuditStatus.STATUS_10.getCode());
        data.setAuditStatus(WorkStatus.STATUS_10.getCode());
        data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
        //执行流程
        WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
        //流程不启用
        if (null == conf || Constant.YN_N.equals(conf.getValTag())) {
            data.setAuditStatus(AuditStatus.STATUS_20.getCode());
            data.setAuditDate(data.getCreateTime());
            data.setAuditStatus(WorkStatus.STATUS_50.getCode());
        } else {
            BaseResp resp = workService.startByNoticeIn(data, conf);
            log.info("---------启动工单流程------{}", resp);
@@ -198,9 +207,9 @@
    /**
     * 判断当前仓库是否在质押合同中未解压
     * 判断当前仓库是否在质押合同中未解押
     * @param data 当前数据
     * @return true-在质押合同中未解压,false-在质押合同中已解压
     * @return true-在质押合同中未解押,false-在质押合同中已解押
     */
    private PledgeContract getPledgeByDepotId(InoutNoticeIn data) {
        IgdsBaseParam param = new IgdsBaseParam();
@@ -217,6 +226,18 @@
        param.setDepotId(data.getDepotId());
        param.setBankId(data.getBankId());
        return pledgeContractService.getByDepotId(param);
    }
    /**
     * 更新审核状态
     * @param id
     * @param status
     */
    public void updateNoticeInStatus(String id, String status) {
        UpdateWrapper<InoutNoticeIn> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id", id).set("audit_status", status);
        noticeInMapper.update(null, updateWrapper);
    }
    /**
@@ -246,6 +267,11 @@
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
        }else {
            queryWrapper.likeRight("dept_id", ContextUtil.subDeptId(null));
        }
        if (StringUtils.isNotBlank(param.getCustomerName())) {
            queryWrapper.like("customer_name", param.getCustomerName());
        }
@@ -255,7 +281,7 @@
        if (StringUtils.isNotBlank(param.getCompleteStatus())) {
            queryWrapper.like("complete_status", param.getCompleteStatus());
        }
        queryWrapper.orderByDesc("id");
        noticeOutMapper.selectPage(page, queryWrapper);
    }
@@ -270,6 +296,9 @@
        }
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
        }
        if (StringUtils.isNotBlank(param.getAuditStatus())) {
            queryWrapper.eq("audit_status", param.getAuditStatus());
        }
        if (StringUtils.isNotBlank(param.getCompleteStatus())) {
            queryWrapper.eq("complete_status", param.getCompleteStatus());
@@ -288,7 +317,6 @@
     * @return
     */
    public InoutNoticeOut getNoticeOutOne(String id) {
        QueryWrapper<InoutNoticeOut> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return noticeOutMapper.selectOne(queryWrapper);
@@ -315,58 +343,51 @@
     * @param data
     * @return
     */
    public String saveOrUpdateOut(InoutNoticeOut data) {
        //如果出库通知单类型为库区通知单,验证仓库是否是未解压得仓库,是则不允许保存
        //获取所有质押合同数据
        List<PledgeContract> pledgeContracts = pledgeContractService.listAll(null);
        if ("10".equals(data.getType())) {
            //在质押合同找到未解压,且质押仓库包含当前仓库的数据
            for (PledgeContract pledgeContract : pledgeContracts) {
                if (pledgeContract.getDepotIds().contains(data.getDepotId())) {
                    if (pledgeContract.getStatus().equals(Constant.YN_N)) {
                        return "出库仓库未解压,无法保存!";
                    }
                }
    @Transactional(rollbackFor = Exception.class)
    public BaseResp saveOrUpdateOut(InoutNoticeOut data) {
        //如果出库通知单类型为库区通知单,验证仓库是否是未解押得仓库,是则不允许保存
        if (InoutConstant.NOTICE_IN_TYPE_10.equals(data.getType())) {
            //在质押合同找到未解押,且质押仓库包含当前仓库的数据
            //获取质押合同数据
            PledgeContract pledge = this.getPledgeByDepotIdOut(data);
            if (null != pledge && pledge.getStatus().equals(Constant.YN_N)) {
                return BaseResp.error("当前仓库有未解押的质押合同,质押合同=" + pledge.getName());
            }
        }
        //如果出库通知单类型为监管通知单
        if ("20".equals(data.getType())) {
        //如果质押通知单
        if (InoutConstant.NOTICE_IN_TYPE_20.equals(data.getType())) {
            //1.验证银行是否填写,未填写,则不允许保存
            if (StringUtils.isEmpty(data.getBankId())) {
                return "监督银行不能为空!";
                return BaseResp.error("质押银行不能为空!");
            }
            //2.验证银行和仓库的对应关系是否正确,不正确则不允许保存
            //在质押合同找到未解压,且质押仓库包含当前仓库的 银行-仓库(质押合同关系)
            Map<String, PledgeContract> bankDepotMap = new HashMap<>();
            for (PledgeContract pledgeContract : pledgeContracts) {
                if (pledgeContract.getDepotIds().contains(data.getDepotId())) {
                    if (pledgeContract.getStatus().equals(Constant.YN_N)) {
                        bankDepotMap.put(pledgeContract.getPledgeBank(), pledgeContract);
                    }
                }
            }
            //在map中寻找匹配银行的数据,如果没有匹配的数据,则不允许保存
            if (!bankDepotMap.containsKey(data.getBankId())) {
                return "未找到对应的质押合同,请检查监督银行或者出库仓库填写是否正确!";
            PledgeContract pledge = this.getPledgeByDepotIdAndBankIdOut(data);
            if (null == pledge) {
                return BaseResp.error("未获取到当前库区、仓库和银行之间的质押信息!");
            }
        }
        if (null == data.getUpdateBy()) {
            data.setUpdateBy(ContextUtil.getLoginUserName());
            data.setUpdateTime(new Date());
            data.setCreateBy(ContextUtil.getLoginUserName());
            data.setCreateTime(new Date());
            data.setAuditStatus(AuditStatus.STATUS_10.getCode());
            data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
            noticeOutMapper.insert(data);
            return this.saveOutAddStartWork(data);
        } else {
            data.setUpdateBy(ContextUtil.getLoginUserName());
            data.setUpdateTime(new Date());
            noticeOutMapper.updateById(data);
            return BaseResp.success();
        }
        return null;
    }
    /**
     * 更新审核状态
     * @param id
     * @param status
     */
    public void updateNoticeOutStatus(String id, String status) {
        UpdateWrapper<InoutNoticeOut> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id", id).set("audit_status", status);
        noticeOutMapper.update(null, updateWrapper);
    }
    /**
@@ -380,6 +401,52 @@
        return null;
    }
    private BaseResp saveOutAddStartWork(InoutNoticeOut data) {
        //数据保存
        data.setUpdateBy(ContextUtil.getLoginUserName());
        data.setUpdateTime(new Date());
        data.setCreateBy(ContextUtil.getLoginUserName());
        data.setCreateTime(new Date());
        data.setAuditStatus(WorkStatus.STATUS_10.getCode());
        data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
        //执行流程
        WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_20);
        //流程不启用
        if (null == conf || Constant.YN_N.equals(conf.getValTag())) {
            data.setAuditStatus(WorkStatus.STATUS_50.getCode());
        } else {
            BaseResp resp = workService.startByNoticeOut(data, conf);
            log.info("---------启动工单流程------{}", resp);
        }
        noticeOutMapper.insert(data);
        return BaseResp.success();
    }
    /**
     * 判断当前仓库是否在质押合同中未解押
     * @param data 当前数据
     * @return true-在质押合同中未解押,false-在质押合同中已解押
     */
    private PledgeContract getPledgeByDepotIdOut(InoutNoticeOut data) {
        IgdsBaseParam param = new IgdsBaseParam();
        param.setCompanyId(data.getCompanyId());
        param.setDeptId(data.getDeptId());
        param.setDepotId(data.getDepotId());
        return pledgeContractService.getByDepotId(param);
    }
    private PledgeContract getPledgeByDepotIdAndBankIdOut(InoutNoticeOut data) {
        IgdsBaseParam param = new IgdsBaseParam();
        param.setCompanyId(data.getCompanyId());
        param.setDeptId(data.getDeptId());
        param.setDepotId(data.getDepotId());
        param.setBankId(data.getBankId());
        return pledgeContractService.getByDepotId(param);
    }
    /**
     * 根据ID获取通知单信息
     * @param id