| | |
| | | package cn.iocoder.yudao.module.mes.service.safety; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | |
| | | @Resource |
| | | private SafetyMaterialMapper materialMapper; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | @Resource |
| | | private SafetyMaterialStockMapper stockMapper; |
| | | |
| | | // ==================== 物资台账 ==================== |
| | |
| | | material.setCode(code); |
| | | material.setName(StrUtil.trim(reqVO.getName())); |
| | | material.setUnit(StrUtil.blankToDefault(reqVO.getUnit(), "个")); |
| | | applyManager(material, reqVO.getManagerId()); |
| | | material.setStockQty(reqVO.getStockQty() == null ? BigDecimal.ZERO : reqVO.getStockQty()); |
| | | material.setSafeStock(reqVO.getSafeStock() == null ? BigDecimal.ZERO : reqVO.getSafeStock()); |
| | | materialMapper.insert(material); |
| | |
| | | SafetyMaterialDO material = BeanUtils.toBean(reqVO, SafetyMaterialDO.class); |
| | | material.setCode(code); |
| | | material.setName(StrUtil.trim(reqVO.getName())); |
| | | applyManager(material, reqVO.getManagerId()); |
| | | // 库存数量只能通过出入库单变动,禁止直接编辑 |
| | | material.setStockQty(null); |
| | | materialMapper.updateById(material); |
| | |
| | | return materialMapper.selectPage(reqVO); |
| | | } |
| | | |
| | | /** |
| | | * 保管人:从员工档案带出姓名落快照 |
| | | */ |
| | | private void applyManager(SafetyMaterialDO material, Long managerId) { |
| | | material.setManagerId(managerId); |
| | | material.setManager(managerId == null ? "" |
| | | : refResolver.requireEmployee(managerId, SAFETY_EMPLOYEE_REQUIRED).getName()); |
| | | } |
| | | |
| | | /** |
| | | * 批量回填保管人最新姓名 |
| | | */ |
| | | public void fillManagers(List<SafetyMaterialDO> materials) { |
| | | if (CollUtil.isEmpty(materials)) { |
| | | return; |
| | | } |
| | | var employeeMap = refResolver.employeeMap(materials.stream().map(SafetyMaterialDO::getManagerId).toList()); |
| | | materials.forEach(material -> { |
| | | var employee = employeeMap.get(material.getManagerId()); |
| | | if (employee != null) material.setManager(employee.getName()); |
| | | }); |
| | | } |
| | | |
| | | public static void fillMaterialDisplay(SafetyMaterialDO material, SafetyMaterialRespVO respVO) { |
| | | respVO.setCategoryName(SafetyMaterialCategoryEnum.getNameByCategory(material.getCategory())); |
| | | BigDecimal stock = material.getStockQty() == null ? BigDecimal.ZERO : material.getStockQty(); |