diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/BonusMaterialApplication.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/BonusMaterialApplication.java index e551c704..69272673 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/BonusMaterialApplication.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/BonusMaterialApplication.java @@ -21,7 +21,7 @@ public class BonusMaterialApplication public static void main(String[] args) { SpringApplication.run(BonusMaterialApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 仓储模块启动成功 ლ(´ڡ`ლ)゙ \n" + + System.out.println("(♥◠‿◠)ノ゙ 2024机具大融合系统启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + " | ( ' ) | \\ _. / ' \n" + diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MaTypeConfigController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MaTypeConfigController.java index 975aa8de..2707df3f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MaTypeConfigController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MaTypeConfigController.java @@ -1,124 +1,124 @@ -package com.bonus.material.ma.controller; - -import com.bonus.common.biz.domain.TreeSelect; -import com.bonus.common.core.web.controller.BaseController; -import com.bonus.common.core.web.domain.AjaxResult; -import com.bonus.common.security.annotation.PreventRepeatSubmit; -import com.bonus.common.security.annotation.RequiresPermissions; -import com.bonus.material.ma.MaTypeConfigDto; -import com.bonus.material.ma.domain.Type; -import com.bonus.material.ma.domain.TypeKeeper; -import com.bonus.material.ma.domain.TypeRepair; -import com.bonus.material.ma.service.ITypeKeeperService; -import com.bonus.material.ma.service.ITypeRepairService; -import com.bonus.material.ma.service.ITypeService; -import com.bonus.material.ma.service.MaTypeConfigService; -import com.bonus.material.ma.vo.MaTypeConfigVo; -import com.google.common.collect.ImmutableList; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.Valid; -import javax.validation.constraints.NotNull; -import java.util.*; - -/** - * @author : 阮世耀 - * @version : 1.0 - * @PackagePath: com.bonus.material.ma.controller - * @CreateTime: 2024-10-16 10:52 - * @Description: 物资类型配置API - */ -@Api(tags = "物资类型配置API") -@RestController -@RequestMapping("/ma_type_config") -public class MaTypeConfigController extends BaseController { - - @Resource - private MaTypeConfigService maTypeConfigService; - - @ApiOperation(value = "配置物资类型绑定信息") - @PreventRepeatSubmit - @RequiresPermissions("ma:typeConfig:edit") - @PostMapping("/updateMaTypeBindInfo") - public AjaxResult updateMaTypeBindInfo(@RequestBody @Valid @NotNull MaTypeConfigDto maTypeConfigDto) { - // -------------------- 数据校验开始 --------------------- - - // 1.判断绑定标识是否为空 - if (maTypeConfigDto.getBindFlag() == null) { - return error("绑定标识不能为空"); - } - // 2.判断绑定角色类型是否为空 - if (maTypeConfigDto.getBindRoleType() == null) { - return error("绑定角色类型不能为空"); - } - // 3.判断用户id是否为空 - if (maTypeConfigDto.getUserId() == null) { - return error("用户id不能为空"); - } - - // ---------------- 数据校验结束 --------------------- - - // 执行业务逻辑 - return maTypeConfigService.updateMaTypeBindInfo(maTypeConfigDto); - } - - - - /** - * 查询物资类型配置右侧列表 - */ - @ApiOperation(value = "查询物资类型配置右侧列表") - @RequiresPermissions("ma:typeConfig:list") - @GetMapping("/getMaTypeConfigList") - public AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto) { - // 调用service处理业务逻辑 - return maTypeConfigService.getMaTypeConfigList(maTypeConfigDto); - } - - - /** - * 查询物资配置左侧组织人员树-tree - */ - @ApiOperation(value = "查询物资配置左侧组织人员树") - @RequiresPermissions("ma:typeConfig:list") - @GetMapping("/getDeptUserTree") - public AjaxResult getDeptUserTree() { - - // ---------- 模拟人员Tree数据 --------------- - - // 1.创建一个TreeSelect集合,用于外层放组织部门--公司级 - List treeSelectList1 = new ArrayList<>(); - TreeSelect treeSelect1 = new TreeSelect(1L, "机具设备分公司", 1, null); - TreeSelect treeSelect2 = new TreeSelect(2L, "输电分公司", 1, null); - TreeSelect treeSelect3 = new TreeSelect(5L, "变电分公司", 1, null); - - // 2. 给公司级部门添加子部门 ,创建TreeSelect集合,存放组织部门--部门级 - TreeSelect treeSelect01 = new TreeSelect(11L, "物流库管一班", 2, 1L); - TreeSelect treeSelect02 = new TreeSelect(12L, "物流库管二班", 2, 1L); - TreeSelect treeSelect03 = new TreeSelect(13L, "宏源库管一班", 2, 5L); - - // 3. 创建部门人员 - TreeSelect treeSelect001 = new TreeSelect(117L, "袁泷", 3, 11L); - TreeSelect treeSelect002 = new TreeSelect(133L, "喵喵喵", 3, 11L); - TreeSelect treeSelect003 = new TreeSelect(129L, "村上春树", 3, 12L); - - // 4. 把子部门人员添加到子部门中 - treeSelect01.setChildren(Arrays.asList(treeSelect001, treeSelect002)); - treeSelect1.setChildren(Arrays.asList(treeSelect01, treeSelect02)); - treeSelect03.setChildren(ImmutableList.of(treeSelect003)); - treeSelect3.setChildren(Collections.singletonList(treeSelect03)); - - // 3.把根节点添加到集合中 - treeSelectList1.add(treeSelect1); - treeSelectList1.add(treeSelect2); - treeSelectList1.add(treeSelect3); - - // -------------- 模拟人员Tree数据结束 ------------------ - - return success(treeSelectList1); - } - -} +//package com.bonus.material.ma.controller; +// +//import com.bonus.common.biz.domain.TreeSelect; +//import com.bonus.common.core.web.controller.BaseController; +//import com.bonus.common.core.web.domain.AjaxResult; +//import com.bonus.common.security.annotation.PreventRepeatSubmit; +//import com.bonus.common.security.annotation.RequiresPermissions; +//import com.bonus.material.ma.MaTypeConfigDto; +//import com.bonus.material.ma.domain.Type; +//import com.bonus.material.ma.domain.TypeKeeper; +//import com.bonus.material.ma.domain.TypeRepair; +//import com.bonus.material.ma.service.ITypeKeeperService; +//import com.bonus.material.ma.service.ITypeRepairService; +//import com.bonus.material.ma.service.ITypeService; +//import com.bonus.material.ma.service.MaTypeConfigService; +//import com.bonus.material.ma.vo.MaTypeConfigVo; +//import com.google.common.collect.ImmutableList; +//import io.swagger.annotations.Api; +//import io.swagger.annotations.ApiOperation; +//import org.springframework.web.bind.annotation.*; +// +//import javax.annotation.Resource; +//import javax.validation.Valid; +//import javax.validation.constraints.NotNull; +//import java.util.*; +// +///** +// * @author : 阮世耀 +// * @version : 1.0 +// * @PackagePath: com.bonus.material.ma.controller +// * @CreateTime: 2024-10-16 10:52 +// * @Description: 物资类型配置API +// */ +//@Api(tags = "物资类型配置API") +//@RestController +//@RequestMapping("/ma_type_config") +//public class MaTypeConfigController extends BaseController { +// +// @Resource +// private MaTypeConfigService maTypeConfigService; +// +// @ApiOperation(value = "配置物资类型绑定信息") +// @PreventRepeatSubmit +// @RequiresPermissions("ma:typeConfig:edit") +// @PostMapping("/updateMaTypeBindInfo") +// public AjaxResult updateMaTypeBindInfo(@RequestBody @Valid @NotNull MaTypeConfigDto maTypeConfigDto) { +// // -------------------- 数据校验开始 --------------------- +// +// // 1.判断绑定标识是否为空 +// if (maTypeConfigDto.getBindFlag() == null) { +// return error("绑定标识不能为空"); +// } +// // 2.判断绑定角色类型是否为空 +// if (maTypeConfigDto.getBindRoleType() == null) { +// return error("绑定角色类型不能为空"); +// } +// // 3.判断用户id是否为空 +// if (maTypeConfigDto.getUserId() == null) { +// return error("用户id不能为空"); +// } +// +// // ---------------- 数据校验结束 --------------------- +// +// // 执行业务逻辑 +// return maTypeConfigService.updateMaTypeBindInfo(maTypeConfigDto); +// } +// +// +// +// /** +// * 查询物资类型配置右侧列表 +// */ +// @ApiOperation(value = "查询物资类型配置右侧列表") +// @RequiresPermissions("ma:typeConfig:list") +// @GetMapping("/getMaTypeConfigList") +// public AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto) { +// // 调用service处理业务逻辑 +// return maTypeConfigService.getMaTypeConfigList(maTypeConfigDto); +// } +// +// +// /** +// * 查询物资配置左侧组织人员树-tree +// */ +// @ApiOperation(value = "查询物资配置左侧组织人员树") +// @RequiresPermissions("ma:typeConfig:list") +// @GetMapping("/getDeptUserTree") +// public AjaxResult getDeptUserTree() { +// +// // ---------- 模拟人员Tree数据 --------------- +// +// // 1.创建一个TreeSelect集合,用于外层放组织部门--公司级 +// List treeSelectList1 = new ArrayList<>(); +// TreeSelect treeSelect1 = new TreeSelect(1L, "机具设备分公司", 1, null); +// TreeSelect treeSelect2 = new TreeSelect(2L, "输电分公司", 1, null); +// TreeSelect treeSelect3 = new TreeSelect(5L, "变电分公司", 1, null); +// +// // 2. 给公司级部门添加子部门 ,创建TreeSelect集合,存放组织部门--部门级 +// TreeSelect treeSelect01 = new TreeSelect(11L, "物流库管一班", 2, 1L); +// TreeSelect treeSelect02 = new TreeSelect(12L, "物流库管二班", 2, 1L); +// TreeSelect treeSelect03 = new TreeSelect(13L, "宏源库管一班", 2, 5L); +// +// // 3. 创建部门人员 +// TreeSelect treeSelect001 = new TreeSelect(117L, "袁泷", 3, 11L); +// TreeSelect treeSelect002 = new TreeSelect(133L, "喵喵喵", 3, 11L); +// TreeSelect treeSelect003 = new TreeSelect(129L, "村上春树", 3, 12L); +// +// // 4. 把子部门人员添加到子部门中 +// treeSelect01.setChildren(Arrays.asList(treeSelect001, treeSelect002)); +// treeSelect1.setChildren(Arrays.asList(treeSelect01, treeSelect02)); +// treeSelect03.setChildren(ImmutableList.of(treeSelect003)); +// treeSelect3.setChildren(Collections.singletonList(treeSelect03)); +// +// // 3.把根节点添加到集合中 +// treeSelectList1.add(treeSelect1); +// treeSelectList1.add(treeSelect2); +// treeSelectList1.add(treeSelect3); +// +// // -------------- 模拟人员Tree数据结束 ------------------ +// +// return success(treeSelectList1); +// } +// +//} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/SupplierInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/SupplierInfoController.java index b4a50319..af358571 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/SupplierInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/SupplierInfoController.java @@ -49,6 +49,17 @@ public class SupplierInfoController extends BaseController { return getDataTable(list); } + /** + * 查询物资厂家--下拉框--不分页 + */ + @ApiOperation(value = "查询物资厂家下拉框--不分页") + @RequiresPermissions("ma:info:list") + @GetMapping("/select") + public TableDataInfo select(SupplierInfo supplierInfo) { + List list = supplierInfoService.selectSupplierInfoList(supplierInfo); + return getDataTable(list); + } + /** * 导出物资厂家管理列表 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/TypeController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/TypeController.java index e8571ea0..26ec40bb 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/TypeController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/TypeController.java @@ -9,6 +9,7 @@ import javax.validation.constraints.NotNull; import com.bonus.common.biz.domain.TreeSelect; import com.bonus.common.log.enums.OperaType; import com.bonus.material.common.annotation.PreventRepeatSubmit; +import com.bonus.material.ma.MaTypeConfigDto; import com.bonus.material.ma.vo.MaTypeListVo; import com.bonus.material.ma.vo.MaTypeSelectVo; import com.bonus.material.warehouse.domain.WhHouseSet; @@ -37,9 +38,6 @@ public class TypeController extends BaseController { @Resource private ITypeService typeService; - @Resource - private IWhHouseSetService houseSetService; - /** * 查询物资类型管理列表 */ @@ -75,24 +73,18 @@ public class TypeController extends BaseController { } /** - * 根据左列表类型id查询右表格 --- 暂未启用,代码有问题!! - * TODO: 待完善 - * @param typeId 左列表类型id + * 查询物资类型4级规格型号--前端联动式下拉框 + * + * @param typeId 规格型号 */ - @ApiOperation(value = "根据左列表类型id查询右表格") - @GetMapping("/getListByMaType") - public AjaxResult getListByMaType(Long typeId, @RequestParam(required = false) String typeName, Integer level) { - List parentIds = typeService.selectParentId(typeId, level); - List listByMaType = new ArrayList<>(); - for (Integer parentId : parentIds) { - listByMaType.addAll(typeService.getListByParentId(parentId.longValue(), typeName)); - } -// Integer pageIndex = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1); -// Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10); -// return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, listByMaType)); - return null; + @ApiOperation(value = "获取物资类型连动式下拉框") + @GetMapping("/equipmentType") + public AjaxResult equipmentType(@RequestParam(required = false) Long typeId, @RequestParam(required = false) String typeName) { + List listByMaType = typeService.getEquipmentType(typeId, typeName); + return success(listByMaType); } + /** * TODO : 后续优化代码逻辑 * 物资类型下拉树 @@ -100,32 +92,9 @@ public class TypeController extends BaseController { @ApiOperation(value = "物资类型下拉树") @RequiresPermissions("ma:type:list") @GetMapping("/getMaTypeTreeSelect") - public AjaxResult getMaTypeTreeSelect(@RequestParam(required = false, defaultValue = "", value = "typeName") String typeName, @RequestParam(required = false, defaultValue = "", value = "parentId") String parentId) { - // 1.顶级节点及子节点数据全部查询完毕 - List maTypeList = typeService.getMaTypeTree(typeName, parentId); - // 2.查询所有的仓库配置 - List whHouseSets = houseSetService.selectListByMaType(null); - // 2.1 定义最终接口返回集合 - List treeSelectResultList = new ArrayList<>(); - // 3.遍历所有配置关联 - for (WhHouseSet whHouseSet : whHouseSets) { - Long typeId = whHouseSet.getTypeId(); - if (typeId == null) {continue;} - // 构造函数定义0级Tree对象 - TreeSelect thisTree = new TreeSelect(whHouseSet.getId(),whHouseSet.getHouseName(),0,null); - // 定义1级列表,并循环push相应的1级节点 - List oneLevelTreeList = new ArrayList<>(); - for (TreeSelect treeSelect : maTypeList) { - if (treeSelect.getId().equals(typeId)) { - oneLevelTreeList.add(treeSelect); - } - } - // 把处理后对应上的1级列表当作child存入0级Tree对象中 - thisTree.setChildren(!oneLevelTreeList.isEmpty() ? oneLevelTreeList : null); - // 最后把0级Tree对象存入Result返回集合中,返回给前端 - treeSelectResultList.add(thisTree); - } - return AjaxResult.success(treeSelectResultList); + public AjaxResult getMaTypeTreeSelect(@RequestParam(required = false, defaultValue = "", value = "typeName") String typeName, + @RequestParam(required = false, defaultValue = "", value = "parentId") String parentId) { + return typeService.getMaTypeTreeSelect(typeName, parentId); } /** @@ -187,4 +156,32 @@ public class TypeController extends BaseController { public AjaxResult remove(@PathVariable Long[] typeIds) { return toAjax(typeService.deleteTypeByTypeIds(typeIds)); } + + /** + * 查询物资类型配置右侧列表 + */ + @ApiOperation(value = "查询物资类型配置右侧列表") + @RequiresPermissions("ma:typeConfig:list") + @GetMapping("/getMaTypeConfigList") + public AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto) { + // 调用service处理业务逻辑 + return typeService.getMaTypeConfigList(maTypeConfigDto); + } + + + /** + * 根据左列表类型id查询右表格 --- 暂未启用,代码有问题!! + * TODO: 待完善 + * @param typeId 左列表类型id + + @ApiOperation(value = "根据左列表类型id查询右表格") + @GetMapping("/getListByMaType") + public AjaxResult getListByMaType(Long typeId, @RequestParam(required = false) String typeName, Integer level) { + List parentIds = typeService.selectParentId(typeId, level); + List listByMaType = new ArrayList<>(); + for (Integer parentId : parentIds) { + listByMaType.addAll(typeService.getListByParentId(parentId.longValue(), typeName)); + } + return null; + }*/ } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java index 95d81f94..24004336 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java @@ -14,6 +14,9 @@ import org.apache.ibatis.annotations.Param; */ @Mapper public interface TypeMapper { + + List selectMaTypeList(String typeName); + /** * 查询物资类型 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/ITypeService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/ITypeService.java index 79548d23..799153df 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/ITypeService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/ITypeService.java @@ -3,6 +3,8 @@ package com.bonus.material.ma.service; import java.util.List; import com.bonus.common.biz.domain.TreeSelect; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.ma.MaTypeConfigDto; import com.bonus.material.ma.domain.Type; import com.bonus.material.ma.vo.MaTypeConfigVo; import com.bonus.material.ma.vo.MaTypeListVo; @@ -23,6 +25,8 @@ public interface ITypeService { List selectParentId(Long typeId, Integer level); + List getEquipmentType(Long typeId, String typeName); + List selectMaTypeListByHouseId(Long houseId); List getListByParentId(Long typeId, String typeName); @@ -84,6 +88,8 @@ public interface ITypeService { List getMaTypeTree(String typeName, String parentId); + AjaxResult getMaTypeTreeSelect(String typeName,String parentId); + /** * 构建前端所需要树结构 * @@ -91,4 +97,6 @@ public interface ITypeService { * @return 树结构列表 */ List buildMaTypeTree(List maTypeList); + + AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/MaTypeConfigService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/MaTypeConfigService.java index 029e5026..57cde1a9 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/MaTypeConfigService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/MaTypeConfigService.java @@ -1,18 +1,18 @@ -package com.bonus.material.ma.service; - -import com.bonus.common.core.web.domain.AjaxResult; -import com.bonus.material.ma.MaTypeConfigDto; - -/** - * @author : 阮世耀 - * @version : 1.0 - * @PackagePath: com.bonus.material.ma.service - * @CreateTime: 2024-10-16 18:50 - * @Description: 物资类型配置Service - */ -public interface MaTypeConfigService{ - - AjaxResult updateMaTypeBindInfo(MaTypeConfigDto maTypeConfigDto); - - AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto); -} +//package com.bonus.material.ma.service; +// +//import com.bonus.common.core.web.domain.AjaxResult; +//import com.bonus.material.ma.MaTypeConfigDto; +// +///** +// * @author : 阮世耀 +// * @version : 1.0 +// * @PackagePath: com.bonus.material.ma.service +// * @CreateTime: 2024-10-16 18:50 +// * @Description: 物资类型配置Service +// */ +//public interface MaTypeConfigService{ +// +// AjaxResult updateMaTypeBindInfo(MaTypeConfigDto maTypeConfigDto); +// +// AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto); +//} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MaTypeConfigServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MaTypeConfigServiceImpl.java index 37d1f000..6021d8b7 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MaTypeConfigServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MaTypeConfigServiceImpl.java @@ -1,187 +1,187 @@ -package com.bonus.material.ma.service.impl; - -import com.bonus.common.core.web.domain.AjaxResult; -import com.bonus.material.ma.MaTypeConfigDto; -import com.bonus.material.ma.domain.Type; -import com.bonus.material.ma.domain.TypeKeeper; -import com.bonus.material.ma.domain.TypeRepair; -import com.bonus.material.ma.service.ITypeKeeperService; -import com.bonus.material.ma.service.ITypeRepairService; -import com.bonus.material.ma.service.ITypeService; -import com.bonus.material.ma.service.MaTypeConfigService; -import com.bonus.material.ma.vo.MaTypeConfigVo; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; - -/** - * @author : 阮世耀 - * @version : 1.0 - * @PackagePath: com.bonus.material.ma.service.impl - * @CreateTime: 2024-10-16 18:50 - * @Description: 描述 - */ -@Service -public class MaTypeConfigServiceImpl implements MaTypeConfigService { - - /** - * 物资类型库管员配置Service - */ - @Resource - private ITypeKeeperService typeKeeperService; - - /** - * 物资类型维修员配置Service - */ - @Resource - private ITypeRepairService typeRepairService; - - // 物资类型Service - @Resource - private ITypeService typeService; - - - @Override - public AjaxResult updateMaTypeBindInfo(MaTypeConfigDto maTypeConfigDto) { - int result; - switch (maTypeConfigDto.getBindFlag()) { - case 1: - result = handleBind(maTypeConfigDto.getBindRoleType(), maTypeConfigDto.getTypeId(), maTypeConfigDto.getUserId()); - return result == 1 ? AjaxResult.success("绑定成功") : AjaxResult.error("绑定失败"); - case 2: - result = handleUnBind(maTypeConfigDto.getBindRoleType(), maTypeConfigDto.getTypeId(), maTypeConfigDto.getUserId()); - return result == 1 ? AjaxResult.success("解绑成功") : AjaxResult.error("解绑失败"); - default: - // 处理其他情况或抛出异常 - return AjaxResult.error("输入值不合法 bindFlag: " + maTypeConfigDto.getBindFlag()); - } - } - - @Override - public AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto) { - // 1.把所有物资类型查出来 - List list = typeService.selectThreeFourLevelTypeListAndParent(new Type()); - // 2.把维修配置信息查出来 - List typeRepairList = typeRepairService.selectTypeRepairListAndUserName(new TypeRepair()); - // 3.把库管配置信息查出来 - List typeKeeperList = typeKeeperService.selectTypeKeeperListAndUserName(new TypeKeeper()); - - // ------------------- 开启数据处理 --------------------- - - // 4.循环所有物资类型,重型数据集合保障只循环一次,减少性能损失 - for (MaTypeConfigVo typeConfigVo1 : list) { - // 1.外层 先对比维修班组 - for (TypeRepair typeRepair : typeRepairList) { - // 2.判断当前维修配置信息中的物资类型id是否等于当前物资类型配置信息中的物资类型id - if (typeRepair.getTypeId().equals(typeConfigVo1.getTypeId())) { - // 3.如果相等,把维修员信息设置到物资类型配置信息中 - typeConfigVo1.setRepairUserId(typeRepair.getUserId()); - typeConfigVo1.setRepairUserName(typeRepair.getUserName()); - break; - } - } - // 1.外层 再对比库管班组 - for (TypeKeeper typeKeeper : typeKeeperList) { - // 2.判断当前库管配置信息中的物资类型id是否等于当前物资类型配置信息中的物资类型id - if (typeKeeper.getTypeId().equals(typeConfigVo1.getTypeId())) { - // 3.如果相等,把库管员信息设置到物资类型配置信息中 - typeConfigVo1.setKeeperUserId(typeKeeper.getUserId()); - typeConfigVo1.setKeeperUserName(typeKeeper.getUserName()); - } - } - - // 5.判断当前物资类型配置信息是否有子节点 - if (typeConfigVo1.getChildren() != null) { - // 6.有子节点,继续循环子节点,判断子节点是否有维修配置信息 - for (MaTypeConfigVo typeConfigVo2 : typeConfigVo1.getChildren()) { - // 7.有维修配置信息,把维修员信息设置到子节点中 - for (TypeRepair typeRepair : typeRepairList) { - if (typeRepair.getTypeId().equals(typeConfigVo2.getTypeId())) { - typeConfigVo2.setRepairUserId(typeRepair.getUserId()); - typeConfigVo2.setRepairUserName(typeRepair.getUserName()); - } - } - } - - // 8.有子节点,继续循环子节点, - for (MaTypeConfigVo typeConfigVo3 : typeConfigVo1.getChildren()) { - // 9.判断子节点是否有库管配置信息 - for (TypeKeeper typeKeeper : typeKeeperList) { - if (typeKeeper.getTypeId().equals(typeConfigVo3.getTypeId())) { - typeConfigVo3.setKeeperUserId(typeKeeper.getUserId()); - typeConfigVo3.setKeeperUserName(typeKeeper.getUserName()); - } - } - } - } - - } - - // -------------------- 数据处理结束 --------------------- - - // TODO: 先暂时取消后续过滤流程 - if (true) { - return AjaxResult.success(list); - } - - - // ------------------- 数据过滤开始 --------------------- - if (maTypeConfigDto == null || maTypeConfigDto.getUserId() == null || maTypeConfigDto.getUserId() == 0L) { - // 如果参数无效,则返回原始列表 - return AjaxResult.success(list); - } - - List filteredList = new ArrayList<>(); - - for (MaTypeConfigVo maTypeConfigVo : list) { - if ( - maTypeConfigVo.getKeeperUserId().equals(maTypeConfigDto.getUserId()) || - maTypeConfigVo.getRepairUserId().equals(maTypeConfigDto.getUserId()) - ) - { - filteredList.add(maTypeConfigVo); - } - } - - // ------------------- 数据过滤结束 --------------------- - - - // 返回前端 - return AjaxResult.success(filteredList); - } - - - private int handleBind(int bindRoleType, Long typeId, Long userId) { - switch (bindRoleType) { - case 1: - // 处理 bindFlag 为 1:绑定 且 bindRoleType 为 1:库管员 的情况 - // TODO: 实现具体逻辑 - return typeKeeperService.insertTypeKeeper(new TypeKeeper(typeId, userId)); - case 2: - // 处理 bindFlag 为 1:绑定 且 bindRoleType 为 2:维修员 的情况 - // TODO: 实现具体逻辑 - return typeRepairService.insertTypeRepair(new TypeRepair(typeId, userId)); - default: - // 处理其他情况或抛出异常 - throw new IllegalArgumentException("Unsupported bindRoleType: " + bindRoleType); - } - } - - private int handleUnBind(int bindRoleType, Long typeId, Long userId) { - switch (bindRoleType) { - case 1: - // 处理 bindFlag 为 2:解绑 且 bindRoleType 为 1:库管员 的情况 - // TODO: 实现具体逻辑 - return typeKeeperService.deleteTypeKeeperByUserIdAndTypeId(new TypeKeeper(typeId, userId)); - case 2: - // 处理 bindFlag 为 2:解绑 且 bindRoleType 为 2:维修员 的情况 - // TODO: 实现具体逻辑 - return typeRepairService.deleteTypeRepairByUserIdAndTypeId(new TypeRepair(typeId, userId)); - default: - // 处理其他情况或抛出异常 - throw new IllegalArgumentException("Unsupported bindRoleType: " + bindRoleType); - } - } -} +//package com.bonus.material.ma.service.impl; +// +//import com.bonus.common.core.web.domain.AjaxResult; +//import com.bonus.material.ma.MaTypeConfigDto; +//import com.bonus.material.ma.domain.Type; +//import com.bonus.material.ma.domain.TypeKeeper; +//import com.bonus.material.ma.domain.TypeRepair; +//import com.bonus.material.ma.service.ITypeKeeperService; +//import com.bonus.material.ma.service.ITypeRepairService; +//import com.bonus.material.ma.service.ITypeService; +//import com.bonus.material.ma.service.MaTypeConfigService; +//import com.bonus.material.ma.vo.MaTypeConfigVo; +//import org.springframework.stereotype.Service; +// +//import javax.annotation.Resource; +//import java.util.ArrayList; +//import java.util.List; +// +///** +// * @author : 阮世耀 +// * @version : 1.0 +// * @PackagePath: com.bonus.material.ma.service.impl +// * @CreateTime: 2024-10-16 18:50 +// * @Description: 描述 +// */ +//@Service +//public class MaTypeConfigServiceImpl implements MaTypeConfigService { +// +// /** +// * 物资类型库管员配置Service +// */ +// @Resource +// private ITypeKeeperService typeKeeperService; +// +// /** +// * 物资类型维修员配置Service +// */ +// @Resource +// private ITypeRepairService typeRepairService; +// +// // 物资类型Service +// @Resource +// private ITypeService typeService; +// +// +// @Override +// public AjaxResult updateMaTypeBindInfo(MaTypeConfigDto maTypeConfigDto) { +// int result; +// switch (maTypeConfigDto.getBindFlag()) { +// case 1: +// result = handleBind(maTypeConfigDto.getBindRoleType(), maTypeConfigDto.getTypeId(), maTypeConfigDto.getUserId()); +// return result == 1 ? AjaxResult.success("绑定成功") : AjaxResult.error("绑定失败"); +// case 2: +// result = handleUnBind(maTypeConfigDto.getBindRoleType(), maTypeConfigDto.getTypeId(), maTypeConfigDto.getUserId()); +// return result == 1 ? AjaxResult.success("解绑成功") : AjaxResult.error("解绑失败"); +// default: +// // 处理其他情况或抛出异常 +// return AjaxResult.error("输入值不合法 bindFlag: " + maTypeConfigDto.getBindFlag()); +// } +// } +// +// @Override +// public AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto) { +// // 1.把所有物资类型查出来 +// List list = typeService.selectThreeFourLevelTypeListAndParent(new Type()); +// // 2.把维修配置信息查出来 +// List typeRepairList = typeRepairService.selectTypeRepairListAndUserName(new TypeRepair()); +// // 3.把库管配置信息查出来 +// List typeKeeperList = typeKeeperService.selectTypeKeeperListAndUserName(new TypeKeeper()); +// +// // ------------------- 开启数据处理 --------------------- +// +// // 4.循环所有物资类型,重型数据集合保障只循环一次,减少性能损失 +// for (MaTypeConfigVo typeConfigVo1 : list) { +// // 1.外层 先对比维修班组 +// for (TypeRepair typeRepair : typeRepairList) { +// // 2.判断当前维修配置信息中的物资类型id是否等于当前物资类型配置信息中的物资类型id +// if (typeRepair.getTypeId().equals(typeConfigVo1.getTypeId())) { +// // 3.如果相等,把维修员信息设置到物资类型配置信息中 +// typeConfigVo1.setRepairUserId(typeRepair.getUserId()); +// typeConfigVo1.setRepairUserName(typeRepair.getUserName()); +// break; +// } +// } +// // 1.外层 再对比库管班组 +// for (TypeKeeper typeKeeper : typeKeeperList) { +// // 2.判断当前库管配置信息中的物资类型id是否等于当前物资类型配置信息中的物资类型id +// if (typeKeeper.getTypeId().equals(typeConfigVo1.getTypeId())) { +// // 3.如果相等,把库管员信息设置到物资类型配置信息中 +// typeConfigVo1.setKeeperUserId(typeKeeper.getUserId()); +// typeConfigVo1.setKeeperUserName(typeKeeper.getUserName()); +// } +// } +// +// // 5.判断当前物资类型配置信息是否有子节点 +// if (typeConfigVo1.getChildren() != null) { +// // 6.有子节点,继续循环子节点,判断子节点是否有维修配置信息 +// for (MaTypeConfigVo typeConfigVo2 : typeConfigVo1.getChildren()) { +// // 7.有维修配置信息,把维修员信息设置到子节点中 +// for (TypeRepair typeRepair : typeRepairList) { +// if (typeRepair.getTypeId().equals(typeConfigVo2.getTypeId())) { +// typeConfigVo2.setRepairUserId(typeRepair.getUserId()); +// typeConfigVo2.setRepairUserName(typeRepair.getUserName()); +// } +// } +// } +// +// // 8.有子节点,继续循环子节点, +// for (MaTypeConfigVo typeConfigVo3 : typeConfigVo1.getChildren()) { +// // 9.判断子节点是否有库管配置信息 +// for (TypeKeeper typeKeeper : typeKeeperList) { +// if (typeKeeper.getTypeId().equals(typeConfigVo3.getTypeId())) { +// typeConfigVo3.setKeeperUserId(typeKeeper.getUserId()); +// typeConfigVo3.setKeeperUserName(typeKeeper.getUserName()); +// } +// } +// } +// } +// +// } +// +// // -------------------- 数据处理结束 --------------------- +// +// // TODO: 先暂时取消后续过滤流程 +// if (true) { +// return AjaxResult.success(list); +// } +// +// +// // ------------------- 数据过滤开始 --------------------- +// if (maTypeConfigDto == null || maTypeConfigDto.getUserId() == null || maTypeConfigDto.getUserId() == 0L) { +// // 如果参数无效,则返回原始列表 +// return AjaxResult.success(list); +// } +// +// List filteredList = new ArrayList<>(); +// +// for (MaTypeConfigVo maTypeConfigVo : list) { +// if ( +// maTypeConfigVo.getKeeperUserId().equals(maTypeConfigDto.getUserId()) || +// maTypeConfigVo.getRepairUserId().equals(maTypeConfigDto.getUserId()) +// ) +// { +// filteredList.add(maTypeConfigVo); +// } +// } +// +// // ------------------- 数据过滤结束 --------------------- +// +// +// // 返回前端 +// return AjaxResult.success(filteredList); +// } +// +// +// private int handleBind(int bindRoleType, Long typeId, Long userId) { +// switch (bindRoleType) { +// case 1: +// // 处理 bindFlag 为 1:绑定 且 bindRoleType 为 1:库管员 的情况 +// // TODO: 实现具体逻辑 +// return typeKeeperService.insertTypeKeeper(new TypeKeeper(typeId, userId)); +// case 2: +// // 处理 bindFlag 为 1:绑定 且 bindRoleType 为 2:维修员 的情况 +// // TODO: 实现具体逻辑 +// return typeRepairService.insertTypeRepair(new TypeRepair(typeId, userId)); +// default: +// // 处理其他情况或抛出异常 +// throw new IllegalArgumentException("Unsupported bindRoleType: " + bindRoleType); +// } +// } +// +// private int handleUnBind(int bindRoleType, Long typeId, Long userId) { +// switch (bindRoleType) { +// case 1: +// // 处理 bindFlag 为 2:解绑 且 bindRoleType 为 1:库管员 的情况 +// // TODO: 实现具体逻辑 +// return typeKeeperService.deleteTypeKeeperByUserIdAndTypeId(new TypeKeeper(typeId, userId)); +// case 2: +// // 处理 bindFlag 为 2:解绑 且 bindRoleType 为 2:维修员 的情况 +// // TODO: 实现具体逻辑 +// return typeRepairService.deleteTypeRepairByUserIdAndTypeId(new TypeRepair(typeId, userId)); +// default: +// // 处理其他情况或抛出异常 +// throw new IllegalArgumentException("Unsupported bindRoleType: " + bindRoleType); +// } +// } +//} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java index 9224ab63..e82182b7 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java @@ -8,9 +8,17 @@ import com.bonus.common.biz.domain.TreeSelect; import com.bonus.common.biz.enums.DataCodeEnum; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.ma.MaTypeConfigDto; +import com.bonus.material.ma.domain.TypeKeeper; +import com.bonus.material.ma.domain.TypeRepair; +import com.bonus.material.ma.service.ITypeKeeperService; +import com.bonus.material.ma.service.ITypeRepairService; import com.bonus.material.ma.vo.MaTypeConfigVo; import com.bonus.material.ma.vo.MaTypeListVo; import com.bonus.material.ma.vo.MaTypeSelectVo; +import com.bonus.material.warehouse.domain.WhHouseSet; +import com.bonus.material.warehouse.service.IWhHouseSetService; import org.springframework.stereotype.Service; import com.bonus.material.ma.mapper.TypeMapper; import com.bonus.material.ma.domain.Type; @@ -33,6 +41,15 @@ public class TypeServiceImpl implements ITypeService { @Resource private TypeMapper typeMapper; + @Resource + private ITypeKeeperService typeKeeperService; + + @Resource + private ITypeRepairService typeRepairService; + + @Resource + private IWhHouseSetService houseSetService; + /** * 查询物资类型 -- 根据id * @@ -48,6 +65,29 @@ public class TypeServiceImpl implements ITypeService { return typeMapper.selectParentId(typeId, level); } + /** + * 查询物资类型四级树--前端联动式下拉框 + * @param typeId 类型id + * @param typeName 类型名称 + */ + @Override + public List getEquipmentType(Long typeId, String typeName) { + List maTypes = typeMapper.selectMaTypeList(""); + List list = new ArrayList<>(); + for (Type maType : maTypes) { + if (maType.getParentId() == 0) { + list.add(maType); + } + } + //根据父节点获取对应的儿子节点 + for (Type maType : list) { + List child = getChild(maTypes, maType.getTypeId()); + maType.setChildren(child); + } + return list; + } + + @Override public List selectMaTypeListByHouseId(Long houseId) { return typeMapper.selectMaTypeListByHouseId(houseId); @@ -78,7 +118,7 @@ public class TypeServiceImpl implements ITypeService { @Override public List selectTypeList(Type type) { if (type != null ) { - if (type.getDelFlag() == null || type.getDelFlag().isEmpty()) { + if (StringUtils.isEmpty(type.getDelFlag())) { // 如果没赋值,则默认查询正常数据状态 type.setDelFlag(String.valueOf(DataCodeEnum.NORMAL.getCode())); } @@ -249,15 +289,44 @@ public class TypeServiceImpl implements ITypeService { List maTypes = typeMapper.selectMaTypeTree(TYPE_MIN_LEVEL); List builtMaTypeList = buildMaTypeTree(maTypes); - List treeSelectList = builtMaTypeList.stream() - .filter(Objects::nonNull) - .map(this::convertToTreeSelect) - .collect(Collectors.toList()); - // 查询顶级节点的仓库配置信息 // 如果没有查询到那么返回空 - return treeSelectList; + return builtMaTypeList.stream() + .filter(Objects::nonNull) + .map(this::convertToTreeSelect) + .collect(Collectors.toList()); + } + + @Override + public AjaxResult getMaTypeTreeSelect(String typeName, String parentId) { + // 1.顶级节点及子节点数据全部查询完毕 + List maTypeList = this.getMaTypeTree(typeName, parentId); + // 2.查询所有的仓库配置 + List whHouseSets = houseSetService.selectListByMaType(null); + // 2.1 定义最终接口返回集合 + List treeSelectResultList = new ArrayList<>(); + + // 使用HashMap来存储maTypeList,以便快速查找 + Map maTypeMap = new HashMap<>(); + for (TreeSelect treeSelect : maTypeList) { + maTypeMap.put(treeSelect.getId(), treeSelect); + } + + // 3.遍历所有配置关联 + for (WhHouseSet whHouseSet : whHouseSets) { + // --- 数据校验 ---- + if (whHouseSet == null || whHouseSet.getTypeId() == null) { continue; } + // 构造函数定义0级Tree对象 + TreeSelect thisTree = new TreeSelect(whHouseSet.getId(),whHouseSet.getHouseName(),0,null); + // 从Map中直接获取对应的1级节点 + TreeSelect oneLevelTree = maTypeMap.get(whHouseSet.getTypeId()); + // 转换为集合存入0级Tree对象中 + thisTree.setChildren(oneLevelTree != null ? Collections.singletonList(oneLevelTree) : null); + // 最后把0级Tree对象存入Result结果集合,返回给前端 + treeSelectResultList.add(thisTree); + } + return AjaxResult.success(treeSelectResultList); } /** @@ -272,6 +341,25 @@ public class TypeServiceImpl implements ITypeService { return new TreeSelect(type.getTypeId(), type.getTypeName(),Integer.valueOf(type.getLevel()),type.getParentId(), children); } + /** + * 递归调用获取子级 + * @param list 集合 + * @param parentId 父级id + */ + public List getChild(List list, Long parentId) { + List childList = new ArrayList(); + for (Type maType : list) { + Long typeId = maType.getTypeId(); + Long pid = maType.getParentId(); + if (parentId.equals(pid)) { + List childLists = getChild(list, typeId); + maType.setChildren(childLists); + childList.add(maType); + } + } + return childList; + } + /** * 构建前端所需要树结构 * @@ -329,4 +417,96 @@ public class TypeServiceImpl implements ITypeService { return !getChildList(list, t).isEmpty(); } + @Override + public AjaxResult getMaTypeConfigList(MaTypeConfigDto maTypeConfigDto) { + // 1.把所有物资类型查出来 + List list = selectThreeFourLevelTypeListAndParent(new Type()); + // 2.把维修配置信息查出来 + List typeRepairList = typeRepairService.selectTypeRepairListAndUserName(new TypeRepair()); + // 3.把库管配置信息查出来 + List typeKeeperList = typeKeeperService.selectTypeKeeperListAndUserName(new TypeKeeper()); + + // ------------------- 开启数据处理 --------------------- + + // 4.循环所有物资类型,重型数据集合保障只循环一次,减少性能损失 + for (MaTypeConfigVo typeConfigVo1 : list) { + // 1.外层 先对比维修班组 + for (TypeRepair typeRepair : typeRepairList) { + // 2.判断当前维修配置信息中的物资类型id是否等于当前物资类型配置信息中的物资类型id + if (typeRepair.getTypeId().equals(typeConfigVo1.getTypeId())) { + // 3.如果相等,把维修员信息设置到物资类型配置信息中 + typeConfigVo1.setRepairUserId(typeRepair.getUserId()); + typeConfigVo1.setRepairUserName(typeRepair.getUserName()); + break; + } + } + // 1.外层 再对比库管班组 + for (TypeKeeper typeKeeper : typeKeeperList) { + // 2.判断当前库管配置信息中的物资类型id是否等于当前物资类型配置信息中的物资类型id + if (typeKeeper.getTypeId().equals(typeConfigVo1.getTypeId())) { + // 3.如果相等,把库管员信息设置到物资类型配置信息中 + typeConfigVo1.setKeeperUserId(typeKeeper.getUserId()); + typeConfigVo1.setKeeperUserName(typeKeeper.getUserName()); + } + } + + // 5.判断当前物资类型配置信息是否有子节点 + if (typeConfigVo1.getChildren() != null) { + // 6.有子节点,继续循环子节点,判断子节点是否有维修配置信息 + for (MaTypeConfigVo typeConfigVo2 : typeConfigVo1.getChildren()) { + // 7.有维修配置信息,把维修员信息设置到子节点中 + for (TypeRepair typeRepair : typeRepairList) { + if (typeRepair.getTypeId().equals(typeConfigVo2.getTypeId())) { + typeConfigVo2.setRepairUserId(typeRepair.getUserId()); + typeConfigVo2.setRepairUserName(typeRepair.getUserName()); + } + } + } + + // 8.有子节点,继续循环子节点, + for (MaTypeConfigVo typeConfigVo3 : typeConfigVo1.getChildren()) { + // 9.判断子节点是否有库管配置信息 + for (TypeKeeper typeKeeper : typeKeeperList) { + if (typeKeeper.getTypeId().equals(typeConfigVo3.getTypeId())) { + typeConfigVo3.setKeeperUserId(typeKeeper.getUserId()); + typeConfigVo3.setKeeperUserName(typeKeeper.getUserName()); + } + } + } + } + + } + + // -------------------- 数据处理结束 --------------------- + + // TODO: 先暂时取消后续过滤流程 + if (true) { + return AjaxResult.success(list); + } + + + // ------------------- 数据过滤开始 --------------------- + if (maTypeConfigDto == null || maTypeConfigDto.getUserId() == null || maTypeConfigDto.getUserId() == 0L) { + // 如果参数无效,则返回原始列表 + return AjaxResult.success(list); + } + + List filteredList = new ArrayList<>(); + + for (MaTypeConfigVo maTypeConfigVo : list) { + if ( + maTypeConfigVo.getKeeperUserId().equals(maTypeConfigDto.getUserId()) || + maTypeConfigVo.getRepairUserId().equals(maTypeConfigDto.getUserId()) + ) + { + filteredList.add(maTypeConfigVo); + } + } + + // ------------------- 数据过滤结束 --------------------- + + + // 返回前端 + return AjaxResult.success(filteredList); + } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/PurchaseModelEnum.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/PurchaseModelEnum.java new file mode 100644 index 00000000..c9e7af40 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/PurchaseModelEnum.java @@ -0,0 +1,44 @@ +package com.bonus.material.purchase.config; + +import lombok.Getter; + +/** + * @author : 阮世耀 + * @version : 1.0 + * @PackagePath: com.bonus.material.purchase.config + * @CreateTime: 2024-10-21 16:13 + * @Description: 新购模块阶段枚举 + */ +@Getter +public enum PurchaseModelEnum { + + PURCHASE_MODEL_MANAGE("新购管理"), + PURCHASE_MODEL_CONFIRM("新购确认"), + PURCHASE_MODEL_CHECK("新购验收"), + PURCHASE_MODEL_BIND("新购绑定"), + PURCHASE_MODEL_STORE("新购入库"); + + private final String modelName; + + /** + * 定义构造函数 + * @param modelName 模块名称 + */ + PurchaseModelEnum(String modelName) { + this.modelName = modelName; + } + + + /** + * 判断传入的参数是否存在于枚举类中 + * @return 如果存在返回 true,否则返回 false + */ + public static boolean containsModelName(String modelName) { + for (PurchaseModelEnum model : PurchaseModelEnum.values()) { + if (model.getModelName().equals(modelName)) { + return true; + } + } + return false; + } +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckDetailsController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckDetailsController.java index b1acb0f2..9847e567 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckDetailsController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckDetailsController.java @@ -1,12 +1,16 @@ package com.bonus.material.purchase.controller; import java.util.List; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; + import com.bonus.common.log.enums.OperaType; import com.bonus.material.common.annotation.PreventRepeatSubmit; +import com.bonus.material.purchase.dto.PurchaseCheckFileDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -26,15 +30,14 @@ import com.bonus.common.core.web.page.TableDataInfo; /** * 新购验收任务详细Controller - * - * @author xsheng - * @date 2024-10-16 + * @author syruan */ @Api(tags = "新购验收任务详细接口") @RestController @RequestMapping("/purchase_check_details") public class PurchaseCheckDetailsController extends BaseController { - @Autowired + + @Resource private IPurchaseCheckDetailsService purchaseCheckDetailsService; /** @@ -55,7 +58,7 @@ public class PurchaseCheckDetailsController extends BaseController { @ApiOperation(value = "导出新购验收任务详细列表") @PreventRepeatSubmit @RequiresPermissions("purchase:details:export") - @SysLog(title = "新购验收任务详细", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->导出新购验收任务详细") + @SysLog(title = "新购验收任务详细", businessType = OperaType.EXPORT, logType = 1,module = "物资新购->导出新购验收任务详细") @PostMapping("/export") public void export(HttpServletResponse response, PurchaseCheckDetails purchaseCheckDetails) { List list = purchaseCheckDetailsService.selectPurchaseCheckDetailsList(purchaseCheckDetails); @@ -79,7 +82,7 @@ public class PurchaseCheckDetailsController extends BaseController { @ApiOperation(value = "新增新购验收任务详细") @PreventRepeatSubmit @RequiresPermissions("purchase:details:add") - @SysLog(title = "新购验收任务详细", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增新购验收任务详细") + @SysLog(title = "新购验收任务详细", businessType = OperaType.INSERT, logType = 1,module = "物资新购->新增新购验收任务详细") @PostMapping public AjaxResult add(@RequestBody PurchaseCheckDetails purchaseCheckDetails) { try { @@ -95,7 +98,7 @@ public class PurchaseCheckDetailsController extends BaseController { @ApiOperation(value = "修改新购验收任务详细") @PreventRepeatSubmit @RequiresPermissions("purchase:details:edit") - @SysLog(title = "新购验收任务详细", businessType = OperaType.UPDATE, module = "仓储管理->修改新购验收任务详细") + @SysLog(title = "新购验收任务详细", businessType = OperaType.UPDATE, module = "物资新购->修改新购验收任务详细") @PutMapping public AjaxResult edit(@RequestBody PurchaseCheckDetails purchaseCheckDetails) { try { @@ -111,9 +114,32 @@ public class PurchaseCheckDetailsController extends BaseController { @ApiOperation(value = "删除新购验收任务详细") @PreventRepeatSubmit @RequiresPermissions("purchase:details:remove") - @SysLog(title = "新购验收任务详细", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除新购验收任务详细") + @SysLog(title = "新购验收任务详细", businessType = OperaType.DELETE, logType = 1,module = "物资新购->删除新购验收任务详细") @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(purchaseCheckDetailsService.deletePurchaseCheckDetailsByIds(ids)); } + + /** + * 根据任务id查询报告附件 + */ + @ApiOperation(value = "根据任务id查询报告附件") + @RequiresPermissions("purchase:details:query") + @GetMapping("/fileList/{taskId}") + @SysLog(title = "新购验收任务明细报告查询", businessType = OperaType.QUERY, module = "物资新购->根据任务id查询物资报告附件") + public AjaxResult getFileList(@PathVariable("taskId") Long taskId) { + return success(purchaseCheckDetailsService.selectPurchaseCheckFileListByTaskId(taskId)); + } + + + @ApiOperation(value = "上传文件") + @PreventRepeatSubmit + @RequiresPermissions("purchase:details:add") + @SysLog(title = "上传文件", businessType = OperaType.INSERT, logType = 1,module = "物资新购->上传物资报告附件") + @PostMapping("/uploadFile") + public AjaxResult uploadFile(@RequestBody @NotNull @Valid PurchaseCheckFileDto purchaseCheckFileDto) { + return purchaseCheckDetailsService.insertPurchaseCheckFile(purchaseCheckFileDto); + } + + } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseNoticePersonController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseNoticePersonController.java index dcd57809..a4dd2342 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseNoticePersonController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseNoticePersonController.java @@ -1,9 +1,14 @@ package com.bonus.material.purchase.controller; import java.util.List; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; + import com.bonus.common.log.enums.OperaType; import com.bonus.material.common.annotation.PreventRepeatSubmit; +import com.bonus.material.purchase.dto.PurchaseNoticePersonDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -26,15 +31,15 @@ import com.bonus.common.core.web.page.TableDataInfo; /** * 新购短信通知人员Controller - * - * @author xsheng - * @date 2024-10-16 + * + * @author syruan */ @Api(tags = "新购短信通知人员接口") @RestController @RequestMapping("/purchase_notice_person") public class PurchaseNoticePersonController extends BaseController { - @Autowired + + @Resource private IPurchaseNoticePersonService purchaseNoticePersonService; /** @@ -44,7 +49,6 @@ public class PurchaseNoticePersonController extends BaseController { @RequiresPermissions("purchase:person:list") @GetMapping("/list") public TableDataInfo list(PurchaseNoticePerson purchaseNoticePerson) { - startPage(); List list = purchaseNoticePersonService.selectPurchaseNoticePersonList(purchaseNoticePerson); return getDataTable(list); } @@ -89,13 +93,41 @@ public class PurchaseNoticePersonController extends BaseController { } } + /** + * 批量新增--新购短信通知人员 + */ + @ApiOperation(value = "批量新增新购短信通知人员") + @PreventRepeatSubmit + @RequiresPermissions("purchase:person:add") + @SysLog(title = "批量新增新购短信通知人员", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->批量新增新购短信通知人员") + @PostMapping("/batchAddNoticePerson") + public AjaxResult batchAddNoticePerson(@RequestBody List purchaseNoticePersonList) { + try { + return toAjax(purchaseNoticePersonService.insertBatchPurchaseNoticePerson(purchaseNoticePersonList)); + } catch (Exception e) { + return error("系统错误, " + e.getMessage()); + } + } + + /** + * 批量发送短信 + */ + @ApiOperation(value = "批量发送短信") + @PreventRepeatSubmit + @RequiresPermissions("purchase:person:edit") + @SysLog(title = "批量发送短信", businessType = OperaType.UPDATE, module = "仓储管理->批量发送短信") + @PutMapping("/batchSendSms") + public AjaxResult batchSendSms(@NotNull @Valid @RequestBody PurchaseNoticePersonDto purchaseNoticePersonDto) { + return purchaseNoticePersonService.batchSendSms(purchaseNoticePersonDto); + } + /** * 修改新购短信通知人员 */ @ApiOperation(value = "修改新购短信通知人员") @PreventRepeatSubmit @RequiresPermissions("purchase:person:edit") - @SysLog(title = "新购短信通知人员", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改新购短信通知人员") + @SysLog(title = "新购短信通知人员", businessType = OperaType.UPDATE, module = "仓储管理->修改新购短信通知人员") @PutMapping public AjaxResult edit(@RequestBody PurchaseNoticePerson purchaseNoticePerson) { try { diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java index 1b2c64a4..498a8bde 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java @@ -37,6 +37,9 @@ public class PurchaseCheckDetails extends BaseEntity { @ApiModelProperty(value = "规格名称") private String typeName; + @ApiModelProperty(value = "物资单位名称") + private String unitName; + @ApiModelProperty(value = "物资名称--规格parent类型") private String maTypeName; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java index 96498bb7..127f6b22 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java @@ -1,6 +1,8 @@ package com.bonus.material.purchase.domain; +import java.math.BigDecimal; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import com.bonus.common.core.annotation.Excel; import io.swagger.annotations.ApiModelProperty; @@ -9,6 +11,8 @@ import lombok.EqualsAndHashCode; import lombok.ToString; import com.bonus.common.core.web.domain.BaseEntity; +import javax.validation.constraints.Size; + /** * 新购验收任务对象 purchase_check_info * @author syruan @@ -17,7 +21,8 @@ import com.bonus.common.core.web.domain.BaseEntity; @Data @ToString public class PurchaseCheckInfo extends BaseEntity { - private static final long serialVersionUID = 1L; + + private static final long serialVersionUID = 1335730477657434485L; /** 主键id */ private Long id; @@ -30,6 +35,9 @@ public class PurchaseCheckInfo extends BaseEntity { @ApiModelProperty(value = "任务状态") private String taskStatus; + @ApiModelProperty(value = "采购单号") + private String code; + /** 采购日期 */ @ApiModelProperty(value = "采购日期") @JsonFormat(pattern = "yyyy-MM-dd") @@ -62,6 +70,31 @@ public class PurchaseCheckInfo extends BaseEntity { * 采购数量 */ @ApiModelProperty(value = "采购数量--外层Table字段") - private String purchaseMaNumber; + private Long purchaseMaNumber; + + /** + * 采购含税价格 + */ + @ApiModelProperty(value = "采购含税价格--外层Table字段") + private BigDecimal purchaseTaxPrice; + + /** + * 采购不含税价格 + */ + @ApiModelProperty(value = "采购不含税价格--外层Table字段") + private BigDecimal purchaseNoTaxPrice; + + /** + * 税率 + */ + @ApiModelProperty(value = "税率--Int整形 0~100") + @Size(max = 100, message = "税率长度必须介于 0 和 100 之间") + private Integer taxRate; + + @ApiModelProperty(value = "操作人名称") + private String createUserName; + + @ApiModelProperty(value = "新购模块阶段名称") + private String modelName; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseNoticePerson.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseNoticePerson.java index ed50a9d5..93a3efe7 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseNoticePerson.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseNoticePerson.java @@ -32,10 +32,17 @@ public class PurchaseNoticePerson extends BaseEntity { @ApiModelProperty(value = "用户名") private String userName; + /** 用户角色名 */ + @ApiModelProperty(value = "用户角色名") + private String userRoleName; + /** 联系电话 */ @Excel(name = "联系电话") @ApiModelProperty(value = "联系电话") private String telphone; + /** 任务id */ + @ApiModelProperty("任务id") + private String taskId; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseCheckFileDto.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseCheckFileDto.java new file mode 100644 index 00000000..19c642bf --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseCheckFileDto.java @@ -0,0 +1,46 @@ +package com.bonus.material.purchase.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @author : 阮世耀 + * @version : 1.0 + * @CreateTime: 2024-10-22 10:36 + * @Description: 新购验收报告附件DTO + */ +@Data +public class PurchaseCheckFileDto { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "附件名称") + @NotBlank(message = "附件名称不能为空") + private String fileName; + + @ApiModelProperty(value = "附件地址url") + @NotBlank(message = "附件地址url不能为空") + private String fileUrl; + + @ApiModelProperty(value = "任务ID") + @NotBlank(message = "任务ID不能为空") + private String taskId; + + @ApiModelProperty(value = "字典编码") + @NotEmpty(message = "字典编码不能为空") + private Integer dictCode; + + @ApiModelProperty(value = "字典标签") + private String dictLabel; + + @ApiModelProperty(value = "新购模块ID,无需传值,后台定义") + private Integer modelId; + + @ApiModelProperty(value = "创建人,无需传值,后台通过TOKEN获取") + private String createBy; + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseNoticePersonDto.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseNoticePersonDto.java new file mode 100644 index 00000000..a7eb1dbd --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseNoticePersonDto.java @@ -0,0 +1,35 @@ +package com.bonus.material.purchase.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author : 阮世耀 + * @version : 1.0 + * @PackagePath: com.bonus.material.purchase.dto + * @CreateTime: 2024-10-21 14:37 + * @Description: 新购验收任务通知人员Dto + */ +@Data +@ToString +public class PurchaseNoticePersonDto { + + /** + * 电话号码 + */ + @NotEmpty(message = "电话号码不能为空") + @ApiModelProperty(value = "电话号码") + private List phoneNumbers; + + /** + * 短信内容 + */ + @NotNull(message = "短信内容不能为空") + @ApiModelProperty(value = "短信内容") + private String content; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseCheckFileMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseCheckFileMapper.java new file mode 100644 index 00000000..35a3c404 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseCheckFileMapper.java @@ -0,0 +1,32 @@ +package com.bonus.material.purchase.mapper; + +import com.bonus.material.purchase.domain.PurchaseCheckDetails; +import com.bonus.material.purchase.dto.PurchaseCheckFileDto; + +import java.util.List; + +/** + * 新购验收任务报告附件Mapper接口 + * + * @author syruan + */ +public interface PurchaseCheckFileMapper { + + + /** + * 根据任务id查询新购验收任务详细报告列表--Join查询 + * @param taskId 任务id + */ + List selectPurchaseCheckFileListByTaskId(Long taskId); + + + /** + * 新增新购验收任务详细报告附件 + * + * @param purchaseCheckFileDto 新购验收任务详细 + * @return 结果 + */ + int insertPurchaseCheckFiles(PurchaseCheckFileDto purchaseCheckFileDto); + + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseNoticePersonMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseNoticePersonMapper.java index 9d8ee7e7..f3b2b264 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseNoticePersonMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseNoticePersonMapper.java @@ -34,6 +34,14 @@ public interface PurchaseNoticePersonMapper { */ public int insertPurchaseNoticePerson(PurchaseNoticePerson purchaseNoticePerson); + /** + * 批量新购短信通知人员 + * + * @param purchaseNoticePersonList 新购短信通知人员集合 + * @return 结果 + */ + int insertBatchPurchaseNoticePerson(List purchaseNoticePersonList); + /** * 修改新购短信通知人员 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseCheckDetailsService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseCheckDetailsService.java index 9ab99aee..c305d11a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseCheckDetailsService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseCheckDetailsService.java @@ -1,7 +1,10 @@ package com.bonus.material.purchase.service; import java.util.List; + +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.purchase.domain.PurchaseCheckDetails; +import com.bonus.material.purchase.dto.PurchaseCheckFileDto; /** * 新购验收任务详细Service接口 @@ -16,7 +19,7 @@ public interface IPurchaseCheckDetailsService { * @param id 新购验收任务详细主键 * @return 新购验收任务详细 */ - public PurchaseCheckDetails selectPurchaseCheckDetailsById(Long id); + PurchaseCheckDetails selectPurchaseCheckDetailsById(Long id); /** * 查询新购验收任务详细列表 @@ -24,7 +27,19 @@ public interface IPurchaseCheckDetailsService { * @param purchaseCheckDetails 新购验收任务详细 * @return 新购验收任务详细集合 */ - public List selectPurchaseCheckDetailsList(PurchaseCheckDetails purchaseCheckDetails); + List selectPurchaseCheckDetailsList(PurchaseCheckDetails purchaseCheckDetails); + + /** + * 根据任务ID查询报告附件列表 + * @param taskId 任务id + */ + List selectPurchaseCheckFileListByTaskId(Long taskId); + + /** + * 新增报告附件 + * @param purchaseCheckFileDto 附件信息 + */ + AjaxResult insertPurchaseCheckFile(PurchaseCheckFileDto purchaseCheckFileDto); /** * 新增新购验收任务详细 @@ -32,7 +47,7 @@ public interface IPurchaseCheckDetailsService { * @param purchaseCheckDetails 新购验收任务详细 * @return 结果 */ - public int insertPurchaseCheckDetails(PurchaseCheckDetails purchaseCheckDetails); + int insertPurchaseCheckDetails(PurchaseCheckDetails purchaseCheckDetails); /** * 修改新购验收任务详细 @@ -40,7 +55,7 @@ public interface IPurchaseCheckDetailsService { * @param purchaseCheckDetails 新购验收任务详细 * @return 结果 */ - public int updatePurchaseCheckDetails(PurchaseCheckDetails purchaseCheckDetails); + int updatePurchaseCheckDetails(PurchaseCheckDetails purchaseCheckDetails); /** * 批量删除新购验收任务详细 @@ -48,7 +63,7 @@ public interface IPurchaseCheckDetailsService { * @param ids 需要删除的新购验收任务详细主键集合 * @return 结果 */ - public int deletePurchaseCheckDetailsByIds(Long[] ids); + int deletePurchaseCheckDetailsByIds(Long[] ids); /** * 删除新购验收任务详细信息 @@ -56,5 +71,5 @@ public interface IPurchaseCheckDetailsService { * @param id 新购验收任务详细主键 * @return 结果 */ - public int deletePurchaseCheckDetailsById(Long id); + int deletePurchaseCheckDetailsById(Long id); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseNoticePersonService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseNoticePersonService.java index 5d6d1b68..e80db601 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseNoticePersonService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseNoticePersonService.java @@ -1,7 +1,10 @@ package com.bonus.material.purchase.service; import java.util.List; + +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.purchase.domain.PurchaseNoticePerson; +import com.bonus.material.purchase.dto.PurchaseNoticePersonDto; /** * 新购短信通知人员Service接口 @@ -26,6 +29,12 @@ public interface IPurchaseNoticePersonService { */ public List selectPurchaseNoticePersonList(PurchaseNoticePerson purchaseNoticePerson); + /** + * 批量发送短信 + * @param purchaseNoticePersonDto 短信发送信息dto + */ + AjaxResult batchSendSms(PurchaseNoticePersonDto purchaseNoticePersonDto); + /** * 新增新购短信通知人员 * @@ -34,6 +43,14 @@ public interface IPurchaseNoticePersonService { */ public int insertPurchaseNoticePerson(PurchaseNoticePerson purchaseNoticePerson); + /** + * 批量新增新购短信通知人员 + * + * @param purchaseNoticePersonList 新购短信通知人员集合 + * @return 结果 + */ + int insertBatchPurchaseNoticePerson(List purchaseNoticePersonList); + /** * 修改新购短信通知人员 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckDetailsServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckDetailsServiceImpl.java index 445ed535..f5129fad 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckDetailsServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckDetailsServiceImpl.java @@ -3,12 +3,19 @@ package com.bonus.material.purchase.service.impl; import java.util.List; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.purchase.dto.PurchaseCheckFileDto; +import com.bonus.material.purchase.mapper.PurchaseCheckFileMapper; +import com.bonus.material.purchase.mapper.PurchaseCheckInfoMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.material.purchase.mapper.PurchaseCheckDetailsMapper; import com.bonus.material.purchase.domain.PurchaseCheckDetails; import com.bonus.material.purchase.service.IPurchaseCheckDetailsService; +import javax.annotation.Resource; + /** * 新购验收任务详细Service业务层处理 * @@ -17,9 +24,13 @@ import com.bonus.material.purchase.service.IPurchaseCheckDetailsService; */ @Service public class PurchaseCheckDetailsServiceImpl implements IPurchaseCheckDetailsService { - @Autowired + + @Resource private PurchaseCheckDetailsMapper purchaseCheckDetailsMapper; + @Resource + private PurchaseCheckFileMapper purchaseCheckFileMapper; + /** * 查询新购验收任务详细 * @@ -42,6 +53,39 @@ public class PurchaseCheckDetailsServiceImpl implements IPurchaseCheckDetailsSer return purchaseCheckDetailsMapper.selectPurchaseCheckDetailsList(purchaseCheckDetails); } + /** + * 根据任务ID查询报告附件列表 + * + * @param taskId 任务id + */ + @Override + public List selectPurchaseCheckFileListByTaskId(Long taskId) { + try { + return purchaseCheckFileMapper.selectPurchaseCheckFileListByTaskId(taskId); + } catch (Exception e) { + throw new RuntimeException("SQL执行错误:" + e.getMessage()); + } + } + + /** + * 新增报告附件 + * + * @param purchaseCheckFileDto 附件信息 + */ + @Override + public AjaxResult insertPurchaseCheckFile(PurchaseCheckFileDto purchaseCheckFileDto) { + try { + if (purchaseCheckFileDto != null) { + // TODO: 暂定魔法值,字典表为26,后续抽出定义为常量 + purchaseCheckFileDto.setModelId(26); + purchaseCheckFileDto.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + } + return purchaseCheckFileMapper.insertPurchaseCheckFiles(purchaseCheckFileDto) > 0 ? AjaxResult.success() : AjaxResult.error("SQL插入0条"); + } catch (Exception e) { + return AjaxResult.error("SQL执行错误:" + e.getMessage()); + } + } + /** * 新增新购验收任务详细 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java index 6270cf0e..ac931442 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java @@ -1,6 +1,16 @@ package com.bonus.material.purchase.service.impl; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.HashMap; import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +import cn.hutool.core.map.MapUtil; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; @@ -9,6 +19,7 @@ import com.bonus.material.purchase.dto.PurchaseCheckDto; import com.bonus.material.purchase.mapper.PurchaseCheckDetailsMapper; import com.bonus.material.task.domain.TmTask; import com.bonus.material.task.mapper.TmTaskMapper; +import org.apache.ibatis.reflection.ArrayUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.material.purchase.mapper.PurchaseCheckInfoMapper; @@ -63,19 +74,74 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { */ @Override public List selectPurchaseCheckInfoList(PurchaseCheckInfo purchaseCheckInfoDto) { - // 查询新购info列表 - List purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoList(purchaseCheckInfoDto); - // 过滤info列表中空的对象 - purchaseCheckInfos.removeIf(purchaseCheckInfo -> purchaseCheckInfo.getTaskId() == null); + // 查询新购info列表,并用stream流过滤掉info列表中空的对象 或 taskId为空的对象 + List purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoJoinList(purchaseCheckInfoDto) + .stream() + .filter(Objects::nonNull) + .filter(purchaseCheckInfo -> purchaseCheckInfo.getTaskId() != null) + .collect(Collectors.toList()); - // 查询details表,获取详细的采购物资名称 + // ----------- for循环开始 ------------- for (PurchaseCheckInfo purchaseCheckInfo : purchaseCheckInfos) { + // 查询details表,获取详细的采购物资名称 String purchaseMaName = purchaseCheckDetailsMapper.selectMaTypeNameByTaskId(purchaseCheckInfo.getTaskId(), null); purchaseCheckInfo.setPurchaseMaTypeName(purchaseMaName != null ? purchaseMaName : ""); + + // 查询details表,获取详细的采购物资数量、价格 + List purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(purchaseCheckInfo.getTaskId()) + .stream() + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 定义初始化统计变量,使用 AtomicLong 和 AtomicBigDecimal 来替代同步块,提高性能。 + // 采购物资数量 + AtomicLong purchaseMaTotalNumber = new AtomicLong(0L); + // 采购物资不含税价格 + AtomicReference purchaseMaTotalNoTaxPrice = new AtomicReference<>(BigDecimal.ZERO); + + // 执行for循环统计采购物资数量、价格 + for (PurchaseCheckDetails detail : purchaseCheckDetails) { + if (detail.getPurchaseNum() == null || detail.getPurchasePrice() == null) { + continue; + } + if (detail.getPurchaseNum() < 0 || detail.getPurchasePrice().compareTo(BigDecimal.ZERO) < 0) { + throw new IllegalArgumentException("采购数量和价格必须为非负数"); + } + // 原代码块使用sync确保线程安全,现更改为AtomicLong来替代同步块 + // 统计采购数量 + purchaseMaTotalNumber.addAndGet(detail.getPurchaseNum()); + // 采购物资数量乘以采购不含税价格 + purchaseMaTotalNoTaxPrice.updateAndGet(v -> v.add(new BigDecimal(detail.getPurchaseNum()).multiply(detail.getPurchasePrice()))); + } + + // 赋值统计出来的采购物资数量、不含税价格 + purchaseCheckInfo.setPurchaseMaNumber(purchaseMaTotalNumber.get()); + purchaseCheckInfo.setPurchaseNoTaxPrice(purchaseMaTotalNoTaxPrice.get()); + + // 通过不含税价格及税率,计算出含税价格并赋值 + if (purchaseCheckInfo.getTaxRate() != null && purchaseCheckInfo.getPurchaseNoTaxPrice() != null) { + purchaseCheckInfo.setPurchaseTaxPrice( + calculateTaxPrice(purchaseMaTotalNoTaxPrice.get(), new BigDecimal(purchaseCheckInfo.getTaxRate())) + ); + } } + // ------------- for循环结束 ------------- + return purchaseCheckInfos; } + + /** + * 含税价格计算 + * @param purchaseNoTaxPrice 不含税价格 + * @param taxRate 税率:0~100 例如13%税率 值应该是整形:13 + * @return 不含税价格100 税率为13%,结果为 113.00 + */ + public static BigDecimal calculateTaxPrice(BigDecimal purchaseNoTaxPrice, BigDecimal taxRate) { + BigDecimal one = BigDecimal.ONE; + return purchaseNoTaxPrice.multiply(one.add(taxRate)).setScale(2, RoundingMode.HALF_UP); + } + /** * 新增新购验收任务 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseNoticePersonServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseNoticePersonServiceImpl.java index ae3c689b..58758346 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseNoticePersonServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseNoticePersonServiceImpl.java @@ -3,12 +3,17 @@ package com.bonus.material.purchase.service.impl; import java.util.List; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.utils.sms.SmsUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.purchase.dto.PurchaseNoticePersonDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.material.purchase.mapper.PurchaseNoticePersonMapper; import com.bonus.material.purchase.domain.PurchaseNoticePerson; import com.bonus.material.purchase.service.IPurchaseNoticePersonService; +import javax.annotation.Resource; + /** * 新购短信通知人员Service业务层处理 * @@ -17,7 +22,8 @@ import com.bonus.material.purchase.service.IPurchaseNoticePersonService; */ @Service public class PurchaseNoticePersonServiceImpl implements IPurchaseNoticePersonService { - @Autowired + + @Resource private PurchaseNoticePersonMapper purchaseNoticePersonMapper; /** @@ -42,6 +48,17 @@ public class PurchaseNoticePersonServiceImpl implements IPurchaseNoticePersonSer return purchaseNoticePersonMapper.selectPurchaseNoticePersonList(purchaseNoticePerson); } + @Override + public AjaxResult batchSendSms(PurchaseNoticePersonDto purchaseNoticePersonDto) { + String splitPhoneNumber = String.join(",", purchaseNoticePersonDto.getPhoneNumbers()); + try { + String sendResult = SmsUtils.smsToken(splitPhoneNumber, purchaseNoticePersonDto.getContent(), null); + return AjaxResult.success(sendResult); + } catch (Exception e) { + throw new RuntimeException("短信发送异常:" + e.getMessage()); + } + } + /** * 新增新购短信通知人员 * @@ -58,6 +75,21 @@ public class PurchaseNoticePersonServiceImpl implements IPurchaseNoticePersonSer } } + /** + * 批量新增新购短信通知人员 + * + * @param purchaseNoticePersonList 新购短信通知人员集合 + * @return 结果 + */ + @Override + public int insertBatchPurchaseNoticePerson(List purchaseNoticePersonList) { + try { + return purchaseNoticePersonMapper.insertBatchPurchaseNoticePerson(purchaseNoticePersonList); + } catch (Exception e) { + throw new RuntimeException("批量新增执行SQL错误:" + e.getMessage()); + } + } + /** * 修改新购短信通知人员 * diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml index 022953d4..9a70c583 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml @@ -408,4 +408,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE a.del_flag = 0 AND a.`level` = '3' + + \ No newline at end of file diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml index e947e915..4478f52b 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -40,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select pcd.id, pcd.task_id, pcd.type_id, pcd.purchase_price, pcd.purchase_num, pcd.check_num, pcd.bind_num, pcd.check_result, pcd.supplier_id, pcd.status, pcd.create_by, pcd.production_time, pcd.create_time, pcd.update_by, pcd.update_time, pcd.remark, pcd.check_url_name, pcd.check_url, pcd.input_num, pcd.input_status, pcd.input_time, pcd.file_name, - pcd.file_url, pcd.company_id, mt.type_name, mtp.type_name as ma_type_name + pcd.file_url, pcd.company_id, mt.type_name, mt.unit_name, mtp.type_name as ma_type_name from purchase_check_details pcd left join ma_type mt on pcd.type_id = mt.type_id left join ma_type mtp on mt.parent_id = mtp.type_id diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckFileMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckFileMapper.xml new file mode 100644 index 00000000..f107bff6 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckFileMapper.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + SELECT + sdd.dict_code,sdd.dict_label, + bfi.id,bfi.file_name,bfi.file_url + FROM + sys_dict_data sdd + LEFT JOIN + bm_file_info bfi ON bfi.dic_id = sdd.dict_code + WHERE + sdd.dict_type = 'purchase_check_report_type' + + + + + + + insert into bm_file_info + + model_id, + file_name, + file_url, + dic_id, + create_by, + create_time, + task_id + + + #{modelId,jdbcType=INTEGER}, + #{fileName,jdbcType=VARCHAR}, + #{fileUrl,jdbcType=VARCHAR}, + #{dictCode}, + #{createBy,jdbcType=VARCHAR}, + now(), + #{taskId} + + + + \ No newline at end of file diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml index 03042160..40a0da1c 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml @@ -6,10 +6,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -30,10 +32,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select pci.id, pci.task_id, pci.purchase_time, pci.arrival_time, pci.purchaser, pci.create_by, pci.create_time, pci.update_by, pci.update_time, pci.remark, pci.company_id, - t.task_status, t.task_type + t.task_status, t.task_type, t.code, su.user_name as create_user_name from purchase_check_info pci left join tm_task t on t.task_id = pci.task_id + left join sys_user su ON pci.create_by = su.user_id