3/12 上货虚拟槽位bug优化1.0

dev_2.5_ocean
wangwei 4 months ago
parent 068337b76e
commit 39f457f05d

@ -16,6 +16,7 @@ import com.glxp.api.constant.*;
import com.glxp.api.controller.BaseController;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.auth.InvWarehouseEntity;
import com.glxp.api.entity.auth.SysWorkplace;
import com.glxp.api.entity.basic.*;
import com.glxp.api.entity.collect.*;
import com.glxp.api.entity.inout.*;
@ -1576,6 +1577,8 @@ public class IoCodeTempController extends BaseController {
IoCollectSet collectSet = collectSetService.getSet();
// 判断货位里面是否有相同产品
if (orderEntity != null && StrUtil.isNotEmpty(orderEntity.getWorkPlaceQueueCode())) {
SysWorkplace sysWorkplace = sysWorkplaceService.getOne(new LambdaQueryWrapper<SysWorkplace>().eq(SysWorkplace::getWorkplaceId, addOrderRequest.getWorkPlaceCode()));
if (sysWorkplace.getQueueStatus() == 1){
SysWorkplaceQueue workplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper<SysWorkplaceQueue>()
.eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()));
if (workplaceQueue != null) {
@ -1603,6 +1606,14 @@ public class IoCodeTempController extends BaseController {
} else {
return ResultVOUtils.error(500, "取货槽位不存在!");
}
//校验完成 获取当前槽位 绑定产品
SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper<SysWorkplaceQueue>()
.eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()));
if (sysWorkplaceQueue.getRelId() == null) {
sysWorkplaceQueue.setRelId(udiRelevanceResponse.getId() + "");
sysWorkplaceQueueService.updateById(sysWorkplaceQueue);
}
}
if (orderEntity != null && CollUtil.isNotEmpty(codeEnttitys)) {
boolean isSame = false;
for (IoCodeTempEntity ioOrderDetailCodeEntity : codeEnttitys) {
@ -1613,13 +1624,6 @@ public class IoCodeTempController extends BaseController {
if (!isSame)
return ResultVOUtils.error(507, "上货产品不符!");
}
//校验完成 获取当前槽位 绑定产品
SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper<SysWorkplaceQueue>()
.eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()));
if (sysWorkplaceQueue.getRelId() == null) {
sysWorkplaceQueue.setRelId(udiRelevanceResponse.getId() + "");
sysWorkplaceQueueService.updateById(sysWorkplaceQueue);
}
} else if (orderEntity != null && CollUtil.isNotEmpty(codeEnttitys) && IntUtil.value(collectSet.getSplitOutOnlyProductSwitch())) {
for (IoCodeTempEntity ioOrderDetailCodeEntity : codeEnttitys) {
//开启了 只允许上货一个产品开关
@ -1632,7 +1636,6 @@ public class IoCodeTempController extends BaseController {
}
if (IntUtil.value(addOrderRequest.getOrderType()) == ConstantStatus.ORDER_TYPE_NORMAL && bussinessTypeEntity.isCheckEnable() && bussinessTypeEntity.getCheckWebNew() != 0) {
boolean isBillExit = orderDetailBizService.isExit(orderEntity.getBillNo());

@ -17,6 +17,7 @@ import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inout.IoSplitInvResponse;
import com.glxp.api.res.inout.IoSplitInvViewResponse;
import com.glxp.api.service.auth.SysWorkplaceService;
import com.glxp.api.service.inout.IoSplitCodeService;
import com.glxp.api.service.inout.IoSplitFifoCodeService;
import com.glxp.api.service.inout.IoSplitFifoInvService;
import com.glxp.api.service.thrsys.SysWorkplacePutRelService;
@ -48,6 +49,10 @@ public class IoSplitFifoInvController extends BaseController {
@Resource
IoSplitFifoCodeService ioSplitFifoCodeService;
/**
*
* 1:2:3:
@ -136,4 +141,18 @@ public class IoSplitFifoInvController extends BaseController {
EasyExcel.write(response.getOutputStream(), IoSplitInvViewResponse.class).sheet().doWrite(splitCodeEntities);
}
@GetMapping("/udiwms/ioSplit/inv/getCount")
public BaseResponse filterGetCount(IoSplitFifoInvRequest ioSplitFifoInvRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<IoSplitInvResponse> splitCodeEntities = splitFifoInvService.getStock(ioSplitFifoInvRequest);
PageInfo<IoSplitInvResponse> pageInfo = new PageInfo<>(splitCodeEntities);
PageSimpleResponse<IoSplitInvResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(splitCodeEntities);
return ResultVOUtils.success(pageSimpleResponse);
}
}

@ -12,4 +12,6 @@ import java.util.List;
public interface IoSplitFifoInvMapper extends BaseMapper<IoSplitFifoInv> {
List<IoSplitInvResponse> filterList(IoSplitFifoInvRequest ioSplitFifoInvRequest);
List<IoSplitInvResponse> filterKcyjList(IoSplitFifoInvRequest ioSplitFifoInvRequest);
List<IoSplitInvResponse> getStockList(IoSplitFifoInvRequest ioSplitFifoInvRequest);
}

@ -150,4 +150,16 @@ public class IoSplitInvResponse {
private Integer suggestOutCount;
/**
*
*/
private Integer remCount;
/**
*
*/
private Integer splitRemCount;
}

@ -12,12 +12,10 @@ import com.glxp.api.entity.basic.SysWorkplaceLayer;
import com.glxp.api.entity.basic.SysWorkplacePutRel;
import com.glxp.api.entity.basic.SysWorkplaceQueue;
import com.glxp.api.entity.collect.IoSplitFifoInvRel;
import com.glxp.api.entity.inout.IoCodeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inout.IoSplitFifoCodeEntity;
import com.glxp.api.entity.inout.IoSplitFifoInv;
import com.glxp.api.entity.inout.*;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.basic.SysWorkplaceLayerRequest;
import com.glxp.api.req.inout.IoSplitCodeRequest;
import com.glxp.api.req.inout.IoSplitFifoInvRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.inout.IoSplitInvResponse;
@ -177,10 +175,15 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
if (ioSplitFifoInvs != null && ioSplitFifoInvs.size() > 0){
return ioSplitFifoInvs.get(0).getWorkPlaceQueueCode();
}
SysWorkplaceQueue workplaceQueue = queues.get(0);
// 使用流来过滤掉匹配的元素
List<SysWorkplaceQueue> filteredQueues = queues.stream()
.filter(queue -> {
if (queue.getRelId() != null) {
return false;
}
List<IoSplitFifoInv> list = list(
new LambdaQueryWrapper<IoSplitFifoInv>()
.eq(IoSplitFifoInv::getWorkPlaceQueueCode, queue.getCode())
@ -381,5 +384,46 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
this.lambdaUpdate().set(ioSplitFifoInvRequest.getEnableRemind() != null, IoSplitFifoInv::getEnableRemind, ioSplitFifoInvRequest.getEnableRemind() ? 1 : 0).set(ioSplitFifoInvRequest.getInvRemindCount() != null, IoSplitFifoInv::getInvRemindCount, ioSplitFifoInvRequest.getInvRemindCount()).set(IoSplitFifoInv::getUpdateTime, new Date()).eq(IoSplitFifoInv::getId, ioSplitFifoInvRequest.getId()).update();
}
@Resource
IoSplitCodeService ioSplitCodeService;
public List<IoSplitInvResponse> getStock(IoSplitFifoInvRequest ioSplitFifoInvRequest) {
if (ioSplitFifoInvRequest == null) {
return Collections.emptyList();
}
if (ioSplitFifoInvRequest.getPage() != null) {
int offset = (ioSplitFifoInvRequest.getPage() - 1) * ioSplitFifoInvRequest.getLimit();
PageHelper.offsetPage(offset, ioSplitFifoInvRequest.getLimit());
}
List<IoSplitInvResponse> ioSplitInvResponses = this.baseMapper.getStockList(ioSplitFifoInvRequest);
for (IoSplitInvResponse ioSplitInvResponse : ioSplitInvResponses){
IoSplitCodeRequest ioSplitCodeRequest = new IoSplitCodeRequest();
ioSplitCodeRequest.setRelId(ioSplitInvResponse.getRelId());
List<IoSplitCodeEntity> ioSplitCodeEntities = ioSplitCodeService.filterList(ioSplitCodeRequest);
if (ioSplitCodeEntities.size() > 0) {
int totalRemainCount = ioSplitCodeEntities.stream()
.mapToInt(item -> item.getRemainCount())
.sum();
ioSplitInvResponse.setSplitRemCount(totalRemainCount);
}
}
// ioSplitInvResponses.forEach(t -> {
// if (IntUtil.value(t.getQueueEnableRemind())) {
// int count = IntUtil.value(t.getReCount()) - IntUtil.value(t.getQueueRemindCount());
// if (count > 0) {
// t.setRemindState(1);
// } else {
// t.setRemindState(2);
// }
// } else {
// t.setRemindState(0);
// }
// Integer suggestOutCount = t.getSuggestOutCount();
// if (suggestOutCount != null && suggestOutCount < 0) {
// t.setSuggestOutCount(0);
// }
// });
return ioSplitInvResponses;
}
}

@ -138,7 +138,7 @@
swf.freightRow,
(ifnull(swq.maxDrugCount,0) - ifnull(isfi.reCount,0)) as suggestOutCount
from
(select relId,sum(reCodeCount) as reCount,sum(availableCount) as availableCount,supId,workPlaceQueueCode,workPlaceCode,busType from io_split_fifo_inv
(select relId,sum(reCodeCount) as reCount,sum(availableCount) as availableCount,sum(reCount) as remCount,supId,workPlaceQueueCode,workPlaceCode,busType from io_split_fifo_inv
group by relId,supId,workPlaceQueueCode,workPlaceCode,busType
) as isfi
LEFT JOIN basic_udirel bu ON bu.id = isfi.relId
@ -214,4 +214,83 @@
GROUP BY isfi.workPlaceQueueCode
order by swf.freightRow,isfi.workPlaceQueueCode
</select>
<select id="getStockList" parameterType="com.glxp.api.req.inout.IoSplitFifoInvRequest" resultType="com.glxp.api.res.inout.IoSplitInvResponse">
select isfi.*,
bp.cpmctymc,
bp.prepnSpec,
CASE WHEN bp.ggxh IS NULL THEN bp.bzgg ELSE bp.ggxh END AS ggxh,
bp.bzgg,
bu.useLevelUnit,
bp.ylqxzcrbarmc,
bp.nameCode,
bp.manufactory,
bp.measname,
bp.zczbhhzbapzbh,
bp.ybbm,
bp.zxxsdycpbs
from
(select relId,sum(reCodeCount) as reCount,sum(availableCount) as availableCount,sum(reCount) as remCount,supId,workPlaceQueueCode,workPlaceCode,busType from io_split_fifo_inv
group by relId,supId,workPlaceQueueCode,workPlaceCode,busType
) as isfi
LEFT JOIN basic_udirel bu ON bu.id = isfi.relId
LEFT JOIN basic_products bp ON bu.uuid = bp.uuid
<where>
<if test="relId != null">
AND isfi.relId = #{relId}
</if>
<if test="nameCode != '' and nameCode != null">
AND bp.nameCode = #{nameCode}
</if>
<if test="zczbhhzbapzbh != '' and zczbhhzbapzbh != null">
AND bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%')
</if>
<if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
AND (
bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc}, '%')
or bp.manufactory like concat('%', #{ylqxzcrbarmc}, '%'))
</if>
<if test="batchNo != '' and batchNo != null">
AND isfi.batchNo = #{batchNo}
</if>
<if test="invCode != null">
AND isfi.invCode = #{invCode}
</if>
<if test="supId != null">
AND isfi.supId = #{supId}
</if>
<if test="fifoSplit != null">
AND isfi.fifoSplit = #{fifoSplit}
</if>
<if test="productType != null">
AND isfi.productType = #{productType}
</if>
<if test="workPlaceCode != null">
AND isfi.workPlaceCode = #{workPlaceCode}
</if>
<if test="busType != null and busType != ''">
AND isfi.busType = #{busType}
</if>
<if test="cpmctymc != null and cpmctymc != ''">
AND bp.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="keyWords != null and keyWords != ''">
AND (
isfi.workPlaceCode like concat('%', #{keyWords}, '%')
or isfi.workPlaceQueueCode like concat('%', #{keyWords}, '%')
or bp.nameCode like concat('%', #{keyWords}, '%')
or isfi.batchNo like concat('%', #{keyWords}, '%')
or bp.cpmctymc like concat('%', #{keyWords}, '%')
or bp.ggxh like concat('%', #{keyWords}, '%')
or bp.bzgg like concat('%', #{keyWords}, '%')
or bp.nameCode like concat('%', #{keyWords}, '%')
or bp.zczbhhzbapzbh like concat('%', #{keyWords}, '%')
or bp.ylqxzcrbarmc like concat('%', #{keyWords}, '%')
or bp.manufactory like concat('%',#{keyWords},'%')
)
</if>
</where>
GROUP BY isfi.workPlaceQueueCode
</select>
</mapper>

Loading…
Cancel
Save