diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java index 7293b598..200b0673 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java @@ -124,4 +124,7 @@ public class DlRepairSo extends TenantBaseDO { */ @TableField(exist = false) private String licenseNumber; + + /** 用户记录那些人可以看这条记录 */ + private String userIds; } \ No newline at end of file diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java index 2d3c7f4d..7e98bc3c 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java @@ -50,6 +50,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0; /** * 针对表【dl_repair_so(采购单领料单)】的数据库操作Service实现 @@ -128,7 +129,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl() + .set(DlRepairSo::getSoStatus, SoStatusEnum.DEPRECATED.getCode()) + .and(i -> + i.eq(DlRepairSo::getId, repairSoReqVO.getId()) + .ne(DlRepairSo::getSoStatus, SoStatusEnum.DEPRECATED.getCode()) + .ne(DlRepairSo::getSoStatus, SoStatusEnum.PICKED.getCode()) + )); + if (update == 0) { + throw exception0(500, "该单据已有其他人操作"); + } // 下面的代码是因为这个接口还有地方在用 // 查主表 @@ -248,11 +258,11 @@ public class DlRepairSoServiceImpl extends ServiceImpl i.getGoodsId().equals(item.getWaresId())).findFirst().ifPresent(repairSoiByTwItem -> { - if (so.getSoType().equals("02")){ + if (so.getSoType().equals("02")) { dlTwItem.setWaresAlreadyCount(item.getWaresAlreadyCount() - repairSoiByTwItem.getGoodsCount()); // 不操作配件申请表子表的状态 // dlTwItem.setWaresStatus("02"); - }else { + } else { dlTwItem.setWaresAlreadyCount(item.getWaresAlreadyCount() + repairSoiByTwItem.getGoodsCount()); } }); @@ -263,7 +273,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl i.getGoodsId().equals(wares.getId())).findFirst().ifPresent(repairSoiByWares -> { - if (so.getSoType().equals("02")){ + if (so.getSoType().equals("02")) { wares.setStock(item.getStock().add(BigDecimal.valueOf(repairSoiByWares.getGoodsCount()))); } // 采购改了入库逻辑,不能在这里扣库存 @@ -325,11 +335,22 @@ public class DlRepairSoServiceImpl extends ServiceImpl() + .set(DlRepairSo::getSoStatus, SoStatusEnum.PICKED.getCode()) + .and(i -> { + i.eq(DlRepairSo::getId, id) + .ne(DlRepairSo::getSoStatus, SoStatusEnum.PICKED.getCode()) + .ne(DlRepairSo::getSoStatus, SoStatusEnum.DEPRECATED.getCode()); + }) + ); + if (update == 0) { + throw exception0(500, "该领料单已有其他人操作"); + } +// DlRepairSo dlRepairSo = new DlRepairSo(); +// dlRepairSo.setId(id); +// dlRepairSo.setSoStatus(SoStatusEnum.PICKED.getCode()); +// baseMapper.u // 查最新的子表信息 DlRepairSo so = baseMapper.selectById(id); @@ -469,7 +490,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl wareMap = filterWare.stream().collect(Collectors.toMap(DlRepairSoi::getGoodsId, soi -> soi)); //采购配件按照按照原始配件库id分组,目的取出价格---不是用wareId,是用GoodsId,wareId是仓库 - Map itemsMap = pmsWaresList.stream().collect(Collectors.toMap(DlRepairSoi::getGoodsId,soi -> soi)); + Map itemsMap = pmsWaresList.stream().collect(Collectors.toMap(DlRepairSoi::getGoodsId, soi -> soi)); waresList.forEach(item -> { DlRepairSoi filterSoi = wareMap.get(item.getId()); DlRepairSoi itemSoi = itemsMap.get(item.getId()); @@ -526,7 +547,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl waresGroupList = new ArrayList<>(); if (CollectionUtil.isNotEmpty(dlRepairSoiRespVOList)) { //先过滤出itenTypeId为null或空,或者itemTypeName为null或空的,为单独一个组 - List nullList = dlRepairSoiRespVOList.stream().filter(item-> StringUtils.isEmpty(item.getTypeId()) || StringUtils.isEmpty(item.getTypeName())).collect(Collectors.toList()); + List nullList = dlRepairSoiRespVOList.stream().filter(item -> StringUtils.isEmpty(item.getTypeId()) || StringUtils.isEmpty(item.getTypeName())).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(nullList)) { AppWaresGroupVO waresGroupVO = new AppWaresGroupVO(); waresGroupVO.setSoiRespVOList(nullList); @@ -535,8 +556,8 @@ public class DlRepairSoServiceImpl extends ServiceImpl> groupListMap = dlRepairSoiRespVOList.stream().filter(item->StringUtils.isNotEmpty(item.getTypeId()) && StringUtils.isNotEmpty(item.getTypeName())).collect(Collectors.groupingBy(DlRepairSoiRespVO::getTypeId)); - for (String key:groupListMap.keySet()){ + Map> groupListMap = dlRepairSoiRespVOList.stream().filter(item -> StringUtils.isNotEmpty(item.getTypeId()) && StringUtils.isNotEmpty(item.getTypeName())).collect(Collectors.groupingBy(DlRepairSoiRespVO::getTypeId)); + for (String key : groupListMap.keySet()) { AppWaresGroupVO waresGroupVO = new AppWaresGroupVO(); waresGroupVO.setSoiRespVOList(groupListMap.get(key)); waresGroupVO.setGroupName(groupListMap.get(key).get(0).getTypeName()); diff --git a/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml b/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml index e3efa60c..7b4add8c 100644 --- a/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml +++ b/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml @@ -26,6 +26,7 @@ + @@ -50,7 +51,8 @@ so.update_time, so.updater, so.tw_id, - dtw.license_number + dtw.license_number, + so.user_ids from dl_repair_so so LEFT JOIN dl_ticket_wares dtw ON so.tw_id = dtw.id where so.deleted = '0' @@ -83,7 +85,7 @@ and (so.so_no like concat('%', #{map.soNo}, '%') or so.remark like concat('%', #{map.soNo}, '%')) - and (so.user_id = #{map.userId}) + and (so.user_id = #{map.userId} or find_in_set(#{map.userId}, so.user_ids) > 0) and so.main_id = #{map.mainId}