一、list 是传入的表身数据
List<TfPss> list = new ArrayList<TfPss>(); for(int i=0;i<mfPssWithBLOBs.getParams().size();i++){ TfPss tfPss= new TfPss(); BeanUtils.copyProperties(mfPssWithBLOBs.getParams().get(i), tfPss); list.add(tfPss); }
二、listFlg 是用于前台出数量标红或标蓝返回的集合
List<PurchaseReturnBean> listFlg = new ArrayList<PurchaseReturnBean>(); //作为标识,在进行存盘前,判断单据数量校验是否通过 int okFlg = 0;
三、遍历集合 校验退回单与进货单数量是否符合
for (int i = 0; i < list.size(); i++) { PurchaseReturnBean purchaseReturnBean = new PurchaseReturnBean(); // 验证数量 String sqlId1 ="com.ifm.mappers.purchase.qtyCheck.qtyCheck"; double tal=0;
四、如果有来源单 验证来源单的可退回量
if(list.get(i).getOsNo() != null && !"".equals(list.get(i).getOsNo())){ Map<String, Object> map1 = new HashMap<>();
五、验证前置单据可用数量 = 单据数量-已退回量-未审核已退回量+这张单据的数量
map1.put("OS_NO", list.get(i).getOsNo()); map1.put("preItm", list.get(i).getPreItm()); map1.put("PS_NO", mfPssWithBLOBs.getPsNo()); tal = commonService.getOne(sqlId1, map1); if (tal < Double.valueOf(list.get(i).getQty().toString())) { purchaseReturnBean.setQtyFlg("1"); okFlg++; } } listFlg.add(purchaseReturnBean); }
六、退回单数量附和进货单数量,校验库存数量
if (okFlg > 0) { json.setList(listFlg); json.setMsg(XmlMapperLoader.getPmtmap().get("sys_check_backQty"));//"插入失败,退回数量大于进货单数量!" return json.success(false); }else{ // 创建一条sql,根据品号,批号,仓库查询所有符合条件的 库存数量 String sqlId = "com.ifm.mappers.purchase.incomingBack.getBatRec1"; // 创建一个list 把传入数据的list中的品号+批号+仓库 放入list 作为查询的参数 List<String> list1 = new ArrayList<String>(); for(int i=0;i<list.size();i++){ for(int j=i+1;j<list.size();j++){ if(list.get(i).getPrdNo().equals(list.get(j).getPrdNo()) && list.get(i).getBatNo().equals(list.get(j).getBatNo()) && list.get(i).getWh().equals(list.get(j).getWh())){ list.get(i).setQty(BigDecimal.valueOf( Double.parseDouble(list.get(i).getQty().toString())+ Double.parseDouble(list.get(j).getQty().toString()))); list.remove(j); j-=1; } } list1.add(list.get(i).getPrdNo()+list.get(i).getBatNo()+list.get(i).getWh()); } Map<String, Object> map = new HashMap<>(); map.put("list1",list1 ); //查寻出所有符合条件的产品 List<BatRec1> list2= commonService.getList(sqlId, map); //将查出产品放入map中 Map<String, Object> map1 = new HashMap<>(); for (int i = 0; i < list2.size(); i++) { map1.put(list2.get(i).getPrdNo()+list2.get(i).getBatNo()+list2.get(i).getWh(),list2.get(i).getQty()); }
七、用传入的数据与查询出的数据比较,校验库存
for (int i = 0; i < list.size(); i++) { if(map1.get(list.get(i).getPrdNo()+list.get(i).getBatNo()+list.get(i).getWh())==null || Double.valueOf(map1.get(list.get(i).getPrdNo()+list.get(i).getBatNo()+list.get(i).getWh()).toString())<Double.valueOf(list.get(i).getQty().toString())){ PurchaseReturnBean purchaseReturnBean = new PurchaseReturnBean(); purchaseReturnBean.setPrdNo(list.get(i).getPrdNo()); purchaseReturnBean.setQtyFlg("2"); listFlg.add(purchaseReturnBean); okFlg++; } } } if (okFlg > 0) { json.setList(listFlg); json.setMsg(XmlMapperLoader.getPmtmap().get("sys_check_BAT_REC1_qty"));//正在生成出库通知单"插入失败,退回数量库存不足!"); return json.success(false); } else { boo=mfPssPBService.insert(mfPssWithBLOBs, userinfo.getSessionUsername(), json)==1; }
原文:https://www.cnblogs.com/xfke/p/13356592.html