高值出库明细生成单据优化

dev_ksck
anthonywj 1 year ago
parent 13ac0d742f
commit 38257800c0

@ -45,8 +45,10 @@ import com.glxp.api.service.inout.IoOrderService;
import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.service.thrsys.ThrInvOrderService; import com.glxp.api.service.thrsys.ThrInvOrderService;
import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.OrderNoTypeBean; import com.glxp.api.util.OrderNoTypeBean;
import com.glxp.api.util.udi.FilterUdiUtils; import com.glxp.api.util.udi.FilterUdiUtils;
import com.glxp.api.util.udi.UdiCalCountUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -91,7 +93,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
UdiRelevanceService udiRelevanceService; UdiRelevanceService udiRelevanceService;
@Resource @Resource
IoCodeTempDao ioCodeTempDao; IoCodeTempDao ioCodeTempDao;
@Resource
IBasicBussinessTypeService bussinessTypeService;
@Resource
IoAddInoutService addInoutService;
@Resource
UdiCalCountUtil udiCalCountUtil;
// 设置要输出的日期格式 // 设置要输出的日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
@ -201,6 +208,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
thrInvOrderDetail.setOrderIdFk(billNo); thrInvOrderDetail.setOrderIdFk(billNo);
thrInvOrderDetail.setNameCode(nameCode); thrInvOrderDetail.setNameCode(nameCode);
thrInvOrderDetail.setRelId(relId); thrInvOrderDetail.setRelId(relId);
//校验产品是否被供应商关联
UdiRlSupEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId);
if (udiRlSupEntity != null)
thrInvOrderDetail.setSupId(udiRlSupEntity.getCustomerId());
else
exmsg.append(thrCode + "供应商未关联");
thrInvOrderDetail.setUdiCode(udiCode); thrInvOrderDetail.setUdiCode(udiCode);
thrInvOrderDetail.setThrCode(thrCode); thrInvOrderDetail.setThrCode(thrCode);
thrInvOrderDetail.setReCount(String.valueOf(count)); thrInvOrderDetail.setReCount(String.valueOf(count));
@ -208,7 +221,6 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
thrInvOrderDetail.setProductionDate(udiEntity.getProduceDate()); thrInvOrderDetail.setProductionDate(udiEntity.getProduceDate());
thrInvOrderDetail.setExpireDate(udiEntity.getExpireDate()); thrInvOrderDetail.setExpireDate(udiEntity.getExpireDate());
thrInvOrderDetail.setSerialNo(udiEntity.getSerialNo()); thrInvOrderDetail.setSerialNo(udiEntity.getSerialNo());
thrInvOrderDetails.add(thrInvOrderDetail); thrInvOrderDetails.add(thrInvOrderDetail);
} else { } else {
String mainAction = item.getMainAction(); String mainAction = item.getMainAction();
@ -311,11 +323,13 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
return thrInvOrderMapper.delete(uw); return thrInvOrderMapper.delete(uw);
} }
@Resource
IBasicBussinessTypeService bussinessTypeService;
@Resource
IoAddInoutService addInoutService;
/**
*
*
* @param generateOrderRequest
* @return
*/
@Override @Override
public boolean generateOrder(GenerateOrderRequest generateOrderRequest) { public boolean generateOrder(GenerateOrderRequest generateOrderRequest) {
String billNo = generateOrderRequest.getBillNo(); String billNo = generateOrderRequest.getBillNo();
@ -340,7 +354,6 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
Map<String, List<ThrInvOrderDetail>> grouped = new HashMap<>(); Map<String, List<ThrInvOrderDetail>> grouped = new HashMap<>();
//往来类型为患者,则需要根据患者进行拆单 //往来类型为患者,则需要根据患者进行拆单
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) { if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) {
grouped = thrInvOrderDetails.stream() grouped = thrInvOrderDetails.stream()
.collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode)); .collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode));
} else { } else {
@ -387,7 +400,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
return true; return true;
} }
/**
*
*
* @param generateOrderRequest
* @return
*/
@Override @Override
public boolean generateGhOrder(GenerateOrderRequest generateOrderRequest) { public boolean generateGhOrder(GenerateOrderRequest generateOrderRequest) {
String billNo = generateOrderRequest.getBillNo(); String billNo = generateOrderRequest.getBillNo();
@ -406,6 +424,16 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
//校验单据的relId有null不生成单据 //校验单据的relId有null不生成单据
if (!inspectionDocuments(thrInvOrderDetails)) return false; if (!inspectionDocuments(thrInvOrderDetails)) return false;
BasicBussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findByAction(generateOrderRequest.getAction());
Map<String, List<ThrInvOrderDetail>> grouped = new HashMap<>();
//往来类型为患者,则需要根据患者进行拆单
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) {
grouped = thrInvOrderDetails.stream()
.collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode));
} else {
grouped.put(generateOrderRequest.getFromCorp(), thrInvOrderDetails);
}
for (Map.Entry<String, List<ThrInvOrderDetail>> entry : grouped.entrySet()) {
//新单号 //新单号
String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd"));
IoOrderEntity ioOrderEntity = new IoOrderEntity(); IoOrderEntity ioOrderEntity = new IoOrderEntity();
@ -425,7 +453,7 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
Long userId = customerService.getUserId(); Long userId = customerService.getUserId();
ioOrderEntity.setCreateUser(userId + ""); ioOrderEntity.setCreateUser(userId + "");
ioOrderEntity.setUpdateUser(userId + ""); ioOrderEntity.setUpdateUser(userId + "");
ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_NORMAL);//正常单据处理 ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);//正常单据处理
List<IoCodeTempEntity> newIoCodeTemps = new ArrayList<>(thrInvOrderDetails.size()); List<IoCodeTempEntity> newIoCodeTemps = new ArrayList<>(thrInvOrderDetails.size());
@ -444,9 +472,10 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
thrInvOrder.setUpdateUser(userId + ""); thrInvOrder.setUpdateUser(userId + "");
thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); thrInvOrderMapper.updateByPrimaryKey(thrInvOrder);
ioCodeTempDao.insertBatch(newIoCodeTemps); ioCodeTempDao.insertBatch(newIoCodeTemps);
}
ioAddInoutService.dealProcess(ioOrderEntity); // ioAddInoutService.dealProcess(ioOrderEntity);
return true; return true;
} }
@ -683,8 +712,7 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
* @param newBillNo * @param newBillNo
* @return * @return
*/ */
private boolean copyIoCodeTemps private boolean copyIoCodeTemps(List<ThrInvOrderDetail> thrInvOrderDetails, List<IoCodeTempEntity> newIoCodeTemps, String
(List<ThrInvOrderDetail> thrInvOrderDetails, List<IoCodeTempEntity> newIoCodeTemps, String
newBillNo, GenerateOrderRequest generateOrderRequest) { newBillNo, GenerateOrderRequest generateOrderRequest) {
thrInvOrderDetails.forEach(item -> { thrInvOrderDetails.forEach(item -> {
@ -696,7 +724,11 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
BeanUtils.copyProperties(item, ioCodeTempEntity); BeanUtils.copyProperties(item, ioCodeTempEntity);
ioCodeTempEntity.setUpdateTime(new Date()); ioCodeTempEntity.setUpdateTime(new Date());
ioCodeTempEntity.setCreateTime(new Date()); ioCodeTempEntity.setCreateTime(new Date());
ioCodeTempEntity.setSupId(item.getSupId());
ioCodeTempEntity.setProduceDate(item.getProductionDate());
ioCodeTempEntity.setCount(IntUtil.value(item.getReCount()));
ioCodeTempEntity.setReCount(udiCalCountUtil.getActCount(ioCodeTempEntity));
ioCodeTempEntity.setCorpOrderId(item.getOrderIdFk());
newIoCodeTemps.add(ioCodeTempEntity); newIoCodeTemps.add(ioCodeTempEntity);
}); });
@ -809,6 +841,13 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
if (ObjectUtil.isNull(relId)) { if (ObjectUtil.isNull(relId)) {
exmsg.append(thrCode + ","); exmsg.append(thrCode + ",");
} }
//校验产品是否被供应商关联
UdiRlSupEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId);
if (udiRlSupEntity != null)
thrInvOrderDetail.setSupId(udiRlSupEntity.getCustomerId());
else
exmsg.append(thrCode + "供应商未关联");
}); });
if (exmsg.length() > 0) { if (exmsg.length() > 0) {
exmsg.deleteCharAt(exmsg.length() - 1); exmsg.deleteCharAt(exmsg.length() - 1);

Loading…
Cancel
Save