增加销售订单与采购订单的关联

This commit is contained in:
季圣华
2022-05-18 00:21:15 +08:00
parent 14d5c5247d
commit 3438524a47
12 changed files with 305 additions and 35 deletions

View File

@@ -325,6 +325,23 @@ public class DepotHeadService {
depotHeadMapper.updateByExampleSelective(dh, example);
}
}
//将关联的销售订单单据置为未采购状态-针对销售订单转采购订单的情况
if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){
if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) &&
BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) {
DepotHead dh = new DepotHead();
//获取分批操作后单据的商品和商品数量(汇总)
List<DepotItemVo4MaterialAndSum> batchList = depotItemMapperEx.getBatchBillDetailMaterialSum(depotHead.getLinkNumber(), depotHead.getType());
if(batchList.size()>0) {
dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_SKIPING);
} else {
dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_UN_AUDIT);
}
DepotHeadExample example = new DepotHeadExample();
example.createCriteria().andNumberEqualTo(depotHead.getLinkNumber());
depotHeadMapper.updateByExampleSelective(dh, example);
}
}
//更新当前库存
for (DepotItem depotItem : list) {
depotItemService.updateCurrentStock(depotItem);
@@ -713,6 +730,7 @@ public class DepotHeadService {
depotHead.setCreator(userInfo==null?null:userInfo.getId());
depotHead.setCreateTime(new Timestamp(System.currentTimeMillis()));
depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT);
depotHead.setPurchaseStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT);
depotHead.setPayType(depotHead.getPayType()==null?"现付":depotHead.getPayType());
if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){
depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""));

View File

@@ -566,6 +566,13 @@ public class DepotItemService {
changeBillStatus(depotHead, billStatus);
}
}
//如果关联单据号非空则更新订单的状态,此处针对销售订单转采购订单的场景
if(BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) {
if(StringUtil.isNotEmpty(depotHead.getLinkNumber())) {
String billStatus = getBillStatusByParam(depotHead);
changeBillPurchaseStatus(depotHead, billStatus);
}
}
} else {
throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ROW_FAILED_CODE,
String.format(ExceptionConstants.DEPOT_HEAD_ROW_FAILED_MSG));
@@ -623,6 +630,27 @@ public class DepotItemService {
}
}
/**
* 更新单据状态,此处针对销售订单转采购订单的场景
* @param depotHead
* @param billStatus
*/
public void changeBillPurchaseStatus(DepotHead depotHead, String billStatus) {
DepotHead depotHeadOrders = new DepotHead();
depotHeadOrders.setPurchaseStatus(billStatus);
DepotHeadExample example = new DepotHeadExample();
List<String> linkNumberList = StringUtil.strToStringList(depotHead.getLinkNumber());
example.createCriteria().andNumberIn(linkNumberList);
try{
depotHeadMapper.updateByExampleSelective(depotHeadOrders, example);
}catch(Exception e){
logger.error("异常码[{}],异常提示[{}],异常[{}]",
ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e);
throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE,
ExceptionConstants.DATA_WRITE_FAIL_MSG);
}
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public void deleteDepotItemHeadId(Long headerId)throws Exception {
try{
@@ -810,15 +838,27 @@ public class DepotItemService {
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public BigDecimal getFinishNumber(Long meId, Long headerId, Unit unitInfo, String materialUnit) {
public BigDecimal getFinishNumber(Long meId, Long headerId, Unit unitInfo, String materialUnit, String linkType) {
String goToType = "";
DepotHead depotHead =depotHeadMapper.selectByPrimaryKey(headerId);
String linkNumber = depotHead.getNumber(); //订单号
if(BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) {
goToType = BusinessConstants.SUB_TYPE_PURCHASE;
}
if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(depotHead.getSubType())) {
goToType = BusinessConstants.SUB_TYPE_SALES;
if("purchase".equals(linkType)) {
if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(depotHead.getSubType())) {
goToType = BusinessConstants.SUB_TYPE_PURCHASE_ORDER;
}
} else {
if(BusinessConstants.PURCHASE_STATUS_SKIPING.equals(depotHead.getPurchaseStatus())) {
if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(depotHead.getSubType())) {
goToType = BusinessConstants.SUB_TYPE_PURCHASE_ORDER;
}
} else {
if(BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) {
goToType = BusinessConstants.SUB_TYPE_PURCHASE;
}
if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(depotHead.getSubType())) {
goToType = BusinessConstants.SUB_TYPE_SALES;
}
}
}
BigDecimal count = depotItemMapperEx.getFinishNumber(meId, linkNumber, goToType);
//根据多单位情况进行数量的转换