sgj
2026-01-06 96880d3b685cb56862a5b633182b97d8ec58eeb0
入库通知单交互修改,后端添加业务逻辑判断
已修改5个文件
167 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/PledgeContract.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotPR.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/PledgeContract.java
@@ -77,7 +77,7 @@
    @TableField("depot_names")
    private String depotNames;
    @Column(name = "status", columnDefinition = "varchar(2) COMMENT '质押状态'")
    @Column(name = "status", columnDefinition = "varchar(2) COMMENT '质押状态 Y 已解压 N 未解压'")
    @TableField("status")
    private String status = Constant.YN_N;
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
@@ -6,12 +6,9 @@
import com.fzzy.igds.data.ExportWordParam;
import com.fzzy.igds.data.NoticeDto;
import com.fzzy.igds.data.NoticeParam;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.domain.*;
import com.fzzy.igds.mapper.InoutNoticeInMapper;
import com.fzzy.igds.mapper.InoutNoticeOutMapper;
import com.fzzy.igds.domain.InoutNoticeIn;
import com.fzzy.igds.domain.InoutNoticeOut;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
@@ -42,6 +39,8 @@
    private DepotService depotService;
    @Resource
    private CoreDeptService coreDeptService;
    @Resource
    private PledgeContractService pledgeContractService;
    /*----------------------入库通知单信息-------------------------*/
    /**
@@ -129,6 +128,45 @@
     * @return
     */
    public String saveOrUpdateIn(InoutNoticeIn 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 "入库仓库所在质押合同【"+pledgeContract.getName()+"】未解压,请解压后再保存!";
                    }
                }
            }
        }
        //如果入库通知单类型为银行通知单
        if("20".equals(data.getType())){
            //"监管通知单"
            //1.验证银行是否填写,未填写,则不允许保存
            if(StringUtils.isEmpty(data.getBankId())){
                return "监督银行不能为空!";
            }
            //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 "未找到对应的质押合同,请检查监督银行或者入库仓库填写是否正确!";
            }
        }
        if (null == data.getUpdateBy()) {
            data.setUpdateBy(ContextUtil.getLoginUserName());
            data.setUpdateTime(new Date());
fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotPR.java
@@ -48,52 +48,6 @@
    }
    /**
     *
     * TODO 当前方法取消,逻辑调整为在提交时候验证是否是银行监管仓,默认获取相应的列表
     * depotPR#getDataByBankId
     *
     * @return
     */
    @DataProvider
    public List<Depot> getDataByBankId(String bankId) {
        if (StringUtils.isNotEmpty(bankId)) {
            //查询银行对应的监管仓库
            IgdsBaseParam baseParam = new IgdsBaseParam();
            baseParam.setBankId(bankId);
            List<PledgeContract> pledgeContracts = pledgeContractService.listAll(baseParam);
            // 提取所有 PledgeContract 中 depot_ids 字段包含的 depot ID
            List<String> validDepotIds = new ArrayList<>();
            for (PledgeContract contract : pledgeContracts) {
                if (StringUtils.isNotEmpty(contract.getDepotIds())) {
                    // 将逗号分隔的 depot_ids 转换为 Set
                    String[] ids = contract.getDepotIds().split(",");
                    for (String id : ids) {
                        if (StringUtils.isNotEmpty(id.trim())) {
                            validDepotIds.add(id.trim());
                        }
                    }
                }
            }
            List<Depot> allData = depotService.getData(null, ContextUtil.subDeptId(null), false);
            if (!validDepotIds.isEmpty()) {
                // 过滤出在 PledgeContract.depot_ids 中出现的 depot
                List<Depot> filteredData = new ArrayList<>();
                for (Depot allDatum : allData) {
                    if (validDepotIds.contains(allDatum.getId())) {
                        filteredData.add(allDatum);
                    }
                }
                return filteredData;
            }
            return new ArrayList<>();
        }
        return depotService.getData(null, ContextUtil.subDeptId(null), false);
    }
    /**
     * depotPR#saveOrUpdate
     *
     * @param data
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml
@@ -4,22 +4,7 @@
  <Context/>
  <Model>
    <DataType name="dtMain">
      <ClientEvent name="onDataChange">if(arg.property == 'type'){&#xD;
        //库区自建通知单&#xD;
    if(arg.newValue == '10'){&#xD;
        view.get(&quot;#formItemBank&quot;).set(&quot;visible&quot;,false);&#xD;
        var curData = view.get(&quot;#dsMain.data:#&quot;); //当前选择的数据&#xD;
        curData.set(&quot;bankId&quot;,'-');&#xD;
&#xD;
    }&#xD;
        //质押监管通知单&#xD;
    if(arg.newValue == '20'){&#xD;
        view.get(&quot;#formItemBank&quot;).set(&quot;visible&quot;,true);&#xD;
        var curData = view.get(&quot;#dsMain.data:#&quot;); //当前选择的数据&#xD;
        curData.set(&quot;bankId&quot;,null);&#xD;
    }&#xD;
}&#xD;
&#xD;
      <ClientEvent name="onDataChange">&#xD;
&#xD;
&#xD;
</ClientEvent>
@@ -216,6 +201,12 @@
      <Property name="dataProvider">inoutNoticePR#getYearQuery</Property>
      <Property name="loadMode">manual</Property>
      <Property name="dataType">dtNoticeParam</Property>
    </DataSet>
    <DataSet id="dsDepotList">
      <Property name="dataProvider">depotPR#getData</Property>
      <Property name="userData">仓库列表下拉框</Property>
      <Property name="loadMode">manual</Property>
      <Property name="dataType">[dtDepot]</Property>
    </DataSet>
    <Container>
      <Property name="className">c-param</Property>
@@ -416,12 +407,7 @@
      <Property name="iconClass">fa fa-tasks</Property>
      <Buttons>
        <Button id="btnOk">
          <ClientEvent name="onClick">var entity = view.get(&quot;#dsMain.data:#&quot;);&#xD;
var bankId = entity.get(&quot;bankId&quot;);&#xD;
if(!bankId){&#xD;
                $alert(&quot;请先选择监管银行&quot;);&#xD;
}else{&#xD;
    view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
    if(result){&#xD;
        $alert(result);&#xD;
        return;&#xD;
@@ -429,7 +415,6 @@
    $notify(&quot;数据执行完成!!&quot;);&#xD;
    self.get(&quot;parent&quot;).hide();&#xD;
});&#xD;
}&#xD;
&#xD;
&#xD;
</ClientEvent>
@@ -493,7 +478,12 @@
            <AutoFormElement id="formItemBank">
              <Property name="name">bankId</Property>
              <Property name="property">bankId</Property>
              <Property name="hideMode">display</Property>
              <Property name="hideMode">visibility</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">deptId</Property>
              <Property name="property">deptId</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
@@ -593,7 +583,8 @@
            </AutoFormElement>
            <HtmlContainer layoutConstraint="colSpan:3">
              <Property name="content">1.入库通知单作为入库作业的前置条件,必须配置,否则无法进行入库作业。&lt;br>&#xD;
2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。</Property>
2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。&lt;br>&#xD;
3.单据类型=质押监管通知单,单据必须填写监督银行。</Property>
              <Property name="exClassName">h-tip</Property>
              <Property name="contentOverflow">hidden</Property>
            </HtmlContainer>
@@ -603,25 +594,18 @@
      <Tools/>
    </Dialog>
    <DataSetDropDown id="dsDepotDropDown">
      <ClientEvent name="onOpen">    &#xD;
    var entity = view.get(&quot;#dsMain.data:#&quot;);&#xD;
    if(!entity){&#xD;
        $alert(&quot;请先选择监管银行&quot;);&#xD;
    }else{&#xD;
        var typeData = entity.get(&quot;type&quot;);&#xD;
        if(typeData=='20'){&#xD;
            var bankId = entity.get(&quot;bankId&quot;);&#xD;
            console.log(bankId);&#xD;
            if(!bankId){&#xD;
                $alert(&quot;请先选择监管银行&quot;);&#xD;
            }else{&#xD;
                view.get(&quot;#dsDepotList&quot;).set(&quot;parameter&quot;,entity.get(&quot;bankId&quot;)).flushAsync();&#xD;
            }&#xD;
        }else{&#xD;
            view.get(&quot;#dsDepotList&quot;).set(&quot;parameter&quot;,null).flushAsync();&#xD;
        }&#xD;
    }&#xD;
</ClientEvent>
      <ClientEvent name="onOpen">&#xD;
var entity = view.get(&quot;#dsMain.data:#&quot;);&#xD;
if(!entity){&#xD;
    $alert(&quot;请先选择所属分库&quot;);&#xD;
}else{&#xD;
    var deptId = entity.get(&quot;deptId&quot;);&#xD;
    if(!deptId){&#xD;
        $alert(&quot;请先选择所属分库&quot;);&#xD;
    }else{&#xD;
        view.get(&quot;#dsDepotList&quot;).set(&quot;parameter&quot;,entity.get(&quot;deptId&quot;)).flushAsync();&#xD;
    }&#xD;
}</ClientEvent>
      <Property name="dataSet">dsDepotList</Property>
      <Property name="height">450</Property>
      <Property name="autoOpen">true</Property>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java
@@ -63,7 +63,6 @@
        InoutNoticeIn data = new InoutNoticeIn();
        data.setId(ContextUtil.generateOrderId("RK"));
        data.setName("入库通知单");
        data.setType("20");
        data.setCompanyId(user.getCompanyId());
        data.setDeptId(ContextUtil.subDeptId(user));
        data.setYear(DateFormatUtils.format(new Date(), "yyyy"));