From ecb0edca29e6c1d9f47735a8a177859e0864111b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Wed, 29 Sep 2021 19:44:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BA=8F=E5=88=97=E5=8F=B7?= =?UTF-8?q?=E5=92=8C=E6=89=B9=E6=AC=A1=E5=95=86=E5=93=81=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/constants/BusinessConstants.java | 3 +- .../erp/controller/MaterialController.java | 2 + .../controller/SerialNumberController.java | 14 +++--- .../mappers/SerialNumberMapperEx.java | 6 +-- .../service/depotItem/DepotItemService.java | 9 +++- .../serialNumber/SerialNumberService.java | 44 +++++++++++-------- .../mapper_xml/SerialNumberMapperEx.xml | 39 ++++++++-------- 7 files changed, 67 insertions(+), 50 deletions(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/constants/BusinessConstants.java b/jshERP-boot/src/main/java/com/jsh/erp/constants/BusinessConstants.java index 7b350637..a0b1a759 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/constants/BusinessConstants.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/constants/BusinessConstants.java @@ -72,11 +72,12 @@ public class BusinessConstants { * */ public static final String SUB_TYPE_PURCHASE_ORDER = "采购订单"; public static final String SUB_TYPE_PURCHASE = "采购"; - public static final String SUB_TYPE_PURCHASE_TETURNS = "采购退货"; + public static final String SUB_TYPE_PURCHASE_RETURN = "采购退货"; public static final String SUB_TYPE_OTHER = "其它"; public static final String SUB_TYPE_RETAIL = "零售"; public static final String SUB_TYPE_SALES_ORDER = "销售订单"; public static final String SUB_TYPE_SALES = "销售"; + public static final String SUB_TYPE_SALES_RETURN = "销售退货"; public static final String SUB_TYPE_TRANSFER = "调拨"; /** * 批量插入sql时最大的数据条数 diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java index 33b5e0d0..47ef27c2 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java @@ -199,6 +199,8 @@ public class MaterialController { item.put("model", material.getModel()); item.put("unit", material.getCommodityUnit() + ratio); item.put("sku", material.getSku()); + item.put("enableSerialNumber", material.getEnableSerialNumber()); + item.put("enableBatchNumber", material.getEnableBatchNumber()); BigDecimal stock; if(StringUtil.isNotEmpty(material.getSku())){ stock = depotItemService.getSkuStockByParam(depotId,material.getMeId(),null,null); diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java index 91d6a4f4..bbd0c6eb 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java @@ -93,25 +93,25 @@ public class SerialNumberController { * 获取序列号商品 * @param name * @param depotId - * @param materialId + * @param barCode * @param currentPage * @param pageSize * @param request * @return * @throws Exception */ - @GetMapping(value = "/getEnableSerialNumberList") + @GetMapping(value = "/serialNumber/getEnableSerialNumberList") public BaseResponseInfo getEnableSerialNumberList(@RequestParam("name") String name, @RequestParam("depotId") Long depotId, - @RequestParam("materialId") Long materialId, - @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage, - @RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize, + @RequestParam("barCode") String barCode, + @RequestParam("page") Integer currentPage, + @RequestParam("rows") Integer pageSize, HttpServletRequest request)throws Exception { BaseResponseInfo res = new BaseResponseInfo(); Map map = new HashMap<>(); try { - List list = serialNumberService.getEnableSerialNumberList(name, depotId, materialId, (currentPage-1)*pageSize, pageSize); - Long total = serialNumberService.getEnableSerialNumberCount(name, depotId, materialId); + List list = serialNumberService.getEnableSerialNumberList(name, depotId, barCode, (currentPage-1)*pageSize, pageSize); + Long total = serialNumberService.getEnableSerialNumberCount(name, depotId, barCode); map.put("rows", list); map.put("total", total); res.code = 200; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java index 80783191..e1cc4a2b 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java @@ -51,7 +51,7 @@ public interface SerialNumberMapperEx { * 卖出: update jsh_serial_number set is_Sell='1' ,depothead_Id='depotheadId' where 1=1 and material_Id='materialId' * and is_Sell !='1' and delete_Flag !='1' {limit 0,count} * */ - int sellSerialNumber(@Param("materialId")Long materialId, @Param("depotHeadId")Long depotHeadId,@Param("count")Integer count, @Param("updateTime") Date updateTime,@Param("updater") Long updater); + int sellSerialNumber(@Param("materialId")Long materialId, @Param("depotHeadId")Long depotHeadId, @Param("snArray") String snArray[], @Param("updateTime") Date updateTime,@Param("updater") Long updater); /** * 赎回:update jsh_serial_number set is_Sell='0',depothead_Id=null where 1=1 and material_Id='materialId' * and depothead_Id='depotheadId' and is_Sell !='0' and delete_Flag !='1' {limit 0,count} @@ -66,10 +66,10 @@ public interface SerialNumberMapperEx { List getEnableSerialNumberList(@Param("name") String name, @Param("depotId") Long depotId, - @Param("materialId") Long materialId, + @Param("barCode") String barCode, @Param("offset") Integer offset, @Param("rows") Integer rows); Long getEnableSerialNumberCount(@Param("name") String name, @Param("depotId") Long depotId, - @Param("materialId") Long materialId); + @Param("barCode") String barCode); } 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 9690c1bd..226b2d62 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 @@ -336,6 +336,13 @@ public class DepotItemService { depotItem.setMaterialUnit(rowObj.getString("unit")); if (StringUtil.isExist(rowObj.get("snList"))) { depotItem.setSnList(rowObj.getString("snList")); + if(StringUtil.isExist(rowObj.get("depotId"))) { + Long depotId = rowObj.getLong("depotId"); + if(BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType())|| + BusinessConstants.SUB_TYPE_SALES_RETURN.equals(depotHead.getSubType())) { + serialNumberService.addSerialNumberByBill(materialExtend.getMaterialId(), depotId, depotItem.getSnList()); + } + } } if (StringUtil.isExist(rowObj.get("batchNumber"))) { depotItem.setBatchNumber(rowObj.getString("batchNumber")); @@ -442,7 +449,7 @@ public class DepotItemService { //判断商品是否开启序列号,开启的收回序列号,未开启的跳过 if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())) { //查询单据子表中开启序列号的数据列表 - serialNumberService.checkAndUpdateSerialNumber(depotItem, userInfo); + serialNumberService.checkAndUpdateSerialNumber(depotItem, userInfo, StringUtil.toNull(depotItem.getSnList())); } } } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java index 5b9fdae7..3b971373 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java @@ -341,19 +341,9 @@ public class SerialNumberService { * @Param: List * @return void */ - public void checkAndUpdateSerialNumber(DepotItem depotItem,User userInfo) throws Exception{ + public void checkAndUpdateSerialNumber(DepotItem depotItem,User userInfo, String snList) throws Exception{ if(depotItem!=null){ - //查询商品下已分配的可用序列号数量 - int SerialNumberSum= serialNumberMapperEx.countSerialNumberByMaterialIdAndDepotheadId(depotItem.getMaterialId(),null,BusinessConstants.IS_SELL_HOLD); - //BasicNumber=OperNumber*ratio - if((depotItem.getBasicNumber()==null?0:depotItem.getBasicNumber()).intValue()>SerialNumberSum){ - //获取商品名称 - Material material= materialMapper.selectByPrimaryKey(depotItem.getMaterialId()); - throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_CODE, - String.format(ExceptionConstants.MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_MSG,material==null?"":material.getName())); - } - //商品下序列号充足,分配序列号 - sellSerialNumber(depotItem.getMaterialId(),depotItem.getHeaderId(),(depotItem.getBasicNumber()==null?0:depotItem.getBasicNumber()).intValue(),userInfo); + sellSerialNumber(depotItem.getMaterialId(),depotItem.getHeaderId(), snList,userInfo); } } /** @@ -372,10 +362,11 @@ public class SerialNumberService { * @return com.jsh.erp.datasource.entities.SerialNumberEx */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int sellSerialNumber(Long materialId, Long depotHeadId,int count,User user) throws Exception{ + public int sellSerialNumber(Long materialId, Long depotHeadId, String snList, User user) throws Exception{ int result=0; try{ - result = serialNumberMapperEx.sellSerialNumber(materialId,depotHeadId,count,new Date(),user==null?null:user.getId()); + String [] snArray=snList.split(","); + result = serialNumberMapperEx.sellSerialNumber(materialId, depotHeadId, snArray, new Date(),user==null?null:user.getId()); }catch(Exception e){ JshException.writeFail(logger, e); } @@ -459,23 +450,40 @@ public class SerialNumberService { return result; } - public List getEnableSerialNumberList(String name, Long depotId, Long materialId, Integer offset, Integer rows)throws Exception { + public List getEnableSerialNumberList(String name, Long depotId, String barCode, Integer offset, Integer rows)throws Exception { List list =null; try{ - list = serialNumberMapperEx.getEnableSerialNumberList(StringUtil.toNull(name), depotId, materialId, offset, rows); + list = serialNumberMapperEx.getEnableSerialNumberList(StringUtil.toNull(name), depotId, barCode, offset, rows); }catch(Exception e){ JshException.readFail(logger, e); } return list; } - public Long getEnableSerialNumberCount(String name, Long depotId, Long materialId)throws Exception { + public Long getEnableSerialNumberCount(String name, Long depotId, String barCode)throws Exception { Long count = 0L; try{ - count = serialNumberMapperEx.getEnableSerialNumberCount(StringUtil.toNull(name), depotId, materialId); + count = serialNumberMapperEx.getEnableSerialNumberCount(StringUtil.toNull(name), depotId, barCode); }catch(Exception e){ JshException.readFail(logger, e); } return count; } + + public void addSerialNumberByBill(Long materialId, Long depotId, String snList) throws Exception { + List snArr = StringUtil.strToStringList(snList); + for(String sn: snArr) { + SerialNumber serialNumber = new SerialNumber(); + serialNumber.setMaterialId(materialId); + serialNumber.setDepotId(depotId); + serialNumber.setSerialNumber(sn); + Date date=new Date(); + serialNumber.setCreateTime(date); + serialNumber.setUpdateTime(date); + User userInfo=userService.getCurrentUser(); + serialNumber.setCreator(userInfo==null?null:userInfo.getId()); + serialNumber.setUpdater(userInfo==null?null:userInfo.getId()); + serialNumberMapper.insertSelective(serialNumber); + } + } } diff --git a/jshERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml index 3ba8ac80..1d57d116 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml @@ -165,20 +165,15 @@ and is_sell != '1' and ifnull(delete_flag,'0') !='1' - - and id in - ( select batchSN.id from - ( select selFrom.id from jsh_serial_number selFrom - where 1=1 - - and selFrom.material_Id = #{materialId} - - and selFrom.is_sell != '1' - and ifnull(selFrom.delete_flag,'0') !='1' - limit 0,#{count} - ) batchSN + + and serial_number + in ( + + #{sn} + ) + @@ -246,16 +241,18 @@ select ser.id, ser.serial_number FROM jsh_serial_number ser - where 1=1 + left join jsh_material m on m.id=ser.material_id and ifnull(m.delete_flag, '0') != '1' + left join jsh_material_extend me on me.material_id=m.id and ifnull(me.delete_flag,'0') !='1' + where 1=1 and me.default_flag=1 and ser.serial_number like #{bindName} - and ser.depot_id =#{depotId} + and ser.depot_id = #{depotId} - - and ser.material_id =#{materialId} + + and me.bar_code= #{barCode} and ser.is_sell = '0' and ifnull(ser.delete_flag,'0') !='1' @@ -268,16 +265,18 @@ select count(1) FROM jsh_serial_number ser - where 1=1 + left join jsh_material m on m.id=ser.material_id and ifnull(m.delete_flag, '0') != '1' + left join jsh_material_extend me on me.material_id=m.id and ifnull(me.delete_flag,'0') !='1' + where 1=1 and me.default_flag=1 and ser.serial_number like #{bindName} - and ser.depot_id =#{depotId} + and ser.depot_id = #{depotId} - - and ser.material_id =#{materialId} + + and me.bar_code= #{barCode} and ser.is_sell = '0' and ifnull(ser.delete_flag,'0') !='1'