From be3a882dba843937e82db08ff93d0662a4c9ec0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Sun, 20 Jun 2021 14:33:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E5=95=86=E5=93=81=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/constants/ExceptionConstants.java | 3 + .../controller/MaterialExtendController.java | 23 +++++++ .../erp/service/material/MaterialService.java | 10 +++- .../MaterialExtendComponent.java | 2 +- .../materialExtend/MaterialExtendService.java | 60 +++++++++++++------ 5 files changed, 75 insertions(+), 23 deletions(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index 5a065edd..4a9de5ed 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -284,6 +284,9 @@ public class ExceptionConstants { //商品库存不足 public static final int MATERIAL_STOCK_NOT_ENOUGH_CODE = 8000004; public static final String MATERIAL_STOCK_NOT_ENOUGH_MSG = "商品:%s库存不足"; + //商品条码重复 + public static final int MATERIAL_BARCODE_EXISTS_CODE = 8000005; + public static final String MATERIAL_BARCODE_EXISTS_MSG = "商品条码:%s重复"; /** * 单据信息 * type = 85 diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java index abd28d85..6c381955 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java @@ -81,4 +81,27 @@ public class MaterialExtendController { } return res; } + + @GetMapping(value = "/checkIsBarCodeExist") + public BaseResponseInfo checkIsBarCodeExist(@RequestParam("id") Long id, + @RequestParam("barCode") String barCode, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + int exist = materialExtendService.checkIsBarCodeExist(id, barCode); + if(exist > 0) { + map.put("status", true); + } else { + map.put("status", false); + } + res.code = 200; + res.data = map; + } catch (Exception e) { + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java index 967ba946..e4bb4a58 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java @@ -173,7 +173,7 @@ public class MaterialService { if(materials!=null && materials.size()>0) { mId = materials.get(0).getId(); } - materialExtendService.saveDetials(obj, obj.getString("sortList"), mId); + materialExtendService.saveDetials(obj, obj.getString("sortList"), mId, "insert"); if(obj.get("stock")!=null) { JSONArray stockArr = obj.getJSONArray("stock"); for (int i = 0; i < stockArr.size(); i++) { @@ -190,7 +190,11 @@ public class MaterialService { logService.insertLog("商品", new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(m.getName()).toString(), request); return 1; - }catch(Exception e){ + } + catch (BusinessRunTimeException ex) { + throw new BusinessRunTimeException(ex.getCode(), ex.getMessage()); + } + catch(Exception e){ JshException.writeFail(logger, e); return 0; } @@ -204,7 +208,7 @@ public class MaterialService { if(material.getUnitId() == null) { materialMapperEx.setUnitIdToNull(material.getId()); } - materialExtendService.saveDetials(obj, obj.getString("sortList"),material.getId()); + materialExtendService.saveDetials(obj, obj.getString("sortList"),material.getId(), "update"); if(obj.get("stock")!=null) { JSONArray stockArr = obj.getJSONArray("stock"); for (int i = 0; i < stockArr.size(); i++) { diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendComponent.java b/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendComponent.java index bfc0738d..2e91a334 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendComponent.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendComponent.java @@ -59,7 +59,7 @@ public class MaterialExtendComponent implements ICommonQuery { @Override public int checkIsNameExist(Long id, String name)throws Exception { - return materialExtendService.checkIsExist(id, name); + return 0; } } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendService.java index 60b173f4..1559e4a1 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendService.java @@ -4,12 +4,15 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.MaterialExtend; import com.jsh.erp.datasource.entities.MaterialExtendExample; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.MaterialExtendMapper; import com.jsh.erp.datasource.mappers.MaterialExtendMapperEx; import com.jsh.erp.datasource.vo.MaterialExtendVo4List; +import com.jsh.erp.exception.BusinessParamCheckingException; +import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; import com.jsh.erp.service.log.LogService; import com.jsh.erp.service.redis.RedisService; @@ -77,7 +80,7 @@ public class MaterialExtendService { } @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public String saveDetials(JSONObject obj, String sortList, Long materialId) throws Exception { + public String saveDetials(JSONObject obj, String sortList, Long materialId, String type) throws Exception { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); JSONArray meArr = obj.getJSONArray("meList"); JSONArray insertedJson = new JSONArray(); @@ -85,22 +88,29 @@ public class MaterialExtendService { JSONArray deletedJson = new JSONArray(); List barCodeList=new ArrayList<>(); if (null != meArr) { - for (int i = 0; i < meArr.size(); i++) { - JSONObject tempJson = meArr.getJSONObject(i); - String barCode = tempJson.getString("barCode"); - barCodeList.add(barCode); - MaterialExtend materialExtend = getInfoByBarCode(barCode); - if(materialExtend.getBarCode() == null){ + if("insert".equals(type)){ + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); insertedJson.add(tempJson); - } else { - updatedJson.add(tempJson); } - } - List materialExtendList = getMeListByBarCodeAndMid(barCodeList, materialId); - for (MaterialExtend meObj: materialExtendList) { - JSONObject deleteObj = new JSONObject(); - deleteObj.put("id", meObj.getId()); - deletedJson.add(deleteObj); + } else if("update".equals(type)){ + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); + String barCode = tempJson.getString("barCode"); + barCodeList.add(barCode); + MaterialExtend materialExtend = getInfoByBarCode(barCode); + if (materialExtend.getBarCode() == null) { + insertedJson.add(tempJson); + } else { + updatedJson.add(tempJson); + } + } + List materialExtendList = getMeListByBarCodeAndMid(barCodeList, materialId); + for (MaterialExtend meObj : materialExtendList) { + JSONObject deleteObj = new JSONObject(); + deleteObj.put("id", meObj.getId()); + deletedJson.add(deleteObj); + } } } JSONArray sortJson = JSONArray.parseArray(sortList); @@ -110,7 +120,13 @@ public class MaterialExtendService { JSONObject tempInsertedJson = JSONObject.parseObject(insertedJson.getString(i)); materialExtend.setMaterialId(materialId); if (StringUtils.isNotEmpty(tempInsertedJson.getString("barCode"))) { - materialExtend.setBarCode(tempInsertedJson.getString("barCode")); + int exist = checkIsBarCodeExist(0L, tempInsertedJson.getString("barCode")); + if(exist>0) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempInsertedJson.getString("barCode"))); + } else { + materialExtend.setBarCode(tempInsertedJson.getString("barCode")); + } } if (StringUtils.isNotEmpty(tempInsertedJson.getString("commodityUnit"))) { materialExtend.setCommodityUnit(tempInsertedJson.getString("commodityUnit")); @@ -147,7 +163,13 @@ public class MaterialExtendService { MaterialExtend materialExtend = new MaterialExtend(); materialExtend.setId(tempUpdatedJson.getLong("id")); if (StringUtils.isNotEmpty(tempUpdatedJson.getString("barCode"))) { - materialExtend.setBarCode(tempUpdatedJson.getString("barCode")); + int exist = checkIsBarCodeExist(tempUpdatedJson.getLong("id"), tempUpdatedJson.getString("barCode")); + if(exist>0) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempUpdatedJson.getString("barCode"))); + } else { + materialExtend.setBarCode(tempUpdatedJson.getString("barCode")); + } } if (StringUtils.isNotEmpty(tempUpdatedJson.getString("commodityUnit"))) { materialExtend.setCommodityUnit(tempUpdatedJson.getString("commodityUnit")); @@ -233,10 +255,10 @@ public class MaterialExtendService { return res; } - public int checkIsExist(Long id, String MaterialExtendName)throws Exception { + public int checkIsBarCodeExist(Long id, String barCode)throws Exception { MaterialExtendExample example = new MaterialExtendExample(); MaterialExtendExample.Criteria criteria = example.createCriteria(); - criteria.andBarCodeEqualTo(MaterialExtendName); + criteria.andBarCodeEqualTo(barCode); if (id > 0) { criteria.andIdNotEqualTo(id); }