解决删除采购订单关联的请购单状态不变的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); 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(StringUtil.isNotEmpty(depotHead.getLinkNumber())){
if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) &&
@@ -959,6 +976,20 @@ public class DepotHeadService {
return depotHeadMapper.selectByExample(example); 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 * @param linkNumberList

View File

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