diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java index 24e546c9..2d34b10e 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java @@ -877,7 +877,6 @@ public class DepotItemController { String message = ""; try { String barCodes = ""; - Map> barCodeNumMap = new HashMap<>(); //文件合法性校验 Sheet src = null; try { @@ -889,31 +888,32 @@ public class DepotItemController { res.code = 400; res.data = data; } - int length = src.getRows(); - if(length>1000) { + if(src.getRows()>1000) { message = "导入失败,明细不能超出1000条"; res.code = 500; data.put("message", message); res.data = data; } else { - for (int i = 2; i < length; i++) { + List> detailList = new ArrayList<>(); + for (int i = 2; i < src.getRows(); i++) { String barCode = ExcelUtils.getContent(src, i, 0); String num = ExcelUtils.getContent(src, i, 2); String unitPrice = ExcelUtils.getContent(src, i, 3); String taxRate = ExcelUtils.getContent(src, i, 4); String remark = ExcelUtils.getContent(src, i, 5); Map materialMap = new HashMap<>(); + materialMap.put("barCode", barCode); materialMap.put("num", num); materialMap.put("unitPrice", unitPrice); materialMap.put("taxRate", taxRate); materialMap.put("remark", remark); - barCodeNumMap.put(barCode, materialMap); - barCodes += barCode + ","; + detailList.add(materialMap); + barCodes += "'" + barCode + "',"; } if (StringUtil.isNotEmpty(barCodes)) { barCodes = barCodes.substring(0, barCodes.length() - 1); } - JSONObject map = depotItemService.parseMapByExcelData(barCodes, barCodeNumMap, prefixNo); + JSONObject map = depotItemService.parseMapByExcelData(barCodes, detailList, prefixNo); if (map != null) { res.code = 200; } else { diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index 898ddad6..2b86fbff 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -1114,65 +1114,72 @@ public class DepotItemService { return depotItemMapperEx.getCountByMaterialAndDepot(mId, depotId); } - public JSONObject parseMapByExcelData(String barCodes, Map> barCodeNumMap, String prefixNo) { + public JSONObject parseMapByExcelData(String barCodes, List> detailList, String prefixNo) { JSONObject map = new JSONObject(); try { JSONArray arr = new JSONArray(); List list = depotItemMapperEx.getBillItemByParam(barCodes); - for (MaterialVo4Unit m: list) { + Map materialMap = new HashMap<>(); + for (MaterialVo4Unit material: list) { + materialMap.put(material.getmBarCode(), material); + } + for (Map detailMap: detailList) { JSONObject item = new JSONObject(); - item.put("barCode", m.getmBarCode()); - item.put("name", m.getName()); - item.put("standard", m.getStandard()); - if(StringUtil.isNotEmpty(m.getModel())) { - item.put("model", m.getModel()); - } - if(StringUtil.isNotEmpty(m.getColor())) { - item.put("color", m.getColor()); - } - if(StringUtil.isNotEmpty(m.getSku())) { - item.put("sku", m.getSku()); - } - BigDecimal stock = depotItemMapperEx.getCurrentStockByParam(null, m.getId()); - item.put("stock", stock); - item.put("unit", m.getCommodityUnit()); - Map materialMap = barCodeNumMap.get(m.getmBarCode()); - BigDecimal operNumber = BigDecimal.ZERO; - BigDecimal unitPrice = BigDecimal.ZERO; - BigDecimal taxRate = BigDecimal.ZERO; - if(materialMap.get("num")!=null) { - operNumber = new BigDecimal(materialMap.get("num")); - } - if(StringUtil.isNotEmpty(materialMap.get("unitPrice"))) { - unitPrice = new BigDecimal(materialMap.get("unitPrice")); - } else { - if("CGDD".equals(prefixNo)) { - unitPrice = m.getPurchaseDecimal(); - } else if("XSDD".equals(prefixNo)) { - unitPrice = m.getWholesaleDecimal(); + String barCode = detailMap.get("barCode"); + MaterialVo4Unit m = materialMap.get(barCode); + if(m!=null) { + item.put("barCode", barCode); + item.put("name", m.getName()); + item.put("standard", m.getStandard()); + if(StringUtil.isNotEmpty(m.getModel())) { + item.put("model", m.getModel()); } + if(StringUtil.isNotEmpty(m.getColor())) { + item.put("color", m.getColor()); + } + if(StringUtil.isNotEmpty(m.getSku())) { + item.put("sku", m.getSku()); + } + BigDecimal stock = depotItemMapperEx.getCurrentStockByParam(null, m.getId()); + item.put("stock", stock); + item.put("unit", m.getCommodityUnit()); + BigDecimal operNumber = BigDecimal.ZERO; + BigDecimal unitPrice = BigDecimal.ZERO; + BigDecimal taxRate = BigDecimal.ZERO; + if(StringUtil.isNotEmpty(detailMap.get("num"))) { + operNumber = new BigDecimal(detailMap.get("num")); + } + if(StringUtil.isNotEmpty(detailMap.get("unitPrice"))) { + unitPrice = new BigDecimal(detailMap.get("unitPrice")); + } else { + if("CGDD".equals(prefixNo)) { + unitPrice = m.getPurchaseDecimal(); + } else if("XSDD".equals(prefixNo)) { + unitPrice = m.getWholesaleDecimal(); + } + } + if(StringUtil.isNotEmpty(detailMap.get("taxRate"))) { + taxRate = new BigDecimal(detailMap.get("taxRate")); + } + String remark = detailMap.get("remark"); + item.put("operNumber", operNumber); + item.put("unitPrice", unitPrice); + BigDecimal allPrice = BigDecimal.ZERO; + if(unitPrice!=null && unitPrice.compareTo(BigDecimal.ZERO)!=0) { + allPrice = unitPrice.multiply(operNumber); + } + BigDecimal taxMoney = BigDecimal.ZERO; + if(taxRate.compareTo(BigDecimal.ZERO) != 0) { + taxMoney = taxRate.multiply(allPrice).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP); + } + BigDecimal taxLastMoney = allPrice.add(taxMoney); + item.put("allPrice", allPrice); + item.put("taxRate", taxRate); + item.put("taxMoney", taxMoney); + item.put("taxLastMoney", taxLastMoney); + item.put("remark", remark); + arr.add(item); } - if(materialMap.get("taxRate")!=null) { - taxRate = new BigDecimal(materialMap.get("taxRate")); - } - String remark = materialMap.get("remark"); - item.put("operNumber", operNumber); - item.put("unitPrice", unitPrice); - BigDecimal allPrice = BigDecimal.ZERO; - if(unitPrice!=null && unitPrice.compareTo(BigDecimal.ZERO)!=0) { - allPrice = unitPrice.multiply(operNumber); - } - BigDecimal taxMoney = BigDecimal.ZERO; - if(taxRate.compareTo(BigDecimal.ZERO) != 0) { - taxMoney = taxRate.multiply(allPrice).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP); - } - BigDecimal taxLastMoney = allPrice.add(taxMoney); - item.put("allPrice", allPrice); - item.put("taxRate", taxRate); - item.put("taxMoney", taxMoney); - item.put("taxLastMoney", taxLastMoney); - item.put("remark", remark); - arr.add(item); } map.put("rows", arr); } catch (Exception e) { diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml index 1614a743..3a52af6a 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -931,7 +931,6 @@ from jsh_material m left join jsh_material_extend me on m.id=me.material_id and ifnull(me.delete_Flag,'0') !='1' where 1=1 - and me.default_flag='1' and me.bar_code in (${barCodes})