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'){
 //库区自建通知单
 if(arg.newValue == '10'){
 view.get("#formItemBank").set("visible",false);
 var curData = view.get("#dsMain.data:#"); //当前选择的数据
 curData.set("bankId",'-');
 
 }
 //质押监管通知单
 if(arg.newValue == '20'){
 view.get("#formItemBank").set("visible",true);
 var curData = view.get("#dsMain.data:#"); //当前选择的数据
 curData.set("bankId",null);
 }
 }
 
 <ClientEvent name="onDataChange">
 
 
 </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("#dsMain.data:#");
 var bankId = entity.get("bankId");
 if(!bankId){
 $alert("请先选择监管银行");
 }else{
 view.get("#updateSave").execute(function(result){
 <ClientEvent name="onClick">view.get("#updateSave").execute(function(result){
 if(result){
 $alert(result);
 return;
 @@ -429,7 +415,6 @@ $notify("数据执行完成!!");
 self.get("parent").hide();
 });
 }
 
 
 </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.入库通知单作为入库作业的前置条件,必须配置,否则无法进行入库作业。<br>
 2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。</Property> 2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。<br>
 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"> 
 var entity = view.get("#dsMain.data:#");
 if(!entity){
 $alert("请先选择监管银行");
 }else{
 var typeData = entity.get("type");
 if(typeData=='20'){
 var bankId = entity.get("bankId");
 console.log(bankId);
 if(!bankId){
 $alert("请先选择监管银行");
 }else{
 view.get("#dsDepotList").set("parameter",entity.get("bankId")).flushAsync();
 }
 }else{
 view.get("#dsDepotList").set("parameter",null).flushAsync();
 }
 }
 </ClientEvent> <ClientEvent name="onOpen">
 var entity = view.get("#dsMain.data:#");
 if(!entity){
 $alert("请先选择所属分库");
 }else{
 var deptId = entity.get("deptId");
 if(!deptId){
 $alert("请先选择所属分库");
 }else{
 view.get("#dsDepotList").set("parameter",entity.get("deptId")).flushAsync();
 }
 }</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"));