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 d047c0a..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
@@ -26,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));
@@ -41,10 +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));
}
+ 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 a08039b..47b6ce1 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/dict.js b/yunxi-ui-admin/src/utils/dict.js
index 8e96091..c56132d 100644
--- a/yunxi-ui-admin/src/utils/dict.js
+++ b/yunxi-ui-admin/src/utils/dict.js
@@ -101,7 +101,10 @@ export const DICT_TYPE = {
CUSTOMER_TYPE: 'customer_type', //客户类型
CUSTOMER_NATUER: 'customer_nature', //客户性质
COOPERATION_MODE: 'cooperation_mode', //客户合作模式
-
+ WORK_TYPE: 'work_type', //工单类型
+ // ============= SUPPLIER 模块=================
+ SUPPLIER_TYPE: 'supplier_type', //供应商类型
+ SUPPLIER_NATURE1: 'supplier_nature', //供应商性质
}
/**
diff --git a/yunxi-ui-admin/src/views/xxjj/customer/index.vue b/yunxi-ui-admin/src/views/xxjj/customer/index.vue
index 328a0a9..209c608 100644
--- a/yunxi-ui-admin/src/views/xxjj/customer/index.vue
+++ b/yunxi-ui-admin/src/views/xxjj/customer/index.vue
@@ -36,9 +36,14 @@
:key="dict.value" :label="dict.label" :value="dict.value"/>
-
-
+
+
+
+
+
+
+
@@ -63,11 +68,17 @@
导出
+
+
+ 新建工单
+
+
-
+
@@ -102,6 +113,15 @@
+
+
+
+ {{ getUserNickname(userId) }}
+
+
+
+
+
{{ parseTime(scope.row.createTime) }}
@@ -123,128 +143,12 @@
删除
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ parseTime(scope.row.createTime) }}
-
-
-
-
- {{ parseTime(scope.row.updateTime) }}
-
-
-
-
- 修改
-
- {{scope.row.status == 0 ? '禁用' : '启用'}}
-
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ parseTime(scope.row.createTime) }}
-
-
-
-
- {{ parseTime(scope.row.updateTime) }}
-
-
-
-
- 修改
-
- {{scope.row.status == 0 ? '禁用' : '启用'}}
-
- 删除
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+ 新增
+
+
+ 导出
+
+
+
+ 新建工单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getUserNickname(userId) }}
+
+
+
+
+
+
+ {{ parseTime(scope.row.createTime) }}
+
+
+
+
+
+ {{ parseTime(scope.row.updateTime) }}
+
+
+
+
+
+ 修改
+
+ {{scope.row.status == 0 ? '禁用' : '启用'}}
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+