You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
12 KiB
Java
244 lines
12 KiB
Java
package com.glxp.api.service.inout;
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.glxp.api.constant.Constant;
|
|
import com.glxp.api.constant.ConstantStatus;
|
|
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
|
|
import com.glxp.api.entity.basic.UdiRlSupEntity;
|
|
import com.glxp.api.entity.inout.IoCodeEntity;
|
|
import com.glxp.api.entity.inout.IoCodeTempEntity;
|
|
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
|
|
import com.glxp.api.entity.inout.IoOrderEntity;
|
|
import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest;
|
|
import com.glxp.api.req.inout.PdaCodeEntity;
|
|
import com.glxp.api.req.inout.PostOrderRequest;
|
|
import com.glxp.api.res.basic.UdiRelevanceResponse;
|
|
import com.glxp.api.service.basic.UdiRelevanceService;
|
|
import com.glxp.api.service.basic.UdiRlSupService;
|
|
import com.glxp.api.service.basic.IBasicBussinessTypeService;
|
|
import com.glxp.api.util.DateUtil;
|
|
import com.glxp.api.util.GennerOrderUtils;
|
|
import com.glxp.api.util.OrderNoTypeBean;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class IoAddInoutService {
|
|
|
|
@Resource
|
|
private IBasicBussinessTypeService basicBussinessTypeService;
|
|
@Resource
|
|
private IoOrderService orderService;
|
|
@Resource
|
|
GennerOrderUtils gennerOrderUtils;
|
|
@Resource
|
|
IoCodeService codeService;
|
|
@Resource
|
|
UdiRlSupService udiRlSupService;
|
|
@Resource
|
|
IoOrderDetailCodeService orderDetailCodeService;
|
|
@Resource
|
|
UdiRelevanceService udiRelevanceService;
|
|
|
|
//手持终端上传生成扫码单据
|
|
public void creatOrderByPda(PostOrderRequest postOrderRequest) {
|
|
List<PostOrderRequest.PostOrder> postOrders = postOrderRequest.getPostOrders();
|
|
if (postOrders != null && postOrders.size() > 0) {
|
|
for (int i = 0; i < postOrders.size(); i++) {
|
|
PostOrderRequest.PostOrder postOrder = postOrders.get(i);
|
|
List<PdaCodeEntity> pdaCodeEntities = postOrder.getCodes();
|
|
if (pdaCodeEntities != null && pdaCodeEntities.size() > 0) {
|
|
|
|
//创建单据
|
|
PdaCodeEntity pdaCodeEntity = pdaCodeEntities.get(0);
|
|
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(pdaCodeEntity.getAction());
|
|
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trim(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
|
|
|
|
IoOrderEntity orderSaveRequest = new IoOrderEntity();
|
|
orderSaveRequest.setBillNo(orderNo);
|
|
if (pdaCodeEntity.getActDate() != null) {
|
|
orderSaveRequest.setCreateTime(DateUtil.parseDate(pdaCodeEntity.getActDate()));
|
|
}
|
|
orderSaveRequest.setMainAction(pdaCodeEntity.getMainAction());
|
|
orderSaveRequest.setAction(pdaCodeEntity.getAction());
|
|
orderSaveRequest.setCorpOrderId(pdaCodeEntity.getCorpOrderId());
|
|
orderSaveRequest.setFromCorp(pdaCodeEntity.getFromCorpId());
|
|
orderSaveRequest.setOutChangeEnable(postOrder.isOutChangeEnable());
|
|
orderSaveRequest.setCustomerId(postOrderRequest.getCustomerId());
|
|
orderSaveRequest.setFromInvCode(pdaCodeEntity.getFromSubInvCode());
|
|
orderSaveRequest.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
|
|
orderSaveRequest.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
|
|
orderSaveRequest.setCreateUser(postOrderRequest.getUserId() + "");
|
|
if (postOrder.getErpOrders() != null && postOrder.getErpOrders().size() > 0)
|
|
orderSaveRequest.setFromType(ConstantStatus.FROM_PDAED);
|
|
else
|
|
orderSaveRequest.setFromType(ConstantStatus.FROM_PDAUN);
|
|
orderService.insertOrder(orderSaveRequest);
|
|
|
|
|
|
//写入条码
|
|
List<IoCodeEntity> ioCodeEnttities = new ArrayList<>();
|
|
for (int index = 0; index < pdaCodeEntities.size(); index++) {
|
|
pdaCodeEntities.get(index).setOrderId(orderNo);
|
|
IoCodeEntity codeEnttity = new IoCodeEntity();
|
|
BeanUtils.copyProperties(pdaCodeEntities.get(index), codeEnttity);
|
|
ioCodeEnttities.add(codeEnttity);
|
|
}
|
|
codeService.insertBatch(ioCodeEnttities);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//校验条码关联供应商
|
|
public String checkExitSup(Long relId) {
|
|
FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest = new FilterCompanyProductRelevanceRequest();
|
|
filterCompanyProductRelevanceRequest.setUdiRlIdFk(relId + "");
|
|
List<UdiRlSupEntity> companyProductRelevanceEntities = udiRlSupService.filterCompanyProductRelevance(filterCompanyProductRelevanceRequest);
|
|
if (companyProductRelevanceEntities != null && companyProductRelevanceEntities.size() == 1) {
|
|
UdiRlSupEntity udiRlSupEntity = companyProductRelevanceEntities.get(0);
|
|
return udiRlSupEntity.getUnitFk();
|
|
} else if (companyProductRelevanceEntities != null && companyProductRelevanceEntities.size() > 1) {
|
|
String unitFk = companyProductRelevanceEntities.get(0).getUnitFk();
|
|
boolean isMuti = false;
|
|
for (UdiRlSupEntity udiRlSupEntity : companyProductRelevanceEntities) {
|
|
if (!unitFk.equals(udiRlSupEntity.getUnitFk())) {
|
|
isMuti = true;
|
|
break;
|
|
}
|
|
}
|
|
if (isMuti)
|
|
return "MUTI"; //绑定多个供应商
|
|
else
|
|
return unitFk;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public String checkInvExitSup(IoCodeEntity codeEnttity) {
|
|
|
|
String supId = checkNorInv(codeEnttity);
|
|
if (supId == null) {
|
|
return checkPreInv(codeEnttity);
|
|
}
|
|
return supId;
|
|
}
|
|
|
|
//查普通库存 todo
|
|
public String checkNorInv(IoCodeEntity codeEnttity) {
|
|
|
|
// FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest();
|
|
// filterInvWarehouseRequest.setLevel(1);
|
|
// filterInvWarehouseRequest.setAdvanceType(false);
|
|
// List<InvWarehouseEntity> invWarehouseEntities = invWarehouseService.filterInvWarehouse(filterInvWarehouseRequest);
|
|
// List<String> codes = new ArrayList<>();
|
|
// if (!invWarehouseEntities.isEmpty()) {
|
|
// for (InvWarehouseEntity invWarehouseEntity : invWarehouseEntities) {
|
|
// codes.add(invWarehouseEntity.getCode());
|
|
// }
|
|
// }
|
|
// FilterInvProductRequest filterInvProductDetailRequest = new FilterInvProductRequest();
|
|
// filterInvProductDetailRequest.setRelIdFk(codeEnttity.getRelId());
|
|
// filterInvProductDetailRequest.setBatchNo(codeEnttity.getBatchNo());
|
|
// filterInvProductDetailRequest.setInvCodes(codes);
|
|
// List<InvProductEntity> invProductEntities = invProductService.filterInvProduct(filterInvProductDetailRequest);
|
|
// if (invProductEntities.size() > 0) {
|
|
// String supId = invProductEntities.get(0).getSupId();
|
|
// int count = 0;
|
|
// for (InvProductEntity invProductEntity : invProductEntities) {
|
|
// if (!supId.equals(invProductEntity.getSupId())) {
|
|
// return null;
|
|
// }
|
|
// count = count + (invProductEntity.getInCount() - invProductEntity.getOutCount());
|
|
// }
|
|
// if (count > 0)
|
|
// return supId;
|
|
// }
|
|
|
|
return null;
|
|
}
|
|
|
|
//查寄售库存 todo
|
|
public String checkPreInv(IoCodeEntity codeEnttity) {
|
|
// FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest();
|
|
// filterInvWarehouseRequest.setLevel(1);
|
|
// filterInvWarehouseRequest.setAdvanceType(true);
|
|
// List<InvWarehouseEntity> invWarehouseEntities = invWarehouseService.filterInvWarehouse(filterInvWarehouseRequest);
|
|
// List<String> codes = new ArrayList<>();
|
|
// if (!invWarehouseEntities.isEmpty()) {
|
|
// for (InvWarehouseEntity invWarehouseEntity : invWarehouseEntities) {
|
|
// codes.add(invWarehouseEntity.getCode());
|
|
// }
|
|
// }
|
|
// FilterInvProductRequest filterInvProductDetailRequest = new FilterInvProductRequest();
|
|
// filterInvProductDetailRequest.setRelIdFk(codeEnttity.getRelId());
|
|
// filterInvProductDetailRequest.setBatchNo(codeEnttity.getBatchNo());
|
|
// filterInvProductDetailRequest.setInvCodes(codes);
|
|
// List<InvProductEntity> invProductEntities = invPreProductService.filterInvProduct(filterInvProductDetailRequest);
|
|
// if (invProductEntities.size() > 0) {
|
|
// String supId = invProductEntities.get(0).getSupId();
|
|
// int count = 0;
|
|
// for (InvProductEntity invProductEntity : invProductEntities) {
|
|
// if (!supId.equals(invProductEntity.getSupId())) {
|
|
// return null;
|
|
// }
|
|
// count = count + (invProductEntity.getInCount() - invProductEntity.getOutCount());
|
|
// }
|
|
// if (count > 0)
|
|
// return supId;
|
|
// }
|
|
|
|
return null;
|
|
}
|
|
|
|
|
|
//生成扫码单据详情
|
|
public void genOrderDetailCode(IoOrderEntity orderEntity, IoCodeTempEntity codeTempEntity) {
|
|
|
|
List<IoOrderDetailCodeEntity> ioOrderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo());
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectGroupById(codeTempEntity.getRelId());
|
|
if (CollUtil.isEmpty(ioOrderDetailCodeEntities)) {
|
|
orderDetailCodeService.insert(buildEntity(orderEntity, codeTempEntity, udiRelevanceResponse));
|
|
} else {
|
|
ioOrderDetailCodeEntities.forEach(orderDetailCodeEntity ->
|
|
{
|
|
if (orderDetailCodeEntity.getBindRlFk().longValue() == udiRelevanceResponse.getId().longValue() && orderDetailCodeEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) {
|
|
orderDetailCodeEntity.setCount(orderDetailCodeEntity.getCount() + codeTempEntity.getCount());
|
|
orderDetailCodeEntity.setReCount(orderDetailCodeEntity.getReCount() + codeTempEntity.getReCount());
|
|
orderDetailCodeService.update(orderDetailCodeEntity);
|
|
} else {
|
|
orderDetailCodeService.insert(buildEntity(orderEntity, codeTempEntity, udiRelevanceResponse));
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
IoOrderDetailCodeEntity buildEntity(IoOrderEntity orderEntity, IoCodeTempEntity codeTempEntity, UdiRelevanceResponse udiRelevanceResponse) {
|
|
IoOrderDetailCodeEntity ioOrderDetailCodeEntity = new IoOrderDetailCodeEntity();
|
|
ioOrderDetailCodeEntity.setOrderIdFk(orderEntity.getBillNo());
|
|
ioOrderDetailCodeEntity.setBindRlFk(udiRelevanceResponse.getId());
|
|
ioOrderDetailCodeEntity.setUuidFk(udiRelevanceResponse.getUuid());
|
|
ioOrderDetailCodeEntity.setBatchNo(codeTempEntity.getBatchNo());
|
|
ioOrderDetailCodeEntity.setNameCode(codeTempEntity.getNameCode());
|
|
ioOrderDetailCodeEntity.setProductDate(codeTempEntity.getProduceDate());
|
|
ioOrderDetailCodeEntity.setExpireDate(codeTempEntity.getExpireDate());
|
|
ioOrderDetailCodeEntity.setCoName(udiRelevanceResponse.getCpmctymc());
|
|
ioOrderDetailCodeEntity.setCertCode(udiRelevanceResponse.getZczbhhzbapzbh());
|
|
ioOrderDetailCodeEntity.setYlqxzcrbarmc(udiRelevanceResponse.getYlqxzcrbarmc());
|
|
ioOrderDetailCodeEntity.setManufacturer(udiRelevanceResponse.getManufactory());
|
|
ioOrderDetailCodeEntity.setMeasname(udiRelevanceResponse.getMeasname());
|
|
ioOrderDetailCodeEntity.setSpec(udiRelevanceResponse.getGgxh());
|
|
ioOrderDetailCodeEntity.setSupId(codeTempEntity.getSupId());
|
|
ioOrderDetailCodeEntity.setPrice(udiRelevanceResponse.getPrice());
|
|
ioOrderDetailCodeEntity.setCount(codeTempEntity.getCount());
|
|
ioOrderDetailCodeEntity.setReCount(codeTempEntity.getReCount());
|
|
return ioOrderDetailCodeEntity;
|
|
}
|
|
|
|
}
|