| | |
| | | return selectOne(MesProBatchDO::getCode, code); |
| | | } |
| | | |
| | | default MesProBatchDO selectByScanCode(String code) { |
| | | return selectOne(new LambdaQueryWrapperX<MesProBatchDO>().and(q -> |
| | | q.eq(MesProBatchDO::getBusinessCode, code).or().eq(MesProBatchDO::getCode, code) |
| | | .or().eq(MesProBatchDO::getTempCode, code))); |
| | | } |
| | | |
| | | default MesProBatchDO selectByScanCodeForUpdate(String code) { |
| | | return selectOne(new LambdaQueryWrapperX<MesProBatchDO>().and(q -> |
| | | q.eq(MesProBatchDO::getBusinessCode, code).or().eq(MesProBatchDO::getCode, code) |
| | | .or().eq(MesProBatchDO::getTempCode, code)).last("FOR UPDATE")); |
| | | } |
| | | |
| | | default MesProBatchDO selectByTempCode(String tempCode) { |
| | | return selectOne(MesProBatchDO::getTempCode, tempCode); |
| | | } |
| | | |
| | | /** 生成临时批次码用的全局序号:解析 temp_code 的数字后缀,不存在则返回 0。 |
| | | * 不能过滤 deleted,唯一索引 uk_temp_code 对逻辑删除行仍生效,忽略软删会导致序号回退、码值重复 */ |
| | | @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_batch") |
| | | Integer selectMaxTempCodeSeq(); |
| | | |
| | | default Long selectCountByLineId(Long lineId) { |
| | | return selectCount(MesProBatchDO::getLineId, lineId); |
| | |
| | | int markInbound(@org.apache.ibatis.annotations.Param("id") Long id, @org.apache.ibatis.annotations.Param("eventId") Long eventId, |
| | | @org.apache.ibatis.annotations.Param("deviceCode") String deviceCode, @org.apache.ibatis.annotations.Param("lineCode") String lineCode); |
| | | |
| | | /** 批次整批扫码入库回写:入库袋数直接置为批次袋数,幂等(已有入库标记的不再更新) */ |
| | | @org.apache.ibatis.annotations.Update("UPDATE mes_pro_batch SET inbound_time = NOW(), inbound_event_id = #{eventId}, inbound_line_code = #{lineCode}, inbound_bag_quantity = #{bagQuantity}, update_time = NOW() " |
| | | + "WHERE id = #{id} AND deleted = 0 AND inbound_event_id IS NULL") |
| | | int markBatchInbound(@org.apache.ibatis.annotations.Param("id") Long id, @org.apache.ibatis.annotations.Param("eventId") Long eventId, |
| | | @org.apache.ibatis.annotations.Param("lineCode") String lineCode, @org.apache.ibatis.annotations.Param("bagQuantity") Integer bagQuantity); |
| | | |
| | | /** 以有效袋码的入库标记为准;混扫、重试和作废袋不影响完成判断。调用方已锁定批次。 */ |
| | | @org.apache.ibatis.annotations.Update("UPDATE mes_pro_batch SET inbound_time = NOW(), inbound_event_id = #{eventId}, " |
| | | + "inbound_device_code = #{deviceCode}, inbound_line_code = #{lineCode}, " |
| | | + "inbound_bag_quantity = (SELECT COUNT(*) FROM mes_pro_bag_code b WHERE b.batch_id = #{id} " |
| | | + "AND b.deleted = 0 AND b.status <> 30 AND b.inbound_event_id IS NOT NULL), " |
| | | + "status = CASE WHEN EXISTS (SELECT 1 FROM mes_pro_bag_code b WHERE b.batch_id = #{id} AND b.deleted = 0 AND b.status <> 30) " |
| | | + "AND NOT EXISTS (SELECT 1 FROM mes_pro_bag_code b WHERE b.batch_id = #{id} AND b.deleted = 0 AND b.status <> 30 AND b.inbound_event_id IS NULL) " |
| | | + "THEN 30 ELSE status END, update_time = NOW() WHERE id = #{id} AND deleted = 0 AND status <> 40") |
| | | int refreshInboundProgress(@org.apache.ibatis.annotations.Param("id") Long id, @org.apache.ibatis.annotations.Param("eventId") Long eventId, |
| | | @org.apache.ibatis.annotations.Param("deviceCode") String deviceCode, @org.apache.ibatis.annotations.Param("lineCode") String lineCode); |
| | | |
| | | default PageResult<MesProBatchDO> selectPage(MesProBatchPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<MesProBatchDO>() |
| | | .likeIfPresent(MesProBatchDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(MesProBatchDO::getBusinessCode, reqVO.getBusinessCode()) |
| | | .likeIfPresent(MesProBatchDO::getTempCode, reqVO.getTempCode()) |
| | | .eqIfPresent(MesProBatchDO::getItemId, reqVO.getItemId()) |
| | | .eqIfPresent(MesProBatchDO::getLineId, reqVO.getLineId()) |
| | | .likeIfPresent(MesProBatchDO::getLineCode, reqVO.getLineCode()) |
| | | .likeIfPresent(MesProBatchDO::getLineName, reqVO.getLineName()) |
| | | .likeIfPresent(MesProBatchDO::getProcessingTeam, reqVO.getProcessingTeam()) |
| | | .eqIfPresent(MesProBatchDO::getOwnerUserId, reqVO.getOwnerUserId()) |
| | | .eqIfPresent(MesProBatchDO::getStatus, reqVO.getStatus()) |
| | | .betweenIfPresent(MesProBatchDO::getProduceDate, reqVO.getProduceDate()) |
| | | .betweenIfPresent(MesProBatchDO::getCreateTime, reqVO.getCreateTime()) |
| | | .orderByDesc(MesProBatchDO::getId)); |
| | | .orderByDesc(MesProBatchDO::getId) |
| | | .and(cn.hutool.core.util.StrUtil.isNotBlank(reqVO.getCode()), q -> |
| | | q.like(MesProBatchDO::getCode, reqVO.getCode()).or() |
| | | .like(MesProBatchDO::getBusinessCode, reqVO.getCode()).or() |
| | | .like(MesProBatchDO::getTempCode, reqVO.getCode()))); |
| | | } |
| | | |
| | | } |