| | |
| | | @Mapper |
| | | public interface MesProWorkOrderMapper extends BaseMapperX<MesProWorkOrderDO> { |
| | | |
| | | default List<MesProWorkOrderDO> lockScheduleOrders(List<Long> ids) { |
| | | return selectList(new LambdaQueryWrapperX<MesProWorkOrderDO>() |
| | | .in(MesProWorkOrderDO::getId, ids).orderByAsc(MesProWorkOrderDO::getId).last("FOR UPDATE")); |
| | | } |
| | | |
| | | default PageResult<MesProWorkOrderDO> selectPage(MesProWorkOrderPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<MesProWorkOrderDO>() |
| | | .likeIfPresent(MesProWorkOrderDO::getCode, reqVO.getCode()) |
| | |
| | | .eqIfPresent(MesProWorkOrderDO::getProductId, reqVO.getProductId()) |
| | | .eqIfPresent(MesProWorkOrderDO::getClientId, reqVO.getClientId()) |
| | | .eqIfPresent(MesProWorkOrderDO::getStatus, reqVO.getStatus()) |
| | | .eqIfPresent(MesProWorkOrderDO::getPackingStatus, reqVO.getPackingStatus()) |
| | | .betweenIfPresent(MesProWorkOrderDO::getRequestDate, reqVO.getRequestDate()) |
| | | .notIn(CollUtil.isNotEmpty(reqVO.getExcludeStatuses()), |
| | | MesProWorkOrderDO::getStatus, reqVO.getExcludeStatuses()) |
| | | .orderByDesc(MesProWorkOrderDO::getId)); |
| | | } |
| | | |
| | |
| | | .eqIfPresent(MesProWorkOrderDO::getProductId, reqVO.getProductId()) |
| | | .eqIfPresent(MesProWorkOrderDO::getClientId, reqVO.getClientId()) |
| | | .eqIfPresent(MesProWorkOrderDO::getStatus, reqVO.getStatus()) |
| | | .eqIfPresent(MesProWorkOrderDO::getPackingStatus, reqVO.getPackingStatus()) |
| | | .betweenIfPresent(MesProWorkOrderDO::getRequestDate, reqVO.getRequestDate()) |
| | | .orderByDesc(MesProWorkOrderDO::getId); |
| | | if (CollUtil.isNotEmpty(reqVO.getExcludeStatuses())) { |
| | | wrapper.notIn(MesProWorkOrderDO::getStatus, reqVO.getExcludeStatuses()); |
| | | } |
| | | if (permittedClientIds != null) { |
| | | if (CollUtil.isEmpty(permittedClientIds)) { |
| | | return PageResult.empty(); |
| | |
| | | } |
| | | return selectPage(reqVO, wrapper); |
| | | } |
| | | |
| | | /** |
| | | * 分页查询(带客户权限过滤且支持调度状态查询) |
| | | */ |
| | | default PageResult<MesProWorkOrderDO> selectSchedulePage(MesProWorkOrderPageReqVO pageReqVO, List<Long> permittedClientIds) { |
| | | com.baomidou.mybatisplus.core.metadata.IPage<MesProWorkOrderDO> mpPage = cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils.buildPage(pageReqVO); |
| | | com.baomidou.mybatisplus.core.metadata.IPage<MesProWorkOrderDO> result = selectSchedulePage(mpPage, pageReqVO, permittedClientIds); |
| | | return new PageResult<>(result.getRecords(), result.getTotal()); |
| | | } |
| | | |
| | | com.baomidou.mybatisplus.core.metadata.IPage<MesProWorkOrderDO> selectSchedulePage( |
| | | com.baomidou.mybatisplus.core.metadata.IPage<MesProWorkOrderDO> page, |
| | | @org.apache.ibatis.annotations.Param("pageReqVO") MesProWorkOrderPageReqVO pageReqVO, |
| | | @org.apache.ibatis.annotations.Param("permittedClientIds") List<Long> permittedClientIds); |
| | | |
| | | default MesProWorkOrderDO selectByCode(String code) { |
| | | return selectOne(MesProWorkOrderDO::getCode, code); |
| | |
| | | return selectCount(MesProWorkOrderDO::getVendorId, vendorId); |
| | | } |
| | | |
| | | /** |
| | | * 累加工单的已装箱数量与已装箱箱数 |
| | | */ |
| | | default void updatePackedQuantity(Long id, BigDecimal incrQuantity, Integer incrBoxCount) { |
| | | update(null, new LambdaUpdateWrapper<MesProWorkOrderDO>() |
| | | .eq(MesProWorkOrderDO::getId, id) |
| | | .setSql("packed_quantity = IFNULL(packed_quantity, 0) + " + incrQuantity.toPlainString()) |
| | | .setSql("packed_box_count = IFNULL(packed_box_count, 0) + " + incrBoxCount)); |
| | | } |
| | | |
| | | /** |
| | | * 根据已装箱数量重算装箱状态:已装 >= 工单数量为完成(2),部分为 1,否则 0 |
| | | */ |
| | | default void updatePackingStatus(Long id) { |
| | | update(null, new LambdaUpdateWrapper<MesProWorkOrderDO>() |
| | | .eq(MesProWorkOrderDO::getId, id) |
| | | .setSql("packing_status = CASE WHEN IFNULL(packed_quantity, 0) >= IFNULL(quantity, 0) THEN 2 " |
| | | + "WHEN IFNULL(packed_quantity, 0) > 0 THEN 1 ELSE 0 END")); |
| | | } |
| | | |
| | | } |