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