解决删除采购订单关联的请购单状态不变的bug

This commit is contained in:
jishenghua
2024-04-23 23:05:20 +08:00
parent adcfe65ac9
commit 38e45c1500
2 changed files with 39 additions and 8 deletions

View File

@@ -508,6 +508,23 @@ public class DepotHeadService {
depotHeadMapper.updateByExampleSelective(dh, example);
}
}
//将关联的单据置为审核状态-针对请购单转采购订单的情况
if(StringUtil.isNotEmpty(depotHead.getLinkApply())){
if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) &&
BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) {
String status = BusinessConstants.BILLS_STATUS_AUDIT;
//查询除当前单据之外的关联单据列表
List<DepotHead> exceptCurrentList = getListByLinkApplyExceptCurrent(depotHead.getLinkApply(), depotHead.getNumber(), depotHead.getType());
if(exceptCurrentList!=null && exceptCurrentList.size()>0) {
status = BusinessConstants.BILLS_STATUS_SKIPING;
}
DepotHead dh = new DepotHead();
dh.setStatus(status);
DepotHeadExample example = new DepotHeadExample();
example.createCriteria().andNumberEqualTo(depotHead.getLinkApply());
depotHeadMapper.updateByExampleSelective(dh, example);
}
}
//将关联的销售订单单据置为未采购状态-针对销售订单转采购订单的情况
if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){
if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) &&
@@ -959,6 +976,20 @@ public class DepotHeadService {
return depotHeadMapper.selectByExample(example);
}
/**
* 查询除当前单据之外的关联单据列表
* @param linkApply
* @param number
* @return
* @throws Exception
*/
public List<DepotHead> getListByLinkApplyExceptCurrent(String linkApply, String number, String type)throws Exception {
DepotHeadExample example = new DepotHeadExample();
example.createCriteria().andLinkApplyEqualTo(linkApply).andNumberNotEqualTo(number).andTypeEqualTo(type)
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
return depotHeadMapper.selectByExample(example);
}
/**
* 根据原单号查询关联的单据列表(批量)
* @param linkNumberList

View File

@@ -268,15 +268,15 @@ public class DepotItemService {
/**
* 查询被关联订单中指定商品的明细信息
* @param linkNumber
* @param linkStr
* @param meId
* @return
* @throws Exception
*/
public DepotItem getPreItemByHeaderIdAndMaterial(String linkNumber, Long meId, Long linkId)throws Exception {
public DepotItem getPreItemByHeaderIdAndMaterial(String linkStr, Long meId, Long linkId)throws Exception {
DepotItem depotItem = new DepotItem();
try{
DepotHead depotHead = depotHeadService.getDepotHead(linkNumber);
DepotHead depotHead = depotHeadService.getDepotHead(linkStr);
DepotItemExample example = new DepotItemExample();
example.createCriteria().andHeaderIdEqualTo(depotHead.getId()).andMaterialExtendIdEqualTo(meId).andIdEqualTo(linkId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
List<DepotItem> list = depotItemMapper.selectByExample(example);
@@ -549,9 +549,9 @@ public class DepotItemService {
depotItem.setBasicNumber(oNumber); //其他情况
}
}
//如果数量+已完成数量>原订单数量,给出预警(判断前提是存在关联订单)
if (StringUtil.isNotEmpty(depotHead.getLinkNumber())
&& StringUtil.isExist(rowObj.get("preNumber")) && StringUtil.isExist(rowObj.get("finishNumber"))) {
//如果数量+已完成数量>原订单数量,给出预警(判断前提是存在关联订单|关联请购单)
String linkStr = StringUtil.isNotEmpty(depotHead.getLinkNumber())? depotHead.getLinkNumber(): depotHead.getLinkApply();
if (StringUtil.isNotEmpty(linkStr) && StringUtil.isExist(rowObj.get("preNumber")) && StringUtil.isExist(rowObj.get("finishNumber"))) {
if("add".equals(actionType)) {
//在新增模式进行状态赋值
BigDecimal preNumber = rowObj.getBigDecimal("preNumber");
@@ -567,9 +567,9 @@ public class DepotItemService {
String currentSubType = depotHead.getSubType();
//在更新模式进行状态赋值
String unit = rowObj.get("unit").toString();
Long preHeaderId = depotHeadService.getDepotHead(depotHead.getLinkNumber()).getId();
Long preHeaderId = depotHeadService.getDepotHead(linkStr).getId();
//前一个单据的数量
BigDecimal preNumber = getPreItemByHeaderIdAndMaterial(depotHead.getLinkNumber(), depotItem.getMaterialExtendId(), depotItem.getLinkId()).getOperNumber();
BigDecimal preNumber = getPreItemByHeaderIdAndMaterial(linkStr, depotItem.getMaterialExtendId(), depotItem.getLinkId()).getOperNumber();
//除去此单据之外的已入库|已出库
BigDecimal realFinishNumber = getRealFinishNumber(currentSubType, depotItem.getMaterialExtendId(), depotItem.getLinkId(), preHeaderId, headerId, unitInfo, unit);
if(depotItem.getOperNumber().add(realFinishNumber).compareTo(preNumber)>0) {