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.
udi-wms-java/src/main/java/com/glxp/api/service/collect/IoCollectOrderBizService.java

224 lines
9.8 KiB
Java

package com.glxp.api.service.collect;
4 months ago
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.basic.BasicProductsDao;
import com.glxp.api.dao.collect.IoCollectOrderBizMapper;
import com.glxp.api.entity.basic.BasicProductsEntity;
import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.collect.IoCollectCodeBackup;
import com.glxp.api.entity.collect.IoCollectOrder;
import com.glxp.api.entity.collect.IoCollectOrderBiz;
import com.glxp.api.entity.collect.IoCollectOrderCodeMan;
import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.service.basic.UdiProductService;
3 months ago
import com.glxp.api.util.IntUtil;
import com.ibm.icu.text.UFormat;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class IoCollectOrderBizService extends ServiceImpl<IoCollectOrderBizMapper, IoCollectOrderBiz> {
@Resource
IoCollectOrderBizMapper collectOrderBizMapper;
@Resource
private BasicProductsDao basicProductsDao;
@Resource
IoCollectCodeBackService ioCollectCodeBackService;
public List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest) {
if (collectOrderRequest == null) {
return Collections.emptyList();
}
if (collectOrderRequest.getPage() != null) {
int offset = (collectOrderRequest.getPage() - 1) * collectOrderRequest.getLimit();
PageHelper.offsetPage(offset, collectOrderRequest.getLimit());
}
List<CollectOrderBizResponse> data = collectOrderBizMapper.filterList(collectOrderRequest);
3 months ago
if (collectOrderRequest.getIsOrderCheck() == null) {
for (CollectOrderBizResponse collectOrderBizResponse : data) {
collectOrderBizResponse.setProductLocation(setProductName(collectOrderBizResponse));
}
}
//设置 应该扫码数量 shouldCount
3 months ago
if (data.size() > 0) {
for (CollectOrderBizResponse collectOrderBizResponse : data) {
List<BasicProductsEntity> productList = basicProductsDao.selectList(
new LambdaQueryWrapper<BasicProductsEntity>()
.eq(BasicProductsEntity::getYbbm, collectOrderBizResponse.getYbbm())
.eq(BasicProductsEntity::getPackLevel, "1"));
BasicProductsEntity product = productList.get(0);
Integer myBhxjsl = product.getBhxjsl();
Integer shouldCount = 0;
3 months ago
double quotient = (double) collectOrderBizResponse.getCount() / myBhxjsl;
int integerPart = (int) quotient;
if (quotient == integerPart) {
3 months ago
if (integerPart == 0) {
if (collectOrderBizResponse.getAutoTagStatus() != 2) {
shouldCount = 1;
}
} else {
shouldCount = integerPart;
}
} else {
3 months ago
if (IntUtil.value(collectOrderBizResponse.getAutoTagStatus()) == 2) {
3 months ago
shouldCount = 0;
3 months ago
} else {
3 months ago
shouldCount = integerPart + 1;
}
}
collectOrderBizResponse.setShouldCount(shouldCount);
3 months ago
if (collectOrderBizResponse.getScanCount() == null) {
collectOrderBizResponse.setScanCount(0);
}
3 months ago
if (collectOrderBizResponse.getScanActCount() == null) {
3 months ago
collectOrderBizResponse.setScanActCount(0);
}
}
}
return data;
}
3 months ago
public String setProductName(CollectOrderBizResponse collectOrderBizResponse) {
if (StrUtil.isEmpty(collectOrderBizResponse.getWorkplaceQueueCode())) {
4 months ago
//todo 暂时解决办法
return "";
}
String[] parts = collectOrderBizResponse.getWorkplaceQueueCode().split("-");
String shelf = "";
String layer = "";
// 检查分割后的数组长度是否符合预期
if (parts.length == 3) {
// 分别赋值给对应的变量
3 months ago
shelf = parts[0]; // 货架
layer = parts[1]; // 层
}
StringBuilder sb = new StringBuilder();
3 months ago
if (collectOrderBizResponse.getRegionName() != null && !collectOrderBizResponse.getRegionName().isEmpty()) {
sb.append(collectOrderBizResponse.getRegionName());
}
if (collectOrderBizResponse.getFreightName() != null && !collectOrderBizResponse.getFreightName().isEmpty()) {
if (sb.length() > 0) {
sb.append("-");
}
3 months ago
sb.append(collectOrderBizResponse.getFreightName());
}
if (layer != null && !layer.isEmpty()) {
if (sb.length() > 0) {
sb.append("-");
}
sb.append(layer + "层");
}
3 months ago
return sb.toString();
}
public List<IoCollectOrderBiz> listByBillNo(String billNo) {
List<IoCollectOrderBiz> list = super.list(Wrappers.lambdaQuery(IoCollectOrderBiz.class)
.eq(IoCollectOrderBiz::getOrderIdFk, billNo)
);
return list;
}
public Boolean removeByBillNo(String billNo) {
return remove(new LambdaQueryWrapper<IoCollectOrderBiz>().eq(IoCollectOrderBiz::getOrderIdFk, billNo));
}
public Boolean insertOrUpdate(IoCollectOrderBiz collectOrderBiz) {
return collectOrderBizMapper.insertOrUpdate(collectOrderBiz);
}
@Resource
IoCollectOrderCodeManService collectOrderCodeManService;
public List<CollectOrderBizResponse> filterReturnOrderList(CollectOrderBizRequest collectOrderRequest, IoCollectOrder collectOrder) {
if (collectOrderRequest == null) {
return Collections.emptyList();
}
if (collectOrderRequest.getPage() != null) {
int offset = (collectOrderRequest.getPage() - 1) * collectOrderRequest.getLimit();
PageHelper.offsetPage(offset, collectOrderRequest.getLimit());
}
List<CollectOrderBizResponse> data = collectOrderBizMapper.filterList(collectOrderRequest);
if (collectOrderRequest.getIsOrderCheck() == null) {
for (CollectOrderBizResponse collectOrderBizResponse : data) {
collectOrderBizResponse.setProductLocation(setProductName(collectOrderBizResponse));
}
}
//设置 应该扫码数量 shouldCount
if (data.size() > 0) {
for (CollectOrderBizResponse collectOrderBizResponse : data) {
List<IoCollectOrderCodeMan> collectOrderCodeManList = collectOrderCodeManService.list(
new LambdaQueryWrapper<IoCollectOrderCodeMan>()
.eq(IoCollectOrderCodeMan::getOrderIdFk, collectOrderRequest.getOrderIdFk())
.eq(IoCollectOrderCodeMan::getRelId,collectOrderBizResponse.getRelId()));
List<IoCollectCodeBackup> list = ioCollectCodeBackService.list(new LambdaQueryWrapper<IoCollectCodeBackup>()
.eq(IoCollectCodeBackup::getBillNo, collectOrder.getRemark())
.eq(IoCollectCodeBackup::getRelId, collectOrderBizResponse.getRelId()));
//获取整取
List<IoCollectCodeBackup> fullList = list.stream()
.filter(item -> item.getReCount() == 0 || item.getReCount() == null)
.collect(Collectors.toList());
//拆零
List<IoCollectCodeBackup> spiltList = list.stream()
.filter(item -> {
Integer reCount = item.getReCount();
return reCount > 0;
})
.collect(Collectors.toList());
if (spiltList.size() > 0) {
if (collectOrderCodeManList.size() > 0){
// 提前将collectOrderCodeManList的udiCode提取到Set中提升查找效率
Set<String> udiCodeSet = collectOrderCodeManList.stream()
.map(IoCollectOrderCodeMan::getUdiCode)
.collect(Collectors.toSet());
// 检查spiltList中的所有code是否都在udiCodeSet中
boolean allCodesPresent = spiltList.stream()
.allMatch(item -> udiCodeSet.contains(item.getCode()));
if (allCodesPresent) {
collectOrderBizResponse.setIsSplit(0);
}else {
collectOrderBizResponse.setIsSplit(1);
}
}else {
collectOrderBizResponse.setIsSplit(1);
}
}
Integer shouldCount = 0;
if (fullList.size() > 0){
shouldCount = fullList.size();
}
collectOrderBizResponse.setShouldCount(shouldCount);
collectOrderBizResponse.setShouldCount(shouldCount);
if (collectOrderBizResponse.getScanCount() == null) {
collectOrderBizResponse.setScanCount(0);
}
if (collectOrderBizResponse.getScanActCount() == null) {
collectOrderBizResponse.setScanActCount(0);
}
}
}
return data;
}
}