sgj
2026-01-16 bdde1c2c0cd6c33435f894c126dc71b4ad5528e4
出库通知单逻辑修改
已修改4个文件
106 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderConfService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
@@ -315,58 +315,39 @@
     * @param data
     * @return
     */
    public String saveOrUpdateOut(InoutNoticeOut data) {
    @Transactional(rollbackFor = Exception.class)
    public BaseResp saveOrUpdateOut(InoutNoticeOut data) {
        //如果出库通知单类型为库区通知单,验证仓库是否是未解压得仓库,是则不允许保存
        //获取所有质押合同数据
        List<PledgeContract> pledgeContracts = pledgeContractService.listAll(null);
        if ("10".equals(data.getType())) {
        if (InoutConstant.NOTICE_IN_TYPE_10.equals(data.getType())) {
            //在质押合同找到未解压,且质押仓库包含当前仓库的数据
            for (PledgeContract pledgeContract : pledgeContracts) {
                if (pledgeContract.getDepotIds().contains(data.getDepotId())) {
                    if (pledgeContract.getStatus().equals(Constant.YN_N)) {
                        return "出库仓库未解压,无法保存!";
                    }
                }
            //获取质押合同数据
            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;
    }
    /**
@@ -380,6 +361,53 @@
        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(AuditStatus.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());
        } 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
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderConfService.java
@@ -95,7 +95,7 @@
        List<WorkOrderConf> list = mapper.selectList(queryWrapper);
        if (null == list) return null;
        if (null == list || list.isEmpty()) return null;
        return list.get(0);
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml
@@ -422,11 +422,11 @@
      <Buttons>
        <Button id="btnOk">
          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
            if(result){&#xD;
            $alert(result);&#xD;
    if(result.code != '200'){&#xD;
        $alert(result.message);&#xD;
            return;&#xD;
            }&#xD;
            $notify(&quot;数据执行完成!!&quot;);&#xD;
    $alert('数据执行成功!');&#xD;
            self.get(&quot;parent&quot;).hide();&#xD;
            });</ClientEvent>
          <Property name="caption">保存</Property>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java
@@ -175,7 +175,7 @@
     * @return
     */
    @DataResolver
    public String saveOut(InoutNoticeOut data) {
    public BaseResp saveOut(InoutNoticeOut data) {
        InoutNoticeOut inoutNoticeOut = new InoutNoticeOut();
        BeanUtils.copyProperties(data, inoutNoticeOut);
        return inoutNoticeService.saveOrUpdateOut(inoutNoticeOut);