解决序列号和批号出库的时候bug
This commit is contained in:
@@ -169,6 +169,5 @@ public interface DepotItemMapperEx {
|
|||||||
|
|
||||||
Long getCountByMaterialAndBatchNumber(
|
Long getCountByMaterialAndBatchNumber(
|
||||||
@Param("meId") Long meId,
|
@Param("meId") Long meId,
|
||||||
@Param("batchNumber") String batchNumber,
|
@Param("batchNumber") String batchNumber);
|
||||||
@Param("type") String type);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -405,11 +405,8 @@ public class DepotItemService {
|
|||||||
depotItem.setSnList(rowObj.getString("snList"));
|
depotItem.setSnList(rowObj.getString("snList"));
|
||||||
if(StringUtil.isExist(rowObj.get("depotId"))) {
|
if(StringUtil.isExist(rowObj.get("depotId"))) {
|
||||||
Long depotId = rowObj.getLong("depotId");
|
Long depotId = rowObj.getLong("depotId");
|
||||||
if(BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType())||
|
serialNumberService.addSerialNumberByBill(depotHead.getType(), depotHead.getSubType(),
|
||||||
BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType())||
|
depotHead.getNumber(), materialExtend.getMaterialId(), depotId, depotItem.getSnList());
|
||||||
BusinessConstants.SUB_TYPE_SALES_RETURN.equals(depotHead.getSubType())) {
|
|
||||||
serialNumberService.addSerialNumberByBill(depotHead.getNumber(), materialExtend.getMaterialId(), depotId, depotItem.getSnList());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//序列号不能为空
|
//序列号不能为空
|
||||||
@@ -419,15 +416,9 @@ public class DepotItemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (StringUtil.isExist(rowObj.get("batchNumber"))) {
|
if (StringUtil.isExist(rowObj.get("batchNumber"))) {
|
||||||
//入库的时候批号不能重复
|
//校验录入的批号是否重复
|
||||||
Long bnCount = depotItemMapperEx.getCountByMaterialAndBatchNumber(materialExtend.getId(), rowObj.getString("batchNumber"), "入库");
|
checkBatchNumberIsExist(depotHead.getType(), depotHead.getSubType(), materialExtend.getId(), rowObj.getString("batchNumber"), barCode);
|
||||||
if(bnCount == 0) {
|
depotItem.setBatchNumber(rowObj.getString("batchNumber"));
|
||||||
depotItem.setBatchNumber(rowObj.getString("batchNumber"));
|
|
||||||
} else {
|
|
||||||
throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BATCH_NUMBERE_EXISTS_CODE,
|
|
||||||
String.format(ExceptionConstants.DEPOT_HEAD_BATCH_NUMBERE_EXISTS_MSG, barCode));
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//批号不能为空
|
//批号不能为空
|
||||||
if(BusinessConstants.ENABLE_BATCH_NUMBER_ENABLED.equals(material.getEnableBatchNumber())) {
|
if(BusinessConstants.ENABLE_BATCH_NUMBER_ENABLED.equals(material.getEnableBatchNumber())) {
|
||||||
@@ -580,13 +571,34 @@ public class DepotItemService {
|
|||||||
String.format(ExceptionConstants.DEPOT_HEAD_ROW_FAILED_MSG));
|
String.format(ExceptionConstants.DEPOT_HEAD_ROW_FAILED_MSG));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 校验录入的批号是否重复
|
||||||
|
* @param type
|
||||||
|
* @param subType
|
||||||
|
* @param meId
|
||||||
|
* @param batchNumber
|
||||||
|
* @param barCode
|
||||||
|
*/
|
||||||
|
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||||
|
public void checkBatchNumberIsExist(String type, String subType, Long meId, String batchNumber, String barCode) {
|
||||||
|
if ((BusinessConstants.SUB_TYPE_PURCHASE.equals(subType) ||
|
||||||
|
BusinessConstants.SUB_TYPE_OTHER.equals(subType) ||
|
||||||
|
BusinessConstants.SUB_TYPE_SALES_RETURN.equals(subType)) &&
|
||||||
|
BusinessConstants.DEPOTHEAD_TYPE_IN.equals(type)) {
|
||||||
|
Long bnCount = depotItemMapperEx.getCountByMaterialAndBatchNumber(meId, batchNumber);
|
||||||
|
if (bnCount > 0) {
|
||||||
|
throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BATCH_NUMBERE_EXISTS_CODE,
|
||||||
|
String.format(ExceptionConstants.DEPOT_HEAD_BATCH_NUMBERE_EXISTS_MSG, barCode));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 判断单据的状态
|
* 判断单据的状态
|
||||||
* 通过数组对比:原单据的商品和商品数量(汇总) 与 分批操作后单据的商品和商品数量(汇总)
|
* 通过数组对比:原单据的商品和商品数量(汇总) 与 分批操作后单据的商品和商品数量(汇总)
|
||||||
* @param depotHead
|
* @param depotHead
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||||
public String getBillStatusByParam(DepotHead depotHead) {
|
public String getBillStatusByParam(DepotHead depotHead) {
|
||||||
String res = BusinessConstants.BILLS_STATUS_SKIPED;
|
String res = BusinessConstants.BILLS_STATUS_SKIPED;
|
||||||
//获取原单据的商品和商品数量(汇总)
|
//获取原单据的商品和商品数量(汇总)
|
||||||
@@ -616,6 +628,7 @@ public class DepotItemService {
|
|||||||
* @param depotHead
|
* @param depotHead
|
||||||
* @param billStatus
|
* @param billStatus
|
||||||
*/
|
*/
|
||||||
|
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||||
public void changeBillStatus(DepotHead depotHead, String billStatus) {
|
public void changeBillStatus(DepotHead depotHead, String billStatus) {
|
||||||
DepotHead depotHeadOrders = new DepotHead();
|
DepotHead depotHeadOrders = new DepotHead();
|
||||||
depotHeadOrders.setStatus(billStatus);
|
depotHeadOrders.setStatus(billStatus);
|
||||||
@@ -637,6 +650,7 @@ public class DepotItemService {
|
|||||||
* @param depotHead
|
* @param depotHead
|
||||||
* @param billStatus
|
* @param billStatus
|
||||||
*/
|
*/
|
||||||
|
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||||
public void changeBillPurchaseStatus(DepotHead depotHead, String billStatus) {
|
public void changeBillPurchaseStatus(DepotHead depotHead, String billStatus) {
|
||||||
DepotHead depotHeadOrders = new DepotHead();
|
DepotHead depotHeadOrders = new DepotHead();
|
||||||
depotHeadOrders.setPurchaseStatus(billStatus);
|
depotHeadOrders.setPurchaseStatus(billStatus);
|
||||||
|
|||||||
@@ -394,33 +394,39 @@ public class SerialNumberService {
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSerialNumberByBill(String inBillNo, Long materialId, Long depotId, String snList) throws Exception {
|
public void addSerialNumberByBill(String type, String subType, String inBillNo, Long materialId, Long depotId, String snList) throws Exception {
|
||||||
//将中文的逗号批量替换为英文逗号
|
//录入序列号的时候不能重复
|
||||||
snList = snList.replaceAll(",",",");
|
if ((BusinessConstants.SUB_TYPE_PURCHASE.equals(subType) ||
|
||||||
List<String> snArr = StringUtil.strToStringList(snList);
|
BusinessConstants.SUB_TYPE_OTHER.equals(subType) ||
|
||||||
for(String sn: snArr) {
|
BusinessConstants.SUB_TYPE_SALES_RETURN.equals(subType)) &&
|
||||||
List<SerialNumber> list = new ArrayList<>();
|
BusinessConstants.DEPOTHEAD_TYPE_IN.equals(type)) {
|
||||||
SerialNumberExample example = new SerialNumberExample();
|
//将中文的逗号批量替换为英文逗号
|
||||||
example.createCriteria().andMaterialIdEqualTo(materialId).andSerialNumberEqualTo(sn)
|
snList = snList.replaceAll(",", ",");
|
||||||
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
|
List<String> snArr = StringUtil.strToStringList(snList);
|
||||||
list = serialNumberMapper.selectByExample(example);
|
for (String sn : snArr) {
|
||||||
//判断如果不存在重复序列号就新增
|
List<SerialNumber> list = new ArrayList<>();
|
||||||
if(list == null || list.size() == 0) {
|
SerialNumberExample example = new SerialNumberExample();
|
||||||
SerialNumber serialNumber = new SerialNumber();
|
example.createCriteria().andMaterialIdEqualTo(materialId).andSerialNumberEqualTo(sn)
|
||||||
serialNumber.setMaterialId(materialId);
|
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
|
||||||
serialNumber.setDepotId(depotId);
|
list = serialNumberMapper.selectByExample(example);
|
||||||
serialNumber.setSerialNumber(sn);
|
//判断如果不存在重复序列号就新增
|
||||||
Date date = new Date();
|
if (list == null || list.size() == 0) {
|
||||||
serialNumber.setCreateTime(date);
|
SerialNumber serialNumber = new SerialNumber();
|
||||||
serialNumber.setUpdateTime(date);
|
serialNumber.setMaterialId(materialId);
|
||||||
User userInfo = userService.getCurrentUser();
|
serialNumber.setDepotId(depotId);
|
||||||
serialNumber.setCreator(userInfo == null ? null : userInfo.getId());
|
serialNumber.setSerialNumber(sn);
|
||||||
serialNumber.setUpdater(userInfo == null ? null : userInfo.getId());
|
Date date = new Date();
|
||||||
serialNumber.setInBillNo(inBillNo);
|
serialNumber.setCreateTime(date);
|
||||||
serialNumberMapper.insertSelective(serialNumber);
|
serialNumber.setUpdateTime(date);
|
||||||
} else {
|
User userInfo = userService.getCurrentUser();
|
||||||
throw new BusinessRunTimeException(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_CODE,
|
serialNumber.setCreator(userInfo == null ? null : userInfo.getId());
|
||||||
String.format(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_MSG, sn));
|
serialNumber.setUpdater(userInfo == null ? null : userInfo.getId());
|
||||||
|
serialNumber.setInBillNo(inBillNo);
|
||||||
|
serialNumberMapper.insertSelective(serialNumber);
|
||||||
|
} else {
|
||||||
|
throw new BusinessRunTimeException(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_CODE,
|
||||||
|
String.format(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_MSG, sn));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user