优化序列号和批次商品的逻辑
This commit is contained in:
@@ -72,11 +72,12 @@ public class BusinessConstants {
|
|||||||
* */
|
* */
|
||||||
public static final String SUB_TYPE_PURCHASE_ORDER = "采购订单";
|
public static final String SUB_TYPE_PURCHASE_ORDER = "采购订单";
|
||||||
public static final String SUB_TYPE_PURCHASE = "采购";
|
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_OTHER = "其它";
|
||||||
public static final String SUB_TYPE_RETAIL = "零售";
|
public static final String SUB_TYPE_RETAIL = "零售";
|
||||||
public static final String SUB_TYPE_SALES_ORDER = "销售订单";
|
public static final String SUB_TYPE_SALES_ORDER = "销售订单";
|
||||||
public static final String SUB_TYPE_SALES = "销售";
|
public static final String SUB_TYPE_SALES = "销售";
|
||||||
|
public static final String SUB_TYPE_SALES_RETURN = "销售退货";
|
||||||
public static final String SUB_TYPE_TRANSFER = "调拨";
|
public static final String SUB_TYPE_TRANSFER = "调拨";
|
||||||
/**
|
/**
|
||||||
* 批量插入sql时最大的数据条数
|
* 批量插入sql时最大的数据条数
|
||||||
|
|||||||
@@ -199,6 +199,8 @@ public class MaterialController {
|
|||||||
item.put("model", material.getModel());
|
item.put("model", material.getModel());
|
||||||
item.put("unit", material.getCommodityUnit() + ratio);
|
item.put("unit", material.getCommodityUnit() + ratio);
|
||||||
item.put("sku", material.getSku());
|
item.put("sku", material.getSku());
|
||||||
|
item.put("enableSerialNumber", material.getEnableSerialNumber());
|
||||||
|
item.put("enableBatchNumber", material.getEnableBatchNumber());
|
||||||
BigDecimal stock;
|
BigDecimal stock;
|
||||||
if(StringUtil.isNotEmpty(material.getSku())){
|
if(StringUtil.isNotEmpty(material.getSku())){
|
||||||
stock = depotItemService.getSkuStockByParam(depotId,material.getMeId(),null,null);
|
stock = depotItemService.getSkuStockByParam(depotId,material.getMeId(),null,null);
|
||||||
|
|||||||
@@ -93,25 +93,25 @@ public class SerialNumberController {
|
|||||||
* 获取序列号商品
|
* 获取序列号商品
|
||||||
* @param name
|
* @param name
|
||||||
* @param depotId
|
* @param depotId
|
||||||
* @param materialId
|
* @param barCode
|
||||||
* @param currentPage
|
* @param currentPage
|
||||||
* @param pageSize
|
* @param pageSize
|
||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/getEnableSerialNumberList")
|
@GetMapping(value = "/serialNumber/getEnableSerialNumberList")
|
||||||
public BaseResponseInfo getEnableSerialNumberList(@RequestParam("name") String name,
|
public BaseResponseInfo getEnableSerialNumberList(@RequestParam("name") String name,
|
||||||
@RequestParam("depotId") Long depotId,
|
@RequestParam("depotId") Long depotId,
|
||||||
@RequestParam("materialId") Long materialId,
|
@RequestParam("barCode") String barCode,
|
||||||
@RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage,
|
@RequestParam("page") Integer currentPage,
|
||||||
@RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize,
|
@RequestParam("rows") Integer pageSize,
|
||||||
HttpServletRequest request)throws Exception {
|
HttpServletRequest request)throws Exception {
|
||||||
BaseResponseInfo res = new BaseResponseInfo();
|
BaseResponseInfo res = new BaseResponseInfo();
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
try {
|
try {
|
||||||
List<SerialNumber> list = serialNumberService.getEnableSerialNumberList(name, depotId, materialId, (currentPage-1)*pageSize, pageSize);
|
List<SerialNumber> list = serialNumberService.getEnableSerialNumberList(name, depotId, barCode, (currentPage-1)*pageSize, pageSize);
|
||||||
Long total = serialNumberService.getEnableSerialNumberCount(name, depotId, materialId);
|
Long total = serialNumberService.getEnableSerialNumberCount(name, depotId, barCode);
|
||||||
map.put("rows", list);
|
map.put("rows", list);
|
||||||
map.put("total", total);
|
map.put("total", total);
|
||||||
res.code = 200;
|
res.code = 200;
|
||||||
|
|||||||
@@ -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'
|
* 卖出: 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}
|
* 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'
|
* 赎回: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}
|
* and depothead_Id='depotheadId' and is_Sell !='0' and delete_Flag !='1' {limit 0,count}
|
||||||
@@ -66,10 +66,10 @@ public interface SerialNumberMapperEx {
|
|||||||
|
|
||||||
List<SerialNumber> getEnableSerialNumberList(@Param("name") String name,
|
List<SerialNumber> getEnableSerialNumberList(@Param("name") String name,
|
||||||
@Param("depotId") Long depotId,
|
@Param("depotId") Long depotId,
|
||||||
@Param("materialId") Long materialId,
|
@Param("barCode") String barCode,
|
||||||
@Param("offset") Integer offset, @Param("rows") Integer rows);
|
@Param("offset") Integer offset, @Param("rows") Integer rows);
|
||||||
|
|
||||||
Long getEnableSerialNumberCount(@Param("name") String name,
|
Long getEnableSerialNumberCount(@Param("name") String name,
|
||||||
@Param("depotId") Long depotId,
|
@Param("depotId") Long depotId,
|
||||||
@Param("materialId") Long materialId);
|
@Param("barCode") String barCode);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -336,6 +336,13 @@ public class DepotItemService {
|
|||||||
depotItem.setMaterialUnit(rowObj.getString("unit"));
|
depotItem.setMaterialUnit(rowObj.getString("unit"));
|
||||||
if (StringUtil.isExist(rowObj.get("snList"))) {
|
if (StringUtil.isExist(rowObj.get("snList"))) {
|
||||||
depotItem.setSnList(rowObj.getString("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"))) {
|
if (StringUtil.isExist(rowObj.get("batchNumber"))) {
|
||||||
depotItem.setBatchNumber(rowObj.getString("batchNumber"));
|
depotItem.setBatchNumber(rowObj.getString("batchNumber"));
|
||||||
@@ -442,7 +449,7 @@ public class DepotItemService {
|
|||||||
//判断商品是否开启序列号,开启的收回序列号,未开启的跳过
|
//判断商品是否开启序列号,开启的收回序列号,未开启的跳过
|
||||||
if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())) {
|
if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())) {
|
||||||
//查询单据子表中开启序列号的数据列表
|
//查询单据子表中开启序列号的数据列表
|
||||||
serialNumberService.checkAndUpdateSerialNumber(depotItem, userInfo);
|
serialNumberService.checkAndUpdateSerialNumber(depotItem, userInfo, StringUtil.toNull(depotItem.getSnList()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -341,19 +341,9 @@ public class SerialNumberService {
|
|||||||
* @Param: List<DepotItem>
|
* @Param: List<DepotItem>
|
||||||
* @return void
|
* @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){
|
if(depotItem!=null){
|
||||||
//查询商品下已分配的可用序列号数量
|
sellSerialNumber(depotItem.getMaterialId(),depotItem.getHeaderId(), snList,userInfo);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -372,10 +362,11 @@ public class SerialNumberService {
|
|||||||
* @return com.jsh.erp.datasource.entities.SerialNumberEx
|
* @return com.jsh.erp.datasource.entities.SerialNumberEx
|
||||||
*/
|
*/
|
||||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
@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;
|
int result=0;
|
||||||
try{
|
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){
|
}catch(Exception e){
|
||||||
JshException.writeFail(logger, e);
|
JshException.writeFail(logger, e);
|
||||||
}
|
}
|
||||||
@@ -459,23 +450,40 @@ public class SerialNumberService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SerialNumber> getEnableSerialNumberList(String name, Long depotId, Long materialId, Integer offset, Integer rows)throws Exception {
|
public List<SerialNumber> getEnableSerialNumberList(String name, Long depotId, String barCode, Integer offset, Integer rows)throws Exception {
|
||||||
List<SerialNumber> list =null;
|
List<SerialNumber> list =null;
|
||||||
try{
|
try{
|
||||||
list = serialNumberMapperEx.getEnableSerialNumberList(StringUtil.toNull(name), depotId, materialId, offset, rows);
|
list = serialNumberMapperEx.getEnableSerialNumberList(StringUtil.toNull(name), depotId, barCode, offset, rows);
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
JshException.readFail(logger, e);
|
JshException.readFail(logger, e);
|
||||||
}
|
}
|
||||||
return list;
|
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;
|
Long count = 0L;
|
||||||
try{
|
try{
|
||||||
count = serialNumberMapperEx.getEnableSerialNumberCount(StringUtil.toNull(name), depotId, materialId);
|
count = serialNumberMapperEx.getEnableSerialNumberCount(StringUtil.toNull(name), depotId, barCode);
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
JshException.readFail(logger, e);
|
JshException.readFail(logger, e);
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addSerialNumberByBill(Long materialId, Long depotId, String snList) throws Exception {
|
||||||
|
List<String> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,20 +165,15 @@
|
|||||||
</if>
|
</if>
|
||||||
and is_sell != '1'
|
and is_sell != '1'
|
||||||
and ifnull(delete_flag,'0') !='1'
|
and ifnull(delete_flag,'0') !='1'
|
||||||
<if test="count != null">
|
<if test="snArray != null">
|
||||||
and id in
|
and serial_number
|
||||||
( select batchSN.id from
|
in (
|
||||||
( select selFrom.id from jsh_serial_number selFrom
|
<foreach collection="snArray" item="sn" separator=",">
|
||||||
where 1=1
|
#{sn}
|
||||||
<if test="materialId != null">
|
</foreach>
|
||||||
and selFrom.material_Id = #{materialId}
|
|
||||||
</if>
|
|
||||||
and selFrom.is_sell != '1'
|
|
||||||
and ifnull(selFrom.delete_flag,'0') !='1'
|
|
||||||
limit 0,#{count}
|
|
||||||
) batchSN
|
|
||||||
)
|
)
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="cancelSerialNumber">
|
<update id="cancelSerialNumber">
|
||||||
@@ -246,16 +241,18 @@
|
|||||||
select
|
select
|
||||||
ser.id, ser.serial_number
|
ser.id, ser.serial_number
|
||||||
FROM jsh_serial_number ser
|
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
|
||||||
<if test="name != null">
|
<if test="name != null">
|
||||||
<bind name="bindName" value="'%'+name+'%'"/>
|
<bind name="bindName" value="'%'+name+'%'"/>
|
||||||
and ser.serial_number like #{bindName}
|
and ser.serial_number like #{bindName}
|
||||||
</if>
|
</if>
|
||||||
<if test="depotId != null">
|
<if test="depotId != null">
|
||||||
and ser.depot_id =#{depotId}
|
and ser.depot_id = #{depotId}
|
||||||
</if>
|
</if>
|
||||||
<if test="materialId != null">
|
<if test="barCode != null">
|
||||||
and ser.material_id =#{materialId}
|
and me.bar_code= #{barCode}
|
||||||
</if>
|
</if>
|
||||||
and ser.is_sell = '0'
|
and ser.is_sell = '0'
|
||||||
and ifnull(ser.delete_flag,'0') !='1'
|
and ifnull(ser.delete_flag,'0') !='1'
|
||||||
@@ -268,16 +265,18 @@
|
|||||||
select
|
select
|
||||||
count(1)
|
count(1)
|
||||||
FROM jsh_serial_number ser
|
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
|
||||||
<if test="name != null">
|
<if test="name != null">
|
||||||
<bind name="bindName" value="'%'+name+'%'"/>
|
<bind name="bindName" value="'%'+name+'%'"/>
|
||||||
and ser.serial_number like #{bindName}
|
and ser.serial_number like #{bindName}
|
||||||
</if>
|
</if>
|
||||||
<if test="depotId != null">
|
<if test="depotId != null">
|
||||||
and ser.depot_id =#{depotId}
|
and ser.depot_id = #{depotId}
|
||||||
</if>
|
</if>
|
||||||
<if test="materialId != null">
|
<if test="barCode != null">
|
||||||
and ser.material_id =#{materialId}
|
and me.bar_code= #{barCode}
|
||||||
</if>
|
</if>
|
||||||
and ser.is_sell = '0'
|
and ser.is_sell = '0'
|
||||||
and ifnull(ser.delete_flag,'0') !='1'
|
and ifnull(ser.delete_flag,'0') !='1'
|
||||||
|
|||||||
Reference in New Issue
Block a user