UDI码流向查询修改

fencang
anthonyywj2 3 years ago
parent 6def1b6a81
commit c7f31fa4b1

@ -2,14 +2,25 @@ package com.glxp.sale.admin.controller.inout;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.glxp.sale.admin.annotation.AuthRuleAnnotation; import com.glxp.sale.admin.annotation.AuthRuleAnnotation;
import com.glxp.sale.admin.entity.basic.UdiInfoEntity;
import com.glxp.sale.admin.entity.inout.OrderEntity;
import com.glxp.sale.admin.entity.inout.WarehouseEntity; import com.glxp.sale.admin.entity.inout.WarehouseEntity;
import com.glxp.sale.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.sale.admin.entity.udid.UdiEntity;
import com.glxp.sale.admin.req.basic.FilterUdiInfoRequest; import com.glxp.sale.admin.req.basic.FilterUdiInfoRequest;
import com.glxp.sale.admin.req.inout.WarehouseQueryRequest; import com.glxp.sale.admin.req.inout.WarehouseQueryRequest;
import com.glxp.sale.admin.req.inventory.FilterCodeTraceRequest;
import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.sale.admin.res.PageSimpleResponse; import com.glxp.sale.admin.res.PageSimpleResponse;
import com.glxp.sale.admin.res.basic.UdiRelevanceResponse; import com.glxp.sale.admin.res.basic.UdiRelevanceResponse;
import com.glxp.sale.admin.res.inout.UdiTraceResponse; import com.glxp.sale.admin.res.inout.UdiTraceResponse;
import com.glxp.sale.admin.res.inventory.InvProductPageRespnonse;
import com.glxp.sale.admin.service.basic.UdiInfoService;
import com.glxp.sale.admin.service.basic.UdiRelevanceService; import com.glxp.sale.admin.service.basic.UdiRelevanceService;
import com.glxp.sale.admin.service.inout.CodesService; import com.glxp.sale.admin.service.inout.CodesService;
import com.glxp.sale.admin.service.inout.OrderService;
import com.glxp.sale.admin.service.inventory.InvProductDetailService;
import com.glxp.sale.admin.util.FilterUdiUtils;
import com.glxp.sale.common.res.BaseResponse; import com.glxp.sale.common.res.BaseResponse;
import com.glxp.sale.common.util.ResultVOUtils; import com.glxp.sale.common.util.ResultVOUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -17,7 +28,10 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@RestController @RestController
@ -27,10 +41,91 @@ public class UdiTraceController {
private CodesService warehouseService; private CodesService warehouseService;
@Resource @Resource
UdiRelevanceService udiRelevanceService; UdiRelevanceService udiRelevanceService;
@Resource
private UdiInfoService udiInfoService;
@Resource
InvProductDetailService invProductDetailService;
@Resource
OrderService orderService;
@AuthRuleAnnotation("") @AuthRuleAnnotation("")
@GetMapping("udiwarehouse/trace/filter") @GetMapping("udiwarehouse/trace/filter")
public BaseResponse list(WarehouseQueryRequest warehouseQueryRequest) { public BaseResponse list(FilterCodeTraceRequest filterCodeTraceRequest) {
if (filterCodeTraceRequest.getCode() == null) {
return ResultVOUtils.success();
}
UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeTraceRequest.getCode());
if (udiEntity == null) {
return ResultVOUtils.error(500, "无效条码");
}
UdiRelevanceResponse udiInfoBean = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
if (udiInfoBean == null) {
return ResultVOUtils.error(500, "耗材字典不存在此产品!");
}
List<UdiInfoEntity> udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid());
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
if (udiInfoEntities != null && udiInfoEntities.size() > 1) {
filterInvProductDetailRequest.setProductIdFk(udiInfoBean.getId() + "");
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
} else {
filterInvProductDetailRequest.setOriginCode(filterCodeTraceRequest.getCode());
}
filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (invProductDetailEntities.size() > 0) {
Map<String, String> filterMap = new HashMap<>();
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
filterMap.put(invProductDetailEntity.getOrderIdFk(), invProductDetailEntity.getOrderIdFk());
}
List<String> orderIds = new ArrayList<>();
for (String key : filterMap.keySet()) {
orderIds.add(key);
}
List<OrderEntity> orderEntities = orderService.filterListByOrder(orderIds);
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
filterUdiInfoRequest.setNameCode(udiEntity.getUdi());
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.filterUdiGp(filterUdiInfoRequest);
UdiRelevanceResponse udiRelevance = null;
if (udiRelevanceResponses != null && udiRelevanceResponses.size() > 0) {
udiRelevance = udiRelevanceResponses.get(0);
}
UdiRelevanceResponse finalUdiRelevance = udiRelevance;
List<UdiTraceResponse> udiTraceResponseList = orderEntities.stream().map(item ->
{
UdiTraceResponse udiTraceResponse = new UdiTraceResponse();
BeanUtils.copyProperties(item, udiTraceResponse);
if (finalUdiRelevance != null) {
udiTraceResponse.setYlqxzcrbarmc(finalUdiRelevance.getYlqxzcrbarmc());
udiTraceResponse.setCpmctymc(finalUdiRelevance.getCpmctymc());
udiTraceResponse.setGgxh(finalUdiRelevance.getGgxh());
udiTraceResponse.setOrderId(item.getId());
}
return udiTraceResponse;
}).collect(Collectors.toList());
PageInfo<UdiTraceResponse> pageInfo;
pageInfo = new PageInfo<>(udiTraceResponseList);
PageSimpleResponse<UdiTraceResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(udiTraceResponseList);
return ResultVOUtils.success(pageSimpleResponse);
} else {
return ResultVOUtils.error(500, "未查询到数据!");
}
}
@AuthRuleAnnotation("")
@GetMapping("udiwarehouse/trace/filterOld")
public BaseResponse filterOld(WarehouseQueryRequest warehouseQueryRequest) {
List<WarehouseEntity> warehouseEntityList = warehouseService.findByOrderId(warehouseQueryRequest); List<WarehouseEntity> warehouseEntityList = warehouseService.findByOrderId(warehouseQueryRequest);
if (warehouseEntityList != null && warehouseEntityList.size() > 0) { if (warehouseEntityList != null && warehouseEntityList.size() > 0) {
WarehouseEntity warehouseEntity = warehouseEntityList.get(0); WarehouseEntity warehouseEntity = warehouseEntityList.get(0);
@ -48,7 +143,7 @@ public class UdiTraceController {
{ {
UdiTraceResponse udiTraceResponse = new UdiTraceResponse(); UdiTraceResponse udiTraceResponse = new UdiTraceResponse();
BeanUtils.copyProperties(item, udiTraceResponse); BeanUtils.copyProperties(item, udiTraceResponse);
if(finalUdiRelevance!=null){ if (finalUdiRelevance != null) {
udiTraceResponse.setYlqxzcrbarmc(finalUdiRelevance.getYlqxzcrbarmc()); udiTraceResponse.setYlqxzcrbarmc(finalUdiRelevance.getYlqxzcrbarmc());
udiTraceResponse.setCpmctymc(finalUdiRelevance.getCpmctymc()); udiTraceResponse.setCpmctymc(finalUdiRelevance.getCpmctymc());
udiTraceResponse.setGgxh(finalUdiRelevance.getGgxh()); udiTraceResponse.setGgxh(finalUdiRelevance.getGgxh());
@ -61,8 +156,8 @@ public class UdiTraceController {
pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(udiTraceResponseList); pageSimpleResponse.setList(udiTraceResponseList);
return ResultVOUtils.success(pageSimpleResponse); return ResultVOUtils.success(pageSimpleResponse);
}else { } else {
return ResultVOUtils.error(500,"未找到该条码!"); return ResultVOUtils.error(500, "未找到该条码!");
} }
} }
} }

@ -1,5 +1,6 @@
package com.glxp.sale.admin.controller.inventory; package com.glxp.sale.admin.controller.inventory;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.glxp.sale.admin.annotation.AuthRuleAnnotation; import com.glxp.sale.admin.annotation.AuthRuleAnnotation;
@ -50,6 +51,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@RestController @RestController
@ -299,22 +301,72 @@ public class InvProductsController {
if (udiInfoBean == null) { if (udiInfoBean == null) {
return ResultVOUtils.error(500, "耗材字典不存在此产品!"); return ResultVOUtils.error(500, "耗材字典不存在此产品!");
} }
List<InvProductDetailEntity> mInvProductDetailEntities = new ArrayList<>();
//判断是否多级包装
List<UdiInfoEntity> udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid()); List<UdiInfoEntity> udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid());
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
if (udiInfoEntities != null && udiInfoEntities.size() > 1) { if (udiInfoEntities != null && udiInfoEntities.size() > 1) {
filterInvProductDetailRequest.setProductIdFk(udiInfoBean.getId() + ""); //多级包装根据产品ID批次号查询
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
//1.判断是否di关联多个产品ID
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectAllByNameCode(udiEntity.getUdi());
if (CollUtil.isNotEmpty(udiRelevanceResponses)) {
for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) {
//假设条码不完整
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOriginCode(filterCodeTraceRequest.getCode());
filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
List<InvProductDetailEntity> temps = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(temps)) {
Map<String, List<InvProductDetailEntity>> filterMaps = temps.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getBatchNo));
if (filterMaps.size() > 0) {
for (String bacthNo : filterMaps.keySet()) {
filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setProductIdFk(udiRelevanceResponse.getId() + "");
filterInvProductDetailRequest.setBatchNo(bacthNo);
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
mInvProductDetailEntities.addAll(invProductDetailEntities);
}
}
}
} else {
filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setProductIdFk(udiRelevanceResponse.getId() + "");
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
mInvProductDetailEntities.addAll(invProductDetailEntities);
}
}
}
}
} else { } else {
//单级包装
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOriginCode(filterCodeTraceRequest.getCode()); filterInvProductDetailRequest.setOriginCode(filterCodeTraceRequest.getCode());
filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
mInvProductDetailEntities.addAll(invProductDetailEntities);
}
} }
filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId()); if (mInvProductDetailEntities.size() > 0) {
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (invProductDetailEntities.size() > 0) {
Map<String, String> filterMap = new HashMap<>(); Map<String, String> filterMap = new HashMap<>();
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { for (InvProductDetailEntity invProductDetailEntity : mInvProductDetailEntities) {
filterMap.put(invProductDetailEntity.getOrderIdFk(), invProductDetailEntity.getOrderIdFk()); filterMap.put(invProductDetailEntity.getOrderIdFk(), invProductDetailEntity.getOrderIdFk());
} }
List<String> orderIds = new ArrayList<>(); List<String> orderIds = new ArrayList<>();

@ -18,6 +18,8 @@ public interface UdiRelevanceService {
UdiRelevanceResponse selectByNameCode(String nameCode); UdiRelevanceResponse selectByNameCode(String nameCode);
List<UdiRelevanceResponse> selectAllByNameCode(String nameCode);
List<UdiRelevanceResponse> selectAllByNameCode(String nameCode, String unitFk); List<UdiRelevanceResponse> selectAllByNameCode(String nameCode, String unitFk);
boolean isExit(); boolean isExit();

@ -22,8 +22,6 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService {
UdiRelevanceDao udiRelevanceDao; UdiRelevanceDao udiRelevanceDao;
@Resource @Resource
BasicThirdSysService basicThirdSysService; BasicThirdSysService basicThirdSysService;
@Resource
UdiInfoService udiInfoService;
@Override @Override
public List<UdiRelevanceResponse> filterUdiRelevance(FilterUdiInfoRequest filterUdiInfoRequest) { public List<UdiRelevanceResponse> filterUdiRelevance(FilterUdiInfoRequest filterUdiInfoRequest) {
@ -74,6 +72,14 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService {
return null; return null;
} }
@Override
public List<UdiRelevanceResponse> selectAllByNameCode(String nameCode) {
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
filterUdiInfoRequest.setUniqueNameCode(nameCode);
List<UdiRelevanceResponse> udiRelevanceResponses = filterUdiRelevance(filterUdiInfoRequest);
return udiRelevanceResponses;
}
@Override @Override
public List<UdiRelevanceResponse> selectAllByNameCode(String nameCode, String unitFk) { public List<UdiRelevanceResponse> selectAllByNameCode(String nameCode, String unitFk) {

@ -98,7 +98,8 @@
#{updateTime}, #{updateTime},
#{replicateNo}, #{replicateNo},
#{invWarehouseCode}, #{invWarehouseCode},
#{fromSubInvCode},#{createTime} #{fromSubInvCode},
#{createTime}
) )
</insert> </insert>
@ -582,6 +583,8 @@
<foreach collection="orderList" item="item" open="(" separator="," close=")"> <foreach collection="orderList" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
order by actDate
</select> </select>
<select id="selectByBillNo" resultType="com.glxp.sale.admin.entity.inout.OrderEntity"> <select id="selectByBillNo" resultType="com.glxp.sale.admin.entity.inout.OrderEntity">

Loading…
Cancel
Save