diff --git a/pom.xml b/pom.xml index fa263ca..9fa86ac 100644 --- a/pom.xml +++ b/pom.xml @@ -17,9 +17,9 @@ yunxi-module-system yunxi-module-infra - yunxi-module-report + yunxi-module-bpm diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java index 41d2339..360ef8f 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java @@ -1,11 +1,15 @@ package com.yunxi.scm.module.system.controller.admin.dept; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.yunxi.scm.framework.common.enums.CommonStatusEnum; import com.yunxi.scm.framework.common.pojo.CommonResult; import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.*; import com.yunxi.scm.module.system.convert.dept.DeptConvert; import com.yunxi.scm.module.system.dal.dataobject.dept.DeptDO; +import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; +import com.yunxi.scm.module.system.dal.mysql.user.AdminUserMapper; import com.yunxi.scm.module.system.service.dept.DeptService; +import com.yunxi.scm.module.system.service.user.AdminUserService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; @@ -28,6 +32,8 @@ public class DeptController { @Resource private DeptService deptService; + @Resource + private AdminUserMapper adminUserMapper; @PostMapping("create") @Operation(summary = "创建部门") @@ -75,6 +81,7 @@ public class DeptController { return success(DeptConvert.INSTANCE.convertList02(list)); } + @GetMapping("/get") @Operation(summary = "获得部门信息") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java index f84dab2..c1b8987 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java @@ -1,10 +1,14 @@ package com.yunxi.scm.module.system.controller.admin.dept.vo.dept; +import com.baomidou.mybatisplus.annotation.TableField; +import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @Schema(description = "管理后台 - 部门精简信息 Response VO") @Data @NoArgsConstructor @@ -19,5 +23,4 @@ public class DeptSimpleRespVO { @Schema(description = "父部门 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long parentId; - } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java index 7e5be65..c3687ca 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java @@ -1,7 +1,10 @@ package com.yunxi.scm.module.system.controller.admin.user; import cn.hutool.core.collection.CollUtil; +import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptListReqVO; +import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO; import com.yunxi.scm.module.system.controller.admin.user.vo.user.*; +import com.yunxi.scm.module.system.convert.dept.DeptConvert; import com.yunxi.scm.module.system.convert.user.UserConvert; import com.yunxi.scm.module.system.dal.dataobject.dept.DeptDO; import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; @@ -188,4 +191,16 @@ public class UserController { return success(userService.importUserList(list, updateSupport)); } + @GetMapping("/list-all-simpleuser") + @Operation(summary = "获取部门人员精简信息列表", description = "只包含被开启的部门人员,主要用于前端的下拉选项") + public CommonResult> getSimpleDeptListuser() { + // 获得部门列表,只要开启状态的 + UserRespVO reqVO = new UserRespVO(); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + List list = userService.getselectuser(reqVO); + // 排序后,返回给前端 + list.sort(Comparator.comparing(AdminUserDO::getId)); + return success(UserConvert.INSTANCE.convertList04(list)); + } + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserRespVO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserRespVO.java index d37fefc..5a2ef8e 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserRespVO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserRespVO.java @@ -28,4 +28,7 @@ public class UserRespVO extends UserBaseVO { @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") private LocalDateTime createTime; + @Schema(description = "部门ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long deptId; + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java index 375cb05..f93fb54 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java @@ -17,4 +17,7 @@ public class UserSimpleRespVO { @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") private String nickname; + @Schema(description = "部门ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long deptId; + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java index 5dbd5aa..1968228 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java @@ -1,5 +1,6 @@ package com.yunxi.scm.module.system.dal.dataobject.dept; +import com.baomidou.mybatisplus.annotation.TableField; import com.yunxi.scm.framework.common.enums.CommonStatusEnum; import com.yunxi.scm.framework.tenant.core.db.TenantBaseDO; import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; @@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + /** * 部门表 * diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/mysql/user/AdminUserMapper.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/mysql/user/AdminUserMapper.java index 0ea75ee..6b4278c 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/mysql/user/AdminUserMapper.java @@ -5,6 +5,7 @@ import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; import com.yunxi.scm.module.system.controller.admin.user.vo.user.UserExportReqVO; import com.yunxi.scm.module.system.controller.admin.user.vo.user.UserPageReqVO; +import com.yunxi.scm.module.system.controller.admin.user.vo.user.UserRespVO; import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; import org.apache.ibatis.annotations.Mapper; @@ -57,4 +58,12 @@ public interface AdminUserMapper extends BaseMapperX { return selectList(AdminUserDO::getDeptId, deptIds); } + default List selectuserList(UserRespVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername()) + .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile()) + .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) + .inIfPresent(AdminUserDO::getDeptId, reqVO.getDeptId())); + } + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserService.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserService.java index dfc1894..c9e35df 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserService.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserService.java @@ -209,4 +209,7 @@ public interface AdminUserService { */ boolean isPasswordMatch(String rawPassword, String encodedPassword); + + List getselectuser(UserRespVO reqVO); + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserServiceImpl.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserServiceImpl.java index 3735219..3e42b4c 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserServiceImpl.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/user/AdminUserServiceImpl.java @@ -443,6 +443,11 @@ public class AdminUserServiceImpl implements AdminUserService { return passwordEncoder.matches(rawPassword, encodedPassword); } + @Override + public List getselectuser(UserRespVO reqVO) { + return userMapper.selectuserList(reqVO); + } + /** * 对密码进行加密 * diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/resources/Mapper/usergroup/UserGroupMapper.xml b/yunxi-module-system/yunxi-module-system-biz/src/main/resources/Mapper/usergroup/UserGroupMapper.xml new file mode 100644 index 0000000..827bc3d --- /dev/null +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/resources/Mapper/usergroup/UserGroupMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/CustomerController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/CustomerController.java index 1d79307..a935b24 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/CustomerController.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/CustomerController.java @@ -1,5 +1,8 @@ package com.yunxi.scm.module.xxjj.controller.admin.customer; +import com.yunxi.scm.framework.common.enums.CommonStatusEnum; +import com.yunxi.scm.module.xxjj.controller.admin.workorder.vo.WorkOrderCreateReqVO; +import com.yunxi.scm.module.xxjj.service.workorder.WorkOrderService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -36,14 +39,26 @@ public class CustomerController { @Resource private CustomerService customerService; + @Resource + private WorkOrderService workOrderService; + @PostMapping("/create") @Operation(summary = "创建客户信息") @PreAuthorize("@ss.hasPermission('xxjj:customer:create')") - public CommonResult createCustomer(@Valid @RequestBody CustomerCreateReqVO createReqVO) { + public CommonResult createCustomerwork(@Valid @RequestBody CustomerCreateReqVO createReqVO) { return success(customerService.createCustomer(createReqVO)); } + + @PostMapping("/creatework") + @Operation(summary = "创建工单") + @PreAuthorize("@ss.hasPermission('xxjj:customer:creatework')") + public CommonResult createCustomer(@Valid @RequestBody WorkOrderCreateReqVO workOrderCreateReqVO) { + return success(workOrderService.createWorkOrder(workOrderCreateReqVO)); + } + + @PutMapping("/update") @Operation(summary = "更新客户信息") @PreAuthorize("@ss.hasPermission('xxjj:customer:update')") @@ -99,4 +114,18 @@ public class CustomerController { ExcelUtils.write(response, "客户信息.xls", "数据", CustomerExcelVO.class, datas); } + + @GetMapping("/list-all-simplecustomer") + @Operation(summary = "获取客户", description = "只包含被开启的客户,主要用于前端的下拉选项") + public CommonResult> getCustomerId() { + CustomerRespVO customerRespVO=new CustomerRespVO(); + String status=Integer.toString(CommonStatusEnum.ENABLE.getStatus()); + customerRespVO.setStatus(status); + + List list = customerService.getCustomerstaus(customerRespVO); + return success(CustomerConvert.INSTANCE.convertList(list)); + } + + + } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerBaseVO.java index 4809efa..93cd012 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerBaseVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerBaseVO.java @@ -40,7 +40,8 @@ public class CustomerBaseVO { @NotNull(message = "状态不能为空") private String status; - @Schema(description = "归属人员") - private String belongingPeople; + @Schema(description = "归属人员",requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3") + @NotNull(message = "成员编号数组不能为空") + private Set belongingPeople; } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerExcelVO.java index bba3ae7..2fdcc5b 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerExcelVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerExcelVO.java @@ -41,7 +41,7 @@ public class CustomerExcelVO { private String status; @ExcelProperty("归属人员") - private String belongingPeople; + private Set belongingPeople; @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerPageReqVO.java index 298eb11..ae9fb6b 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerPageReqVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/customer/vo/CustomerPageReqVO.java @@ -37,7 +37,7 @@ public class CustomerPageReqVO extends PageParam { private String status; @Schema(description = "归属人员") - private String belongingPeople; + private Set belongingPeople; @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/SupplierController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/SupplierController.java new file mode 100644 index 0000000..7275659 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/SupplierController.java @@ -0,0 +1,114 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier; + +import com.yunxi.scm.framework.common.enums.CommonStatusEnum; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.supplier.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.supplier.SupplierDO; +import com.yunxi.scm.module.xxjj.convert.supplier.SupplierConvert; +import com.yunxi.scm.module.xxjj.service.supplier.SupplierService; + +@Tag(name = "管理后台 - 供应商") +@RestController +@RequestMapping("/xxjj/supplier") +@Validated +public class SupplierController { + + @Resource + private SupplierService supplierService; + + @PostMapping("/create") + @Operation(summary = "创建供应商") + @PreAuthorize("@ss.hasPermission('xxjj:supplier:create')") + public CommonResult createSupplier(@Valid @RequestBody SupplierCreateReqVO createReqVO) { + return success(supplierService.createSupplier(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新供应商") + @PreAuthorize("@ss.hasPermission('xxjj:supplier:update')") + public CommonResult updateSupplier(@Valid @RequestBody SupplierUpdateReqVO updateReqVO) { + supplierService.updateSupplier(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除供应商") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:supplier:delete')") + public CommonResult deleteSupplier(@RequestParam("id") Long id) { + supplierService.deleteSupplier(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得供应商") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:supplier:query')") + public CommonResult getSupplier(@RequestParam("id") Long id) { + SupplierDO supplier = supplierService.getSupplier(id); + return success(SupplierConvert.INSTANCE.convert(supplier)); + } + + @GetMapping("/list") + @Operation(summary = "获得供应商列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:supplier:query')") + public CommonResult> getSupplierList(@RequestParam("ids") Collection ids) { + List list = supplierService.getSupplierList(ids); + return success(SupplierConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得供应商分页") + @PreAuthorize("@ss.hasPermission('xxjj:supplier:query')") + public CommonResult> getSupplierPage(@Valid SupplierPageReqVO pageVO) { + PageResult pageResult = supplierService.getSupplierPage(pageVO); + return success(SupplierConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出供应商 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:supplier:export')") + @OperateLog(type = EXPORT) + public void exportSupplierExcel(@Valid SupplierExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = supplierService.getSupplierList(exportReqVO); + // 导出 Excel + List datas = SupplierConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "供应商.xls", "数据", SupplierExcelVO.class, datas); + } + + @GetMapping("/list-all-simplesupplier") + @Operation(summary = "获取供应商", description = "只包含被开启的供应商,主要用于前端的下拉选项") + public CommonResult> getCustomerId() { + SupplierRespVO supplierRespVO=new SupplierRespVO(); + String status=Integer.toString(CommonStatusEnum.ENABLE.getStatus()); + supplierRespVO.setStatus(status); + + List list = supplierService.getSupplierstaus(supplierRespVO); + return success(SupplierConvert.INSTANCE.convertList(list)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierBaseVO.java new file mode 100644 index 0000000..3c403e9 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierBaseVO.java @@ -0,0 +1,46 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; + +/** + * 供应商 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class SupplierBaseVO { + + @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotNull(message = "客户名称不能为空") + private String supplierName; + + @Schema(description = "客户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "客户类型不能为空") + private String supplierType; + + @Schema(description = "统一结算主体") + private String unifiedSettlement; + + @Schema(description = "客户性质", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "客户性质不能为空") + private String supplierNature; + + @Schema(description = "合作模式", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合作模式不能为空") + private String cooperationMode; + + @Schema(description = "隶属业务线", example = "19585") + private Long linebusinessId; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态不能为空") + private String status; + + @Schema(description = "归属人员") + private Set belongingPeople; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierCreateReqVO.java new file mode 100644 index 0000000..ceabda8 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 供应商创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SupplierCreateReqVO extends SupplierBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierExcelVO.java new file mode 100644 index 0000000..b136794 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierExcelVO.java @@ -0,0 +1,51 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 供应商 Excel VO + * + * @author 长江云息 + */ +@Data +public class SupplierExcelVO { + + @ExcelProperty("编号") + private Long id; + + @ExcelProperty("客户名称") + private String supplierName; + + @ExcelProperty("客户类型") + private String supplierType; + + @ExcelProperty("统一结算主体") + private String unifiedSettlement; + + @ExcelProperty("客户性质") + private String supplierNature; + + @ExcelProperty("合作模式") + private String cooperationMode; + + @ExcelProperty("隶属业务线") + private Long linebusinessId; + + @ExcelProperty("状态") + private String status; + + @ExcelProperty("归属人员") + private Set belongingPeople; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @ExcelProperty("更新时间") + private LocalDateTime updateTime; +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierExportReqVO.java new file mode 100644 index 0000000..132c186 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierExportReqVO.java @@ -0,0 +1,48 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 供应商 Excel 导出 Request VO,参数和 SupplierPageReqVO 是一致的") +@Data +public class SupplierExportReqVO { + + @Schema(description = "客户名称", example = "张三") + private String supplierName; + + @Schema(description = "客户类型", example = "1") + private String supplierType; + + @Schema(description = "统一结算主体") + private String unifiedSettlement; + + @Schema(description = "客户性质") + private String supplierNature; + + @Schema(description = "合作模式") + private String cooperationMode; + + @Schema(description = "隶属业务线", example = "19585") + private Long linebusinessId; + + @Schema(description = "状态", example = "2") + private String status; + + @Schema(description = "归属人员") + private Set belongingPeople; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updateTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierPageReqVO.java new file mode 100644 index 0000000..ea41681 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierPageReqVO.java @@ -0,0 +1,50 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 供应商分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SupplierPageReqVO extends PageParam { + + @Schema(description = "客户名称", example = "张三") + private String supplierName; + + @Schema(description = "客户类型", example = "1") + private String supplierType; + + @Schema(description = "统一结算主体") + private String unifiedSettlement; + + @Schema(description = "客户性质") + private String supplierNature; + + @Schema(description = "合作模式") + private String cooperationMode; + + @Schema(description = "隶属业务线", example = "19585") + private Long linebusinessId; + + @Schema(description = "状态", example = "2") + private String status; + + @Schema(description = "归属人员") + private Set belongingPeople; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updateTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierRespVO.java new file mode 100644 index 0000000..1788630 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierRespVO.java @@ -0,0 +1,22 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 供应商 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SupplierRespVO extends SupplierBaseVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "6040") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime updateTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierUpdateReqVO.java new file mode 100644 index 0000000..f3a4252 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/supplier/vo/SupplierUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.supplier.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 供应商更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SupplierUpdateReqVO extends SupplierBaseVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "6040") + @NotNull(message = "编号不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/WorkOrderController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/WorkOrderController.java new file mode 100644 index 0000000..2d583ba --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/WorkOrderController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.workorder.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workorder.WorkOrderDO; +import com.yunxi.scm.module.xxjj.convert.workorder.WorkOrderConvert; +import com.yunxi.scm.module.xxjj.service.workorder.WorkOrderService; + +@Tag(name = "管理后台 - 工单") +@RestController +@RequestMapping("/xxjj/work-order") +@Validated +public class WorkOrderController { + + @Resource + private WorkOrderService workOrderService; + + @PostMapping("/create") + @Operation(summary = "创建工单") + @PreAuthorize("@ss.hasPermission('xxjj:work-order:create')") + public CommonResult createWorkOrder(@Valid @RequestBody WorkOrderCreateReqVO createReqVO) { + return success(workOrderService.createWorkOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工单") + @PreAuthorize("@ss.hasPermission('xxjj:work-order:update')") + public CommonResult updateWorkOrder(@Valid @RequestBody WorkOrderUpdateReqVO updateReqVO) { + workOrderService.updateWorkOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:work-order:delete')") + public CommonResult deleteWorkOrder(@RequestParam("id") Long id) { + workOrderService.deleteWorkOrder(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:work-order:query')") + public CommonResult getWorkOrder(@RequestParam("id") Long id) { + WorkOrderDO workOrder = workOrderService.getWorkOrder(id); + return success(WorkOrderConvert.INSTANCE.convert(workOrder)); + } + + @GetMapping("/list") + @Operation(summary = "获得工单列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:work-order:query')") + public CommonResult> getWorkOrderList(@RequestParam("ids") Collection ids) { + List list = workOrderService.getWorkOrderList(ids); + return success(WorkOrderConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得工单分页") + @PreAuthorize("@ss.hasPermission('xxjj:work-order:query')") + public CommonResult> getWorkOrderPage(@Valid WorkOrderPageReqVO pageVO) { + PageResult pageResult = workOrderService.getWorkOrderPage(pageVO); + return success(WorkOrderConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工单 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:work-order:export')") + @OperateLog(type = EXPORT) + public void exportWorkOrderExcel(@Valid WorkOrderExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = workOrderService.getWorkOrderList(exportReqVO); + // 导出 Excel + List datas = WorkOrderConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "工单.xls", "数据", WorkOrderExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderBaseVO.java new file mode 100644 index 0000000..0fb21c3 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderBaseVO.java @@ -0,0 +1,39 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; + +/** + * 工单 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class WorkOrderBaseVO { + + @Schema(description = "工单标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotNull(message = "工单标题不能为空") + private String workorderName; + + @Schema(description = "客户id", example = "31094") + private Long customerId; + + @Schema(description = "供应商id", example = "25974") + private Long supplierId; + + @Schema(description = "订单id", example = "16262") + private Long orderId; + + @Schema(description = "工单类型", example = "1") + private String workorderType; + + @Schema(description = "紧要程度") + private String criticality; + + @Schema(description = "描述", example = "你说的对") + private String remark; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderCreateReqVO.java new file mode 100644 index 0000000..4908a76 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 工单创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkOrderCreateReqVO extends WorkOrderBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderExcelVO.java new file mode 100644 index 0000000..702e3af --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderExcelVO.java @@ -0,0 +1,46 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 工单 Excel VO + * + * @author 芋道源码 + */ +@Data +public class WorkOrderExcelVO { + + @ExcelProperty("编号") + private Long id; + + @ExcelProperty("工单标题") + private String workorderName; + + @ExcelProperty("客户id") + private Long customerId; + + @ExcelProperty("供应商id") + private Long supplierId; + + @ExcelProperty("订单id") + private Long orderId; + + @ExcelProperty("工单类型") + private String workorderType; + + @ExcelProperty("紧要程度") + private String criticality; + + @ExcelProperty("描述") + private String remark; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderExportReqVO.java new file mode 100644 index 0000000..7f48830 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderExportReqVO.java @@ -0,0 +1,41 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工单 Excel 导出 Request VO,参数和 WorkOrderPageReqVO 是一致的") +@Data +public class WorkOrderExportReqVO { + + @Schema(description = "工单标题", example = "芋艿") + private String workorderName; + + @Schema(description = "客户id", example = "31094") + private Long customerId; + + @Schema(description = "供应商id", example = "25974") + private Long supplierId; + + @Schema(description = "订单id", example = "16262") + private Long orderId; + + @Schema(description = "工单类型", example = "1") + private String workorderType; + + @Schema(description = "紧要程度") + private String criticality; + + @Schema(description = "描述", example = "你说的对") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderPageReqVO.java new file mode 100644 index 0000000..50feca3 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderPageReqVO.java @@ -0,0 +1,43 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工单分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkOrderPageReqVO extends PageParam { + + @Schema(description = "工单标题", example = "芋艿") + private String workorderName; + + @Schema(description = "客户id", example = "31094") + private Long customerId; + + @Schema(description = "供应商id", example = "25974") + private Long supplierId; + + @Schema(description = "订单id", example = "16262") + private Long orderId; + + @Schema(description = "工单类型", example = "1") + private String workorderType; + + @Schema(description = "紧要程度") + private String criticality; + + @Schema(description = "描述", example = "你说的对") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderRespVO.java new file mode 100644 index 0000000..9d149ae --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 工单 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkOrderRespVO extends WorkOrderBaseVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1304") + private Long id; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderUpdateReqVO.java new file mode 100644 index 0000000..57ad6a4 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workorder/vo/WorkOrderUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 工单更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkOrderUpdateReqVO extends WorkOrderBaseVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1304") + @NotNull(message = "编号不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/supplier/SupplierConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/supplier/SupplierConvert.java new file mode 100644 index 0000000..1d33277 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/supplier/SupplierConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.supplier; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.supplier.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.supplier.SupplierDO; + +/** + * 供应商 Convert + * + * @author 长江云息 + */ +@Mapper +public interface SupplierConvert { + + SupplierConvert INSTANCE = Mappers.getMapper(SupplierConvert.class); + + SupplierDO convert(SupplierCreateReqVO bean); + + SupplierDO convert(SupplierUpdateReqVO bean); + + SupplierRespVO convert(SupplierDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/workorder/WorkOrderConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/workorder/WorkOrderConvert.java new file mode 100644 index 0000000..fa5cf93 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/workorder/WorkOrderConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.workorder; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.workorder.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workorder.WorkOrderDO; + +/** + * 工单 Convert + * + * @author 芋道源码 + */ +@Mapper +public interface WorkOrderConvert { + + WorkOrderConvert INSTANCE = Mappers.getMapper(WorkOrderConvert.class); + + WorkOrderDO convert(WorkOrderCreateReqVO bean); + + WorkOrderDO convert(WorkOrderUpdateReqVO bean); + + WorkOrderRespVO convert(WorkOrderDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/customer/CustomerDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/customer/CustomerDO.java index ec79801..52e9123 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/customer/CustomerDO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/customer/CustomerDO.java @@ -1,5 +1,7 @@ package com.yunxi.scm.module.xxjj.dal.dataobject.customer; +import com.yunxi.scm.framework.common.enums.CommonStatusEnum; +import com.yunxi.scm.framework.mybatis.core.type.JsonLongSetTypeHandler; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -12,7 +14,7 @@ import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; * * @author 芋道源码 */ -@TableName("xxjj_customer") +@TableName(value = "xxjj_customer", autoResultMap = true) @KeySequence("xxjj_customer_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @@ -53,11 +55,14 @@ public class CustomerDO extends BaseDO { private Long linebusinessId; /** * 状态 + * + * 枚举 {@link CommonStatusEnum} */ private String status; /** * 归属人员 */ - private String belongingPeople; + @TableField(typeHandler = JsonLongSetTypeHandler.class) + private Set belongingPeople; } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/supplier/SupplierDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/supplier/SupplierDO.java new file mode 100644 index 0000000..7b4ae69 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/supplier/SupplierDO.java @@ -0,0 +1,65 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.supplier; + +import com.yunxi.scm.framework.mybatis.core.type.JsonLongSetTypeHandler; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 供应商 DO + * + * @author 长江云息 + */ +@TableName(value = "xxjj_supplier" , autoResultMap = true) +@KeySequence("xxjj_supplier_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SupplierDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 客户名称 + */ + private String supplierName; + /** + * 客户类型 + */ + private String supplierType; + /** + * 统一结算主体 + */ + private String unifiedSettlement; + /** + * 客户性质 + */ + private String supplierNature; + /** + * 合作模式 + */ + private String cooperationMode; + /** + * 隶属业务线 + */ + private Long linebusinessId; + /** + * 状态 + */ + private String status; + /** + * 归属人员 + */ + @TableField(typeHandler = JsonLongSetTypeHandler.class) + private Set belongingPeople; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/workorder/WorkOrderDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/workorder/WorkOrderDO.java new file mode 100644 index 0000000..8a8f3d8 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/workorder/WorkOrderDO.java @@ -0,0 +1,59 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.workorder; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工单 DO + * + * @author 芋道源码 + */ +@TableName("xxjj_work_order") +@KeySequence("xxjj_work_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WorkOrderDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 工单标题 + */ + private String workorderName; + /** + * 客户id + */ + private Long customerId; + /** + * 供应商id + */ + private Long supplierId; + /** + * 订单id + */ + private Long orderId; + /** + * 工单类型 + */ + private String workorderType; + /** + * 紧要程度 + */ + private String criticality; + /** + * 描述 + */ + private String remark; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/customer/CustomerMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/customer/CustomerMapper.java index 16f1c0d..c5782e8 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/customer/CustomerMapper.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/customer/CustomerMapper.java @@ -8,8 +8,6 @@ import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; import com.yunxi.scm.module.xxjj.dal.dataobject.customer.CustomerDO; import org.apache.ibatis.annotations.Mapper; import com.yunxi.scm.module.xxjj.controller.admin.customer.vo.*; -import org.apache.ibatis.annotations.Param; -import org.checkerframework.checker.units.qual.C; /** * 客户信息 Mapper @@ -28,7 +26,6 @@ public interface CustomerMapper extends BaseMapperX { .eqIfPresent(CustomerDO::getCooperationMode, reqVO.getCooperationMode()) .eqIfPresent(CustomerDO::getLinebusinessId, reqVO.getLinebusinessId()) .eqIfPresent(CustomerDO::getStatus, reqVO.getStatus()) - .eqIfPresent(CustomerDO::getBelongingPeople, reqVO.getBelongingPeople()) .betweenIfPresent(CustomerDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(CustomerDO::getUpdateTime, reqVO.getUpdateTime()) .orderByDesc(CustomerDO::getId)); @@ -43,12 +40,16 @@ public interface CustomerMapper extends BaseMapperX { .eqIfPresent(CustomerDO::getCooperationMode, reqVO.getCooperationMode()) .eqIfPresent(CustomerDO::getLinebusinessId, reqVO.getLinebusinessId()) .eqIfPresent(CustomerDO::getStatus, reqVO.getStatus()) - .eqIfPresent(CustomerDO::getBelongingPeople, reqVO.getBelongingPeople()) .betweenIfPresent(CustomerDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(CustomerDO::getUpdateTime, reqVO.getUpdateTime()) .orderByDesc(CustomerDO::getId)); } - List queryCustomerTree(@Param("id") Long id); + default List selectcustomerList(CustomerRespVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(CustomerDO::getCustomerName, reqVO.getCustomerName()) + .eqIfPresent(CustomerDO::getStatus, reqVO.getStatus())); + + } } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/supplier/SupplierMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/supplier/SupplierMapper.java new file mode 100644 index 0000000..73fb8ee --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/supplier/SupplierMapper.java @@ -0,0 +1,57 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.supplier; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.customer.CustomerDO; +import com.yunxi.scm.module.xxjj.dal.dataobject.supplier.SupplierDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.supplier.vo.*; + +/** + * 供应商 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface SupplierMapper extends BaseMapperX { + + default PageResult selectPage(SupplierPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(SupplierDO::getSupplierName, reqVO.getSupplierName()) + .eqIfPresent(SupplierDO::getSupplierType, reqVO.getSupplierType()) + .eqIfPresent(SupplierDO::getUnifiedSettlement, reqVO.getUnifiedSettlement()) + .eqIfPresent(SupplierDO::getSupplierNature, reqVO.getSupplierNature()) + .eqIfPresent(SupplierDO::getCooperationMode, reqVO.getCooperationMode()) + .eqIfPresent(SupplierDO::getLinebusinessId, reqVO.getLinebusinessId()) + .eqIfPresent(SupplierDO::getStatus, reqVO.getStatus()) + .eqIfPresent(SupplierDO::getBelongingPeople, reqVO.getBelongingPeople()) + .betweenIfPresent(SupplierDO::getCreateTime, reqVO.getCreateTime()) + .betweenIfPresent(SupplierDO::getUpdateTime, reqVO.getUpdateTime()) + .orderByDesc(SupplierDO::getId)); + } + + default List selectList(SupplierExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(SupplierDO::getSupplierName, reqVO.getSupplierName()) + .eqIfPresent(SupplierDO::getSupplierType, reqVO.getSupplierType()) + .eqIfPresent(SupplierDO::getUnifiedSettlement, reqVO.getUnifiedSettlement()) + .eqIfPresent(SupplierDO::getSupplierNature, reqVO.getSupplierNature()) + .eqIfPresent(SupplierDO::getCooperationMode, reqVO.getCooperationMode()) + .eqIfPresent(SupplierDO::getLinebusinessId, reqVO.getLinebusinessId()) + .eqIfPresent(SupplierDO::getStatus, reqVO.getStatus()) + .eqIfPresent(SupplierDO::getBelongingPeople, reqVO.getBelongingPeople()) + .betweenIfPresent(SupplierDO::getCreateTime, reqVO.getCreateTime()) + .betweenIfPresent(SupplierDO::getUpdateTime, reqVO.getUpdateTime()) + .orderByDesc(SupplierDO::getId)); + } + + default List selectsupplierList(SupplierRespVO reqVO){ + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(SupplierDO::getSupplierName, reqVO.getSupplierName()) + .eqIfPresent(SupplierDO::getStatus, reqVO.getStatus())); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/workorder/WorkOrderMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/workorder/WorkOrderMapper.java new file mode 100644 index 0000000..0258917 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/workorder/WorkOrderMapper.java @@ -0,0 +1,46 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.workorder; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.workorder.WorkOrderDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.workorder.vo.*; + +/** + * 工单 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface WorkOrderMapper extends BaseMapperX { + + default PageResult selectPage(WorkOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(WorkOrderDO::getWorkorderName, reqVO.getWorkorderName()) + .eqIfPresent(WorkOrderDO::getCustomerId, reqVO.getCustomerId()) + .eqIfPresent(WorkOrderDO::getSupplierId, reqVO.getSupplierId()) + .eqIfPresent(WorkOrderDO::getOrderId, reqVO.getOrderId()) + .eqIfPresent(WorkOrderDO::getWorkorderType, reqVO.getWorkorderType()) + .eqIfPresent(WorkOrderDO::getCriticality, reqVO.getCriticality()) + .eqIfPresent(WorkOrderDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(WorkOrderDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WorkOrderDO::getId)); + } + + default List selectList(WorkOrderExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(WorkOrderDO::getWorkorderName, reqVO.getWorkorderName()) + .eqIfPresent(WorkOrderDO::getCustomerId, reqVO.getCustomerId()) + .eqIfPresent(WorkOrderDO::getSupplierId, reqVO.getSupplierId()) + .eqIfPresent(WorkOrderDO::getOrderId, reqVO.getOrderId()) + .eqIfPresent(WorkOrderDO::getWorkorderType, reqVO.getWorkorderType()) + .eqIfPresent(WorkOrderDO::getCriticality, reqVO.getCriticality()) + .eqIfPresent(WorkOrderDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(WorkOrderDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WorkOrderDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java index 703a614..154e84b 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java @@ -17,6 +17,11 @@ public interface ErrorCodeConstants { ErrorCode BRAND_LIBRARY_NOT_EXISTS = new ErrorCode(1002025007, "品牌库不存在"); // ========== 客户信息 TODO 补充编号 ========== ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1002025008, "客户信息不存在"); + // ========== 工单 TODO 补充编号 ========== + ErrorCode WORK_ORDER_NOT_EXISTS = new ErrorCode(1002025009, "工单不存在"); +// ========== 供应商 TODO 补充编号 ========== + ErrorCode SUPPLIER_NOT_EXISTS = new ErrorCode(1002026009, "供应商不存在"); + // ========== 部门模块 1002004000 ========== ErrorCode MaterialCategory_NAME_DUPLICATE = new ErrorCode(1002004000, "已经存在该名字的部门"); ErrorCode MaterialCategory_PARENT_NOT_EXITS = new ErrorCode(1002004001,"父级部门不存在"); diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerService.java index 3b1aab7..1e8fd92 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerService.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerService.java @@ -67,4 +67,11 @@ public interface CustomerService { */ List getCustomerList(CustomerExportReqVO exportReqVO); + /** + * 获得指定状态的客户 + * + * + * @return 客户 + */ + List getCustomerstaus(CustomerRespVO customerRespVO); } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImpl.java index 9bdb1e5..a927e2a 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImpl.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImpl.java @@ -79,4 +79,9 @@ public class CustomerServiceImpl implements CustomerService { return customerMapper.selectList(exportReqVO); } + @Override + public List getCustomerstaus(CustomerRespVO customerRespVO) { + return customerMapper.selectcustomerList(customerRespVO); + } + } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierService.java new file mode 100644 index 0000000..47ee189 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierService.java @@ -0,0 +1,79 @@ +package com.yunxi.scm.module.xxjj.service.supplier; + +import java.util.*; +import javax.validation.*; + +import com.yunxi.scm.module.xxjj.controller.admin.supplier.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.supplier.SupplierDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 供应商 Service 接口 + * + * @author 长江云息 + */ +public interface SupplierService { + + /** + * 创建供应商 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSupplier(@Valid SupplierCreateReqVO createReqVO); + + /** + * 更新供应商 + * + * @param updateReqVO 更新信息 + */ + void updateSupplier(@Valid SupplierUpdateReqVO updateReqVO); + + /** + * 删除供应商 + * + * @param id 编号 + */ + void deleteSupplier(Long id); + + /** + * 获得供应商 + * + * @param id 编号 + * @return 供应商 + */ + SupplierDO getSupplier(Long id); + + /** + * 获得供应商列表 + * + * @param ids 编号 + * @return 供应商列表 + */ + List getSupplierList(Collection ids); + + /** + * 获得供应商分页 + * + * @param pageReqVO 分页查询 + * @return 供应商分页 + */ + PageResult getSupplierPage(SupplierPageReqVO pageReqVO); + + /** + * 获得供应商列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 供应商列表 + */ + List getSupplierList(SupplierExportReqVO exportReqVO); + + /** + * 获得指定状态的客户 + * + * + * @return 客户 + */ + List getSupplierstaus(SupplierRespVO supplierRespVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierServiceImpl.java new file mode 100644 index 0000000..e944b95 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierServiceImpl.java @@ -0,0 +1,87 @@ +package com.yunxi.scm.module.xxjj.service.supplier; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.supplier.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.supplier.SupplierDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.supplier.SupplierConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.supplier.SupplierMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 供应商 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class SupplierServiceImpl implements SupplierService { + + @Resource + private SupplierMapper supplierMapper; + + @Override + public Long createSupplier(SupplierCreateReqVO createReqVO) { + // 插入 + SupplierDO supplier = SupplierConvert.INSTANCE.convert(createReqVO); + supplierMapper.insert(supplier); + // 返回 + return supplier.getId(); + } + + @Override + public void updateSupplier(SupplierUpdateReqVO updateReqVO) { + // 校验存在 + validateSupplierExists(updateReqVO.getId()); + // 更新 + SupplierDO updateObj = SupplierConvert.INSTANCE.convert(updateReqVO); + supplierMapper.updateById(updateObj); + } + + @Override + public void deleteSupplier(Long id) { + // 校验存在 + validateSupplierExists(id); + // 删除 + supplierMapper.deleteById(id); + } + + private void validateSupplierExists(Long id) { + if (supplierMapper.selectById(id) == null) { + throw exception(SUPPLIER_NOT_EXISTS); + } + } + + @Override + public SupplierDO getSupplier(Long id) { + return supplierMapper.selectById(id); + } + + @Override + public List getSupplierList(Collection ids) { + return supplierMapper.selectBatchIds(ids); + } + + @Override + public PageResult getSupplierPage(SupplierPageReqVO pageReqVO) { + return supplierMapper.selectPage(pageReqVO); + } + + @Override + public List getSupplierList(SupplierExportReqVO exportReqVO) { + return supplierMapper.selectList(exportReqVO); + } + + @Override + public List getSupplierstaus(SupplierRespVO supplierRespVO) { + return supplierMapper.selectsupplierList(supplierRespVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderService.java new file mode 100644 index 0000000..ae5cd70 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.workorder; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.workorder.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workorder.WorkOrderDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 工单 Service 接口 + * + * @author 芋道源码 + */ +public interface WorkOrderService { + + /** + * 创建工单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWorkOrder(@Valid WorkOrderCreateReqVO createReqVO); + + /** + * 更新工单 + * + * @param updateReqVO 更新信息 + */ + void updateWorkOrder(@Valid WorkOrderUpdateReqVO updateReqVO); + + /** + * 删除工单 + * + * @param id 编号 + */ + void deleteWorkOrder(Long id); + + /** + * 获得工单 + * + * @param id 编号 + * @return 工单 + */ + WorkOrderDO getWorkOrder(Long id); + + /** + * 获得工单列表 + * + * @param ids 编号 + * @return 工单列表 + */ + List getWorkOrderList(Collection ids); + + /** + * 获得工单分页 + * + * @param pageReqVO 分页查询 + * @return 工单分页 + */ + PageResult getWorkOrderPage(WorkOrderPageReqVO pageReqVO); + + /** + * 获得工单列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 工单列表 + */ + List getWorkOrderList(WorkOrderExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderServiceImpl.java new file mode 100644 index 0000000..e84f5ff --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.workorder; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.workorder.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workorder.WorkOrderDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.workorder.WorkOrderConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.workorder.WorkOrderMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 工单 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class WorkOrderServiceImpl implements WorkOrderService { + + @Resource + private WorkOrderMapper workOrderMapper; + + @Override + public Long createWorkOrder(WorkOrderCreateReqVO createReqVO) { + // 插入 + WorkOrderDO workOrder = WorkOrderConvert.INSTANCE.convert(createReqVO); + workOrderMapper.insert(workOrder); + // 返回 + return workOrder.getId(); + } + + @Override + public void updateWorkOrder(WorkOrderUpdateReqVO updateReqVO) { + // 校验存在 + validateWorkOrderExists(updateReqVO.getId()); + // 更新 + WorkOrderDO updateObj = WorkOrderConvert.INSTANCE.convert(updateReqVO); + workOrderMapper.updateById(updateObj); + } + + @Override + public void deleteWorkOrder(Long id) { + // 校验存在 + validateWorkOrderExists(id); + // 删除 + workOrderMapper.deleteById(id); + } + + private void validateWorkOrderExists(Long id) { + if (workOrderMapper.selectById(id) == null) { + throw exception(WORK_ORDER_NOT_EXISTS); + } + } + + @Override + public WorkOrderDO getWorkOrder(Long id) { + return workOrderMapper.selectById(id); + } + + @Override + public List getWorkOrderList(Collection ids) { + return workOrderMapper.selectBatchIds(ids); + } + + @Override + public PageResult getWorkOrderPage(WorkOrderPageReqVO pageReqVO) { + return workOrderMapper.selectPage(pageReqVO); + } + + @Override + public List getWorkOrderList(WorkOrderExportReqVO exportReqVO) { + return workOrderMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/supplier/SupplierMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/supplier/SupplierMapper.xml new file mode 100644 index 0000000..6cd9f46 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/supplier/SupplierMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/workorder/WorkOrderMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/workorder/WorkOrderMapper.xml new file mode 100644 index 0000000..13adc7c --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/workorder/WorkOrderMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImplTest.java index 564009d..504e911 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImplTest.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/customer/CustomerServiceImplTest.java @@ -151,7 +151,7 @@ public class CustomerServiceImplTest extends BaseDbUnitTest { reqVO.setCooperationMode(null); reqVO.setLinebusinessId(null); reqVO.setStatus(null); - reqVO.setBelongingPeople(null); +// reqVO.setBelongingPeople(null); reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); reqVO.setUpdateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierServiceImplTest.java new file mode 100644 index 0000000..429c2eb --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/supplier/SupplierServiceImplTest.java @@ -0,0 +1,215 @@ +package com.yunxi.scm.module.xxjj.service.supplier; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.supplier.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.supplier.SupplierDO; +import com.yunxi.scm.module.xxjj.dal.mysql.supplier.SupplierMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link SupplierServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(SupplierServiceImpl.class) +public class SupplierServiceImplTest extends BaseDbUnitTest { + + @Resource + private SupplierServiceImpl supplierService; + + @Resource + private SupplierMapper supplierMapper; + + @Test + public void testCreateSupplier_success() { + // 准备参数 + SupplierCreateReqVO reqVO = randomPojo(SupplierCreateReqVO.class); + + // 调用 + Long supplierId = supplierService.createSupplier(reqVO); + // 断言 + assertNotNull(supplierId); + // 校验记录的属性是否正确 + SupplierDO supplier = supplierMapper.selectById(supplierId); + assertPojoEquals(reqVO, supplier); + } + + @Test + public void testUpdateSupplier_success() { + // mock 数据 + SupplierDO dbSupplier = randomPojo(SupplierDO.class); + supplierMapper.insert(dbSupplier);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SupplierUpdateReqVO reqVO = randomPojo(SupplierUpdateReqVO.class, o -> { + o.setId(dbSupplier.getId()); // 设置更新的 ID + }); + + // 调用 + supplierService.updateSupplier(reqVO); + // 校验是否更新正确 + SupplierDO supplier = supplierMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, supplier); + } + + @Test + public void testUpdateSupplier_notExists() { + // 准备参数 + SupplierUpdateReqVO reqVO = randomPojo(SupplierUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> supplierService.updateSupplier(reqVO), SUPPLIER_NOT_EXISTS); + } + + @Test + public void testDeleteSupplier_success() { + // mock 数据 + SupplierDO dbSupplier = randomPojo(SupplierDO.class); + supplierMapper.insert(dbSupplier);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbSupplier.getId(); + + // 调用 + supplierService.deleteSupplier(id); + // 校验数据不存在了 + assertNull(supplierMapper.selectById(id)); + } + + @Test + public void testDeleteSupplier_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> supplierService.deleteSupplier(id), SUPPLIER_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSupplierPage() { + // mock 数据 + SupplierDO dbSupplier = randomPojo(SupplierDO.class, o -> { // 等会查询到 + o.setSupplierName(null); + o.setSupplierType(null); + o.setUnifiedSettlement(null); + o.setSupplierNature(null); + o.setCooperationMode(null); + o.setLinebusinessId(null); + o.setStatus(null); + o.setBelongingPeople(null); + o.setCreateTime(null); + }); + supplierMapper.insert(dbSupplier); + // 测试 supplierName 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setSupplierName(null))); + // 测试 supplierType 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setSupplierType(null))); + // 测试 unifiedSettlement 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setUnifiedSettlement(null))); + // 测试 supplierNature 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setSupplierNature(null))); + // 测试 cooperationMode 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setCooperationMode(null))); + // 测试 linebusinessId 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setLinebusinessId(null))); + // 测试 status 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setStatus(null))); + // 测试 belongingPeople 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setBelongingPeople(null))); + // 测试 createTime 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setCreateTime(null))); + // 准备参数 + SupplierPageReqVO reqVO = new SupplierPageReqVO(); + reqVO.setSupplierName(null); + reqVO.setSupplierType(null); + reqVO.setUnifiedSettlement(null); + reqVO.setSupplierNature(null); + reqVO.setCooperationMode(null); + reqVO.setLinebusinessId(null); + reqVO.setStatus(null); + reqVO.setBelongingPeople(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = supplierService.getSupplierPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbSupplier, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSupplierList() { + // mock 数据 + SupplierDO dbSupplier = randomPojo(SupplierDO.class, o -> { // 等会查询到 + o.setSupplierName(null); + o.setSupplierType(null); + o.setUnifiedSettlement(null); + o.setSupplierNature(null); + o.setCooperationMode(null); + o.setLinebusinessId(null); + o.setStatus(null); + o.setBelongingPeople(null); + o.setCreateTime(null); + }); + supplierMapper.insert(dbSupplier); + // 测试 supplierName 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setSupplierName(null))); + // 测试 supplierType 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setSupplierType(null))); + // 测试 unifiedSettlement 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setUnifiedSettlement(null))); + // 测试 supplierNature 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setSupplierNature(null))); + // 测试 cooperationMode 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setCooperationMode(null))); + // 测试 linebusinessId 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setLinebusinessId(null))); + // 测试 status 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setStatus(null))); + // 测试 belongingPeople 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setBelongingPeople(null))); + // 测试 createTime 不匹配 + supplierMapper.insert(cloneIgnoreId(dbSupplier, o -> o.setCreateTime(null))); + // 准备参数 + SupplierExportReqVO reqVO = new SupplierExportReqVO(); + reqVO.setSupplierName(null); + reqVO.setSupplierType(null); + reqVO.setUnifiedSettlement(null); + reqVO.setSupplierNature(null); + reqVO.setCooperationMode(null); + reqVO.setLinebusinessId(null); + reqVO.setStatus(null); + reqVO.setBelongingPeople(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = supplierService.getSupplierList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbSupplier, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderServiceImplTest.java new file mode 100644 index 0000000..e209209 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/workorder/WorkOrderServiceImplTest.java @@ -0,0 +1,207 @@ +package com.yunxi.scm.module.xxjj.service.workorder; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.workorder.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workorder.WorkOrderDO; +import com.yunxi.scm.module.xxjj.dal.mysql.workorder.WorkOrderMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link WorkOrderServiceImpl} 的单元测试类 + * + * @author 芋道源码 + */ +@Import(WorkOrderServiceImpl.class) +public class WorkOrderServiceImplTest extends BaseDbUnitTest { + + @Resource + private WorkOrderServiceImpl workOrderService; + + @Resource + private WorkOrderMapper workOrderMapper; + + @Test + public void testCreateWorkOrder_success() { + // 准备参数 + WorkOrderCreateReqVO reqVO = randomPojo(WorkOrderCreateReqVO.class); + + // 调用 + Long workOrderId = workOrderService.createWorkOrder(reqVO); + // 断言 + assertNotNull(workOrderId); + // 校验记录的属性是否正确 + WorkOrderDO workOrder = workOrderMapper.selectById(workOrderId); + assertPojoEquals(reqVO, workOrder); + } + + @Test + public void testUpdateWorkOrder_success() { + // mock 数据 + WorkOrderDO dbWorkOrder = randomPojo(WorkOrderDO.class); + workOrderMapper.insert(dbWorkOrder);// @Sql: 先插入出一条存在的数据 + // 准备参数 + WorkOrderUpdateReqVO reqVO = randomPojo(WorkOrderUpdateReqVO.class, o -> { + o.setId(dbWorkOrder.getId()); // 设置更新的 ID + }); + + // 调用 + workOrderService.updateWorkOrder(reqVO); + // 校验是否更新正确 + WorkOrderDO workOrder = workOrderMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, workOrder); + } + + @Test + public void testUpdateWorkOrder_notExists() { + // 准备参数 + WorkOrderUpdateReqVO reqVO = randomPojo(WorkOrderUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> workOrderService.updateWorkOrder(reqVO), WORK_ORDER_NOT_EXISTS); + } + + @Test + public void testDeleteWorkOrder_success() { + // mock 数据 + WorkOrderDO dbWorkOrder = randomPojo(WorkOrderDO.class); + workOrderMapper.insert(dbWorkOrder);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbWorkOrder.getId(); + + // 调用 + workOrderService.deleteWorkOrder(id); + // 校验数据不存在了 + assertNull(workOrderMapper.selectById(id)); + } + + @Test + public void testDeleteWorkOrder_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> workOrderService.deleteWorkOrder(id), WORK_ORDER_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetWorkOrderPage() { + // mock 数据 + WorkOrderDO dbWorkOrder = randomPojo(WorkOrderDO.class, o -> { // 等会查询到 + o.setWorkorderName(null); + o.setCustomerId(null); + o.setSupplierId(null); + o.setOrderId(null); + o.setWorkorderType(null); + o.setCriticality(null); + o.setRemark(null); + o.setCreateTime(null); + }); + workOrderMapper.insert(dbWorkOrder); + // 测试 workorderName 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setWorkorderName(null))); + // 测试 customerId 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setCustomerId(null))); + // 测试 supplierId 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setSupplierId(null))); + // 测试 orderId 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setOrderId(null))); + // 测试 workorderType 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setWorkorderType(null))); + // 测试 criticality 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setCriticality(null))); + // 测试 remark 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setRemark(null))); + // 测试 createTime 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setCreateTime(null))); + // 准备参数 + WorkOrderPageReqVO reqVO = new WorkOrderPageReqVO(); + reqVO.setWorkorderName(null); + reqVO.setCustomerId(null); + reqVO.setSupplierId(null); + reqVO.setOrderId(null); + reqVO.setWorkorderType(null); + reqVO.setCriticality(null); + reqVO.setRemark(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = workOrderService.getWorkOrderPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbWorkOrder, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetWorkOrderList() { + // mock 数据 + WorkOrderDO dbWorkOrder = randomPojo(WorkOrderDO.class, o -> { // 等会查询到 + o.setWorkorderName(null); + o.setCustomerId(null); + o.setSupplierId(null); + o.setOrderId(null); + o.setWorkorderType(null); + o.setCriticality(null); + o.setRemark(null); + o.setCreateTime(null); + }); + workOrderMapper.insert(dbWorkOrder); + // 测试 workorderName 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setWorkorderName(null))); + // 测试 customerId 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setCustomerId(null))); + // 测试 supplierId 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setSupplierId(null))); + // 测试 orderId 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setOrderId(null))); + // 测试 workorderType 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setWorkorderType(null))); + // 测试 criticality 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setCriticality(null))); + // 测试 remark 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setRemark(null))); + // 测试 createTime 不匹配 + workOrderMapper.insert(cloneIgnoreId(dbWorkOrder, o -> o.setCreateTime(null))); + // 准备参数 + WorkOrderExportReqVO reqVO = new WorkOrderExportReqVO(); + reqVO.setWorkorderName(null); + reqVO.setCustomerId(null); + reqVO.setSupplierId(null); + reqVO.setOrderId(null); + reqVO.setWorkorderType(null); + reqVO.setCriticality(null); + reqVO.setRemark(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = workOrderService.getWorkOrderList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbWorkOrder, list.get(0)); + } + +} diff --git a/yunxi-server/pom.xml b/yunxi-server/pom.xml index 7b13708..14456cd 100644 --- a/yunxi-server/pom.xml +++ b/yunxi-server/pom.xml @@ -61,11 +61,11 @@ ${revision} - - - - - + + com.yunxi.scm + yunxi-module-bpm-biz + ${revision} + diff --git a/yunxi-ui-admin/src/api/system/user.js b/yunxi-ui-admin/src/api/system/user.js index ffa08da..78aadc6 100644 --- a/yunxi-ui-admin/src/api/system/user.js +++ b/yunxi-ui-admin/src/api/system/user.js @@ -135,3 +135,11 @@ export function importTemplate() { responseType: 'blob' }) } + +// 获取用户组精简信息列表 +export function listSimpleUserGroups11() { + return request({ + url: '/system/user/list-all-simpleuser', + method: 'get' + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/customer.js b/yunxi-ui-admin/src/api/xxjj/customer.js index 45f2499..3a694d5 100644 --- a/yunxi-ui-admin/src/api/xxjj/customer.js +++ b/yunxi-ui-admin/src/api/xxjj/customer.js @@ -52,3 +52,20 @@ export function exportCustomerExcel(query) { responseType: 'blob' }) } + +// 创建工单 +export function createCustomerwork(data) { + return request({ + url: '/xxjj/customer/creatework', + method: 'post', + data: data + }) +} + +// 获取客户精简信息列表 +export function listSimpleCustomerid() { + return request({ + url: '/xxjj/customer/list-all-simplecustomer', + method: 'get' + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/supplier.js b/yunxi-ui-admin/src/api/xxjj/supplier.js new file mode 100644 index 0000000..a53c0fc --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/supplier.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 创建供应商 +export function createSupplier(data) { + return request({ + url: '/xxjj/supplier/create', + method: 'post', + data: data + }) +} + +// 更新供应商 +export function updateSupplier(data) { + return request({ + url: '/xxjj/supplier/update', + method: 'put', + data: data + }) +} + +// 删除供应商 +export function deleteSupplier(id) { + return request({ + url: '/xxjj/supplier/delete?id=' + id, + method: 'delete' + }) +} + +// 获得供应商 +export function getSupplier(id) { + return request({ + url: '/xxjj/supplier/get?id=' + id, + method: 'get' + }) +} + +// 获得供应商分页 +export function getSupplierPage(query) { + return request({ + url: '/xxjj/supplier/page', + method: 'get', + params: query + }) +} + +// 导出供应商 Excel +export function exportSupplierExcel(query) { + return request({ + url: '/xxjj/supplier/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} + +// 获取供应商精简信息列表 +export function listSimpleSupplierId() { + return request({ + url: '/xxjj/supplier/list-all-simplesupplier', + method: 'get' + }) +} diff --git a/yunxi-ui-admin/src/utils/constants.js b/yunxi-ui-admin/src/utils/constants.js index a233871..3a7763a 100644 --- a/yunxi-ui-admin/src/utils/constants.js +++ b/yunxi-ui-admin/src/utils/constants.js @@ -364,3 +364,17 @@ export const customerstatus = { name: '关闭' } } + +/** + * 树状列表 + */ + export const TreeEnum = { + WAREHOUSE: { + status: 0, + name: '开启' + }, + CLOSE: { + status: 1, + name: '关闭' + } +} diff --git a/yunxi-ui-admin/src/utils/dict.js b/yunxi-ui-admin/src/utils/dict.js index 83d7381..6b501e5 100644 --- a/yunxi-ui-admin/src/utils/dict.js +++ b/yunxi-ui-admin/src/utils/dict.js @@ -102,12 +102,19 @@ export const DICT_TYPE = { CUSTOMER_NATUER: 'customer_nature', //客户性质 COOPERATION_MODE: 'cooperation_mode', //客户合作模式 + // ============= BUSINESSLINE 模块================= BUSINESS_TYPE: 'business_type', //业务线类型 // ============= WAREHOUSE 模块================= WAREHOUSE_TYPE: 'warehouse_type', //仓库类型 + + WORK_TYPE: 'work_type', //工单类型 + // ============= SUPPLIER 模块================= + SUPPLIER_TYPE: 'supplier_type', //供应商类型 + SUPPLIER_NATURE1: 'supplier_nature', //供应商性质 + } /** diff --git a/yunxi-ui-admin/src/views/xxjj/businessLine/index.vue b/yunxi-ui-admin/src/views/xxjj/businessLine/index.vue index 9e59a0d..cbbb3cf 100644 --- a/yunxi-ui-admin/src/views/xxjj/businessLine/index.vue +++ b/yunxi-ui-admin/src/views/xxjj/businessLine/index.vue @@ -1,45 +1,113 @@ diff --git a/yunxi-ui-admin/src/views/xxjj/customer/index.vue b/yunxi-ui-admin/src/views/xxjj/customer/index.vue index dd78acf..209c608 100644 --- a/yunxi-ui-admin/src/views/xxjj/customer/index.vue +++ b/yunxi-ui-admin/src/views/xxjj/customer/index.vue @@ -1,134 +1,59 @@ diff --git a/yunxi-ui-admin/src/views/xxjj/supplier/index.vue b/yunxi-ui-admin/src/views/xxjj/supplier/index.vue new file mode 100644 index 0000000..352b8e8 --- /dev/null +++ b/yunxi-ui-admin/src/views/xxjj/supplier/index.vue @@ -0,0 +1,549 @@ + + + diff --git a/yunxi-ui-admin/src/views/xxjj/warehouse/index.vue b/yunxi-ui-admin/src/views/xxjj/warehouse/index.vue index 2c6cc1c..9f3ab79 100644 --- a/yunxi-ui-admin/src/views/xxjj/warehouse/index.vue +++ b/yunxi-ui-admin/src/views/xxjj/warehouse/index.vue @@ -1,36 +1,89 @@