Merge branch 'tx'

# Conflicts:
#	pom.xml
ccongli-dev-0920
tengxi 1 year ago
commit 86f9109496

@ -17,9 +17,9 @@
<module>yunxi-module-system</module>
<module>yunxi-module-infra</module>
<!-- <module>yunxi-module-pay</module>-->
<!-- <module>yunxi-module-bpm</module>-->
<!-- 大屏报表功能 -->
<module>yunxi-module-report</module>
<module>yunxi-module-bpm</module>
<!-- <module>yunxi-module-mp</module>-->
<!-- <module>yunxi-module-mall</module>-->
<!-- 示例项目 -->

@ -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")

@ -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;
}

@ -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<List<UserSimpleRespVO>> getSimpleDeptListuser() {
// 获得部门列表,只要开启状态的
UserRespVO reqVO = new UserRespVO();
reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
List<AdminUserDO> list = userService.getselectuser(reqVO);
// 排序后,返回给前端
list.sort(Comparator.comparing(AdminUserDO::getId));
return success(UserConvert.INSTANCE.convertList04(list));
}
}

@ -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;
}

@ -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;
}

@ -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;
/**
*
*

@ -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<AdminUserDO> {
return selectList(AdminUserDO::getDeptId, deptIds);
}
default List<AdminUserDO> selectuserList(UserRespVO reqVO) {
return selectList(new LambdaQueryWrapperX<AdminUserDO>()
.likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
.likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
.eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
.inIfPresent(AdminUserDO::getDeptId, reqVO.getDeptId()));
}
}

@ -209,4 +209,7 @@ public interface AdminUserService {
*/
boolean isPasswordMatch(String rawPassword, String encodedPassword);
List<AdminUserDO> getselectuser(UserRespVO reqVO);
}

@ -443,6 +443,11 @@ public class AdminUserServiceImpl implements AdminUserService {
return passwordEncoder.matches(rawPassword, encodedPassword);
}
@Override
public List<AdminUserDO> getselectuser(UserRespVO reqVO) {
return userMapper.selectuserList(reqVO);
}
/**
*
*

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.system.dal.mysql.dept.DeptMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -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<Long> createCustomer(@Valid @RequestBody CustomerCreateReqVO createReqVO) {
public CommonResult<Long> createCustomerwork(@Valid @RequestBody CustomerCreateReqVO createReqVO) {
return success(customerService.createCustomer(createReqVO));
}
@PostMapping("/creatework")
@Operation(summary = "创建工单")
@PreAuthorize("@ss.hasPermission('xxjj:customer:creatework')")
public CommonResult<Long> 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<List<CustomerRespVO>> getCustomerId() {
CustomerRespVO customerRespVO=new CustomerRespVO();
String status=Integer.toString(CommonStatusEnum.ENABLE.getStatus());
customerRespVO.setStatus(status);
List<CustomerDO> list = customerService.getCustomerstaus(customerRespVO);
return success(CustomerConvert.INSTANCE.convertList(list));
}
}

@ -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<Long> belongingPeople;
}

@ -41,7 +41,7 @@ public class CustomerExcelVO {
private String status;
@ExcelProperty("归属人员")
private String belongingPeople;
private Set<Long> belongingPeople;
@ExcelProperty("创建时间")
private LocalDateTime createTime;

@ -37,7 +37,7 @@ public class CustomerPageReqVO extends PageParam {
private String status;
@Schema(description = "归属人员")
private String belongingPeople;
private Set<Long> belongingPeople;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

@ -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<Long> createSupplier(@Valid @RequestBody SupplierCreateReqVO createReqVO) {
return success(supplierService.createSupplier(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新供应商")
@PreAuthorize("@ss.hasPermission('xxjj:supplier:update')")
public CommonResult<Boolean> 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<Boolean> 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<SupplierRespVO> 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<List<SupplierRespVO>> getSupplierList(@RequestParam("ids") Collection<Long> ids) {
List<SupplierDO> list = supplierService.getSupplierList(ids);
return success(SupplierConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得供应商分页")
@PreAuthorize("@ss.hasPermission('xxjj:supplier:query')")
public CommonResult<PageResult<SupplierRespVO>> getSupplierPage(@Valid SupplierPageReqVO pageVO) {
PageResult<SupplierDO> 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<SupplierDO> list = supplierService.getSupplierList(exportReqVO);
// 导出 Excel
List<SupplierExcelVO> datas = SupplierConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "供应商.xls", "数据", SupplierExcelVO.class, datas);
}
@GetMapping("/list-all-simplesupplier")
@Operation(summary = "获取供应商", description = "只包含被开启的供应商,主要用于前端的下拉选项")
public CommonResult<List<SupplierRespVO>> getCustomerId() {
SupplierRespVO supplierRespVO=new SupplierRespVO();
String status=Integer.toString(CommonStatusEnum.ENABLE.getStatus());
supplierRespVO.setStatus(status);
List<SupplierDO> list = supplierService.getSupplierstaus(supplierRespVO);
return success(SupplierConvert.INSTANCE.convertList(list));
}
}

@ -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<Long> belongingPeople;
}

@ -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 {
}

@ -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<Long> belongingPeople;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("更新时间")
private LocalDateTime updateTime;
}

@ -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<Long> 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;
}

@ -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<Long> 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;
}

@ -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;
}

@ -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;
}

@ -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<Long> createWorkOrder(@Valid @RequestBody WorkOrderCreateReqVO createReqVO) {
return success(workOrderService.createWorkOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工单")
@PreAuthorize("@ss.hasPermission('xxjj:work-order:update')")
public CommonResult<Boolean> 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<Boolean> 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<WorkOrderRespVO> 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<List<WorkOrderRespVO>> getWorkOrderList(@RequestParam("ids") Collection<Long> ids) {
List<WorkOrderDO> list = workOrderService.getWorkOrderList(ids);
return success(WorkOrderConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得工单分页")
@PreAuthorize("@ss.hasPermission('xxjj:work-order:query')")
public CommonResult<PageResult<WorkOrderRespVO>> getWorkOrderPage(@Valid WorkOrderPageReqVO pageVO) {
PageResult<WorkOrderDO> 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<WorkOrderDO> list = workOrderService.getWorkOrderList(exportReqVO);
// 导出 Excel
List<WorkOrderExcelVO> datas = WorkOrderConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "工单.xls", "数据", WorkOrderExcelVO.class, datas);
}
}

@ -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;
}

@ -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 {
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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<SupplierRespVO> convertList(List<SupplierDO> list);
PageResult<SupplierRespVO> convertPage(PageResult<SupplierDO> page);
List<SupplierExcelVO> convertList02(List<SupplierDO> list);
}

@ -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<WorkOrderRespVO> convertList(List<WorkOrderDO> list);
PageResult<WorkOrderRespVO> convertPage(PageResult<WorkOrderDO> page);
List<WorkOrderExcelVO> convertList02(List<WorkOrderDO> list);
}

@ -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<Long> belongingPeople;
}

@ -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<Long> belongingPeople;
}

@ -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;
}

@ -26,7 +26,6 @@ public interface CustomerMapper extends BaseMapperX<CustomerDO> {
.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<CustomerDO> {
.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<CustomerDO> selectcustomerList(CustomerRespVO reqVO) {
return selectList(new LambdaQueryWrapperX<CustomerDO>()
.likeIfPresent(CustomerDO::getCustomerName, reqVO.getCustomerName())
.eqIfPresent(CustomerDO::getStatus, reqVO.getStatus()));
}
}

@ -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<SupplierDO> {
default PageResult<SupplierDO> selectPage(SupplierPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SupplierDO>()
.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<SupplierDO> selectList(SupplierExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<SupplierDO>()
.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<SupplierDO> selectsupplierList(SupplierRespVO reqVO){
return selectList(new LambdaQueryWrapperX<SupplierDO>()
.likeIfPresent(SupplierDO::getSupplierName, reqVO.getSupplierName())
.eqIfPresent(SupplierDO::getStatus, reqVO.getStatus()));
}
}

@ -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<WorkOrderDO> {
default PageResult<WorkOrderDO> selectPage(WorkOrderPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<WorkOrderDO>()
.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<WorkOrderDO> selectList(WorkOrderExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<WorkOrderDO>()
.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));
}
}

@ -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,"父级部门不存在");

@ -67,4 +67,11 @@ public interface CustomerService {
*/
List<CustomerDO> getCustomerList(CustomerExportReqVO exportReqVO);
/**
*
*
*
* @return
*/
List<CustomerDO> getCustomerstaus(CustomerRespVO customerRespVO);
}

@ -79,4 +79,9 @@ public class CustomerServiceImpl implements CustomerService {
return customerMapper.selectList(exportReqVO);
}
@Override
public List<CustomerDO> getCustomerstaus(CustomerRespVO customerRespVO) {
return customerMapper.selectcustomerList(customerRespVO);
}
}

@ -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<SupplierDO> getSupplierList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<SupplierDO> getSupplierPage(SupplierPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<SupplierDO> getSupplierList(SupplierExportReqVO exportReqVO);
/**
*
*
*
* @return
*/
List<SupplierDO> getSupplierstaus(SupplierRespVO supplierRespVO);
}

@ -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<SupplierDO> getSupplierList(Collection<Long> ids) {
return supplierMapper.selectBatchIds(ids);
}
@Override
public PageResult<SupplierDO> getSupplierPage(SupplierPageReqVO pageReqVO) {
return supplierMapper.selectPage(pageReqVO);
}
@Override
public List<SupplierDO> getSupplierList(SupplierExportReqVO exportReqVO) {
return supplierMapper.selectList(exportReqVO);
}
@Override
public List<SupplierDO> getSupplierstaus(SupplierRespVO supplierRespVO) {
return supplierMapper.selectsupplierList(supplierRespVO);
}
}

@ -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<WorkOrderDO> getWorkOrderList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<WorkOrderDO> getWorkOrderPage(WorkOrderPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<WorkOrderDO> getWorkOrderList(WorkOrderExportReqVO exportReqVO);
}

@ -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<WorkOrderDO> getWorkOrderList(Collection<Long> ids) {
return workOrderMapper.selectBatchIds(ids);
}
@Override
public PageResult<WorkOrderDO> getWorkOrderPage(WorkOrderPageReqVO pageReqVO) {
return workOrderMapper.selectPage(pageReqVO);
}
@Override
public List<WorkOrderDO> getWorkOrderList(WorkOrderExportReqVO exportReqVO) {
return workOrderMapper.selectList(exportReqVO);
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.supplier.SupplierMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.workorder.WorkOrderMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -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));

@ -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<SupplierDO> 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<SupplierDO> list = supplierService.getSupplierList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbSupplier, list.get(0));
}
}

@ -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<WorkOrderDO> 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<WorkOrderDO> list = workOrderService.getWorkOrderList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbWorkOrder, list.get(0));
}
}

@ -61,11 +61,11 @@
<version>${revision}</version>
</dependency>
<!-- 工作流 -->
<!-- <dependency>-->
<!-- <groupId>com.yunxi.scm</groupId>-->
<!-- <artifactId>yunxi-module-bpm-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-module-bpm-biz</artifactId>
<version>${revision}</version>
</dependency>
<!-- 支付服务。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>com.yunxi.scm</groupId>-->

@ -135,3 +135,11 @@ export function importTemplate() {
responseType: 'blob'
})
}
// 获取用户组精简信息列表
export function listSimpleUserGroups11() {
return request({
url: '/system/user/list-all-simpleuser',
method: 'get'
})
}

@ -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'
})
}

@ -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'
})
}

@ -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', //供应商性质
}
/**

@ -36,9 +36,14 @@
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="归属人员" prop="belongingPeople">
<el-input v-model="queryParams.belongingPeople" placeholder="请输入归属人员" clearable @keyup.enter.native="handleQuery"/>
<!-- <el-form-item label="归属人员" prop="belongingPeople">-->
<!-- <el-input v-model="queryParams.belongingPeople" placeholder="请输入归属人员" clearable @keyup.enter.native="handleQuery"/>-->
<!-- </el-form-item>-->
<el-form-item label="成员" prop="belongingPeople">
<el-input v-model="queryParams.belongingPeople" placeholder="请输入成员" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
@ -63,11 +68,17 @@
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['xxjj:customer:export']">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddwork"
v-hasPermi="['xxjj:customer:creatework']">新建工单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-tabs v-model="activeTabs" @tab-click="handleClick">
<el-tab-pane label="全部" name="all">
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column stripe>
<el-table-column type="selection" width="55"align=center ></el-table-column>
@ -102,65 +113,14 @@
<el-table-column label="归属人员" align="center" prop="belongingPeople" sortable v-if="columns[8].visible" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[9].visible">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime" width="180" v-if="columns[10].visible" >
<template v-slot="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:customer:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleopen1close(scope.row)"
>{{scope.row.status == 0 ? '禁用' : '启用'}}</el-button>
<el-divider direction="vertical"></el-divider>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:customer:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="已启用" name="open1">
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column stripe>
<el-table-column type="selection" width="55"align=center ></el-table-column>
<el-table-column label="编号" align="center" prop="id" v-if="columns[0].visible"/>
<el-table-column label="客户名称" align="center" prop="customerName" sortable v-if="columns[1].visible" />
<el-table-column label="客户类型" align="center" prop="customerType" sortable v-if="columns[2].visible" >
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_TYPE" :value="scope.row.customerType" />
</template>
</el-table-column>
<el-table-column label="统一结算主体" align="center" prop="unifiedSettlement" sortable v-if="columns[3].visible"/>
<el-table-column label="客户性质" align="center" prop="customerNature" sortable v-if="columns[4].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_NATUER" :value="scope.row.customerNature" />
</template>
</el-table-column>
<el-table-column label="合作模式" align="center" prop="cooperationMode" sortable v-if="columns[5].visible">
<el-table-column label="成员" align="center">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.COOPERATION_MODE" :value="scope.row.cooperationMode" />
<span v-for="userId in scope.row.belongingPeople">
{{ getUserNickname(userId) }}
</span>
</template>
</el-table-column>
<el-table-column label="隶属业务线" align="center" prop="linebusinessId" sortable v-if="columns[6].visible" />
<el-table-column label="状态" align="center" prop="status" sortable v-if="columns[7].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.UNIT_LIBRARY_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="归属人员" align="center" prop="belongingPeople" sortable v-if="columns[8].visible" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[9].visible">
<template v-slot="scope">
@ -180,71 +140,15 @@
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleopen1close(scope.row)"
>{{scope.row.status == 0 ? '禁用' : '启用'}}</el-button>
<el-divider direction="vertical"></el-divider>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:customer:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="已禁用" name="close">
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column stripe>
<el-table-column type="selection" width="55"align=center ></el-table-column>
<el-table-column label="编号" align="center" prop="id" v-if="columns[0].visible"/>
<el-table-column label="客户名称" align="center" prop="customerName" sortable v-if="columns[1].visible" />
<el-table-column label="客户类型" align="center" prop="customerType" sortable v-if="columns[2].visible" >
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_TYPE" :value="scope.row.customerType" />
</template>
</el-table-column>
<el-table-column label="统一结算主体" align="center" prop="unifiedSettlement" sortable v-if="columns[3].visible"/>
<el-table-column label="客户性质" align="center" prop="customerNature" sortable v-if="columns[4].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_NATUER" :value="scope.row.customerNature" />
</template>
</el-table-column>
<el-table-column label="合作模式" align="center" prop="cooperationMode" sortable v-if="columns[5].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.COOPERATION_MODE" :value="scope.row.cooperationMode" />
</template>
</el-table-column>
<el-table-column label="隶属业务线" align="center" prop="linebusinessId" sortable v-if="columns[6].visible" />
<el-table-column label="状态" align="center" prop="status" sortable v-if="columns[7].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.UNIT_LIBRARY_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="归属人员" align="center" prop="belongingPeople" sortable v-if="columns[8].visible" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[9].visible">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime" width="180" v-if="columns[10].visible" >
<template v-slot="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:customer:update']">修改</el-button>
</el-table>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleopen1close(scope.row)"
>{{scope.row.status == 0 ? '禁用' : '启用'}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:customer:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@ -286,21 +190,118 @@
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="归属人员" prop="belongingPeople">
<el-input v-model="form.belongingPeople" placeholder="请输入归属人员" />
<!-- <el-form-item label="归属人员" prop="belongingPeople">-->
<!-- <el-input v-model="form.belongingPeople" placeholder="请输入归属人员" />-->
<!-- </el-form-item>-->
<el-form-item label="成员" prop="belongingPeople">
<el-select v-model="form.belongingPeople" multiple placeholder="请选择成员">
<el-option v-for="user in users" :key="parseInt(user.id)" :label="user.nickname" :value="parseInt(user.id)"/>
</el-select>
</el-form-item>
<!-- <el-form-item label="权限范围">-->
<!-- <el-select v-model="form.dataScope">-->
<!-- <el-option-->
<!-- v-for="item in dataScopeDictDatas"-->
<!-- :key="parseInt(item.value)"-->
<!-- :label="item.label"-->
<!-- :value="parseInt(item.value)"-->
<!-- ></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="数据权限" v-show="form.dataScope === SysDataScopeEnum.DEPT_CUSTOM">-->
<!-- <el-checkbox :checked="!form.deptCheckStrictly" @change="handleCheckedTreeConnect($event, 'dept')">父子联动(选中父节点自动选择子节点)</el-checkbox>-->
<!-- <el-checkbox v-model="deptExpand" @change="handleCheckedTreeExpand($event, 'dept')">/</el-checkbox>-->
<!-- <el-checkbox v-model="deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')">/</el-checkbox>-->
<!-- <el-tree-->
<!-- class="tree-border"-->
<!-- :data="deptOptions"-->
<!-- show-checkbox-->
<!-- default-expand-all-->
<!-- ref="dept"-->
<!-- node-key="id"-->
<!-- :check-strictly="form.deptCheckStrictly"-->
<!-- empty-text="加载中,请稍后"-->
<!-- :props="defaultProps"-->
<!-- ></el-tree>-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog :title="title1" :visible.sync="open1" width="500px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules1" label-width="80px">
<el-form-item label="工单标题" prop="workorderName">
<el-input v-model="form.workorderName" placeholder="请输入工单标题" />
</el-form-item>
<!-- <el-form-item label="客户id" prop="customerId">-->
<!-- <el-input v-model="form.customerId" placeholder="请输入客户id" />-->
<!-- </el-form-item>-->
<el-form-item label="客户id" prop="customerId">
<el-select v-model="form.customerId" multiple placeholder="请选择客户id">
<el-option v-for="customer in cust" :key="parseInt(customer.id)" :label="customer.customerName" :value="parseInt(customer.id)"/>
</el-select>
</el-form-item>
<!-- <el-form-item label="供应商id" prop="supplierId">-->
<!-- <el-input v-model="form.supplierId" placeholder="请输入供应商id" />-->
<!-- </el-form-item>-->
<el-form-item label="关联工单" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入关联工单" />
</el-form-item>
<!-- <el-form-item label="工单类型" prop="workorderType">-->
<!-- <el-select v-model="form.workorderType" placeholder="请选择工单类型">-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="工单类型" prop="workorderType">
<el-select v-model="form.workorderType" placeholder="请选择工单类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.WORK_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<!-- <el-form-item label="紧要程度" prop="criticality">-->
<!-- <el-input v-model="form.criticality" placeholder="请输入紧要程度" />-->
<!-- </el-form-item>-->
<el-form-item label="紧要程度" prop="criticality">
<el-radio-group v-model="form.criticality" size="small">
<el-radio-button v-for="(item, index) in field101Options" :key="index" :label="item.value"
:disabled="item.disabled" border>{{item.label}}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="描述" prop="remark">
<el-input v-model="form.remark" placeholder="请输入描述" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFormwork"> </el-button>
<el-button @click="cancelwork"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { createCustomer, updateCustomer, deleteCustomer, getCustomer, getCustomerPage, exportCustomerExcel } from "@/api/xxjj/customer";
import { createCustomer, updateCustomer, deleteCustomer, getCustomer, getCustomerPage, exportCustomerExcel,listSimpleCustomerid } from "@/api/xxjj/customer";
import {customerstatus} from "@/utils/constants";
import {listSimpleDepts,} from "@/api/system/dept";
import {CommonStatusEnum, SystemDataScopeEnum} from "@/utils/constants";
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {listSimpleUsers,listSimpleUserGroups11} from "@/api/system/user";
export default {
name: "Customer",
components: {
@ -320,8 +321,12 @@ export default {
list: [],
//
title: "",
title1: "",
//
open: false,
open1: false,
users: [],
cust:[],
//
queryParams: {
pageNo: 1,
@ -339,7 +344,19 @@ export default {
},
//
form: {},
// defaultProps: {
// label: "nickname",
// children: "children"
// },
//
SysCommonStatusEnum: CommonStatusEnum,
SysDataScopeEnum: SystemDataScopeEnum,
//
// roleTypeDictDatas: getDictDatas(DICT_TYPE.SYSTEM_ROLE_TYPE),
// statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS),
// dataScopeDictDatas: getDictDatas(DICT_TYPE.SYSTEM_DATA_SCOPE),
//
rules: {
customerName: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
customerType: [{ required: true, message: "客户类型不能为空", trigger: "change" }],
@ -347,8 +364,28 @@ export default {
cooperationMode: [{ required: true, message: "合作模式不能为空", trigger: "blur" }],
status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
},
//
rules1: {
workorderName: [{ required: true, message: "工单标题不能为空", trigger: "blur" }],
customerId: [{ required: true, message: "客户不能为空", trigger: "blur" }],
workType: [{ required: true, message: "工单类型不能为空", trigger: "blur" }],
criticality: [{ required: true, message: "紧要程度不能为空", trigger: "blur" }],
},
//
field101Options: [{
"label": "重要",
"value": 0
}, {
"label": "紧急",
"value": 1
}, {
"label": "普通",
"value": 2
}, {
"label": "较低",
"value": 3
}],
//
columns: [
{ key: 0, label: `编号`, visible: true },
{ key: 1, label: `客户名称`, visible: true },
@ -361,14 +398,22 @@ export default {
{ key: 8, label: `归属人员`, visible: true },
{ key: 9, label: `创建时间`, visible: true },
{ key: 10, label: `更新时间`, visible: true },
],
deptExpand: true,
deptNodeAll: false,
};
},
created() {
this.getList();
//
listSimpleUsers().then(response => {
this.users = response.data;
})
//
listSimpleCustomerid().then(response => {
this.cust = response.data;
})
},
methods: {
//
@ -443,8 +488,16 @@ export default {
this.open = false;
this.reset();
},
cancelwork() {
this.open1 = false;
this.reset();
},
/** 表单重置 */
reset() {
this.menuCheckStrictly = true;
this.deptExpand = true;
this.deptNodeAll = false;
this.form = {
id: undefined,
customerName: undefined,
@ -454,7 +507,8 @@ export default {
cooperationMode: undefined,
linebusinessId: undefined,
status: undefined,
belongingPeople: undefined,
deptCheckStrictly: false,
belongingPeople: [],
};
this.resetForm("form");
},
@ -474,6 +528,13 @@ export default {
this.open = true;
this.title = "添加客户信息";
},
/** 新增工单操作 */
handleAddwork() {
this.reset();
this.open1 = true;
this.title1 = "新建工单";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
@ -483,6 +544,26 @@ export default {
this.open = true;
this.title = "修改客户信息";
});
// //
// // form name code
// this.form.id = row.id;
// this.form.name = row.name;
// this.form.code = row.code;
// //
// this.openDataScope = true;
// // listSimpleDepts listSimpleUserGroups11
// listSimpleDepts().then(response => {
// // deptOptions
// this.deptOptions = [];
// this.deptOptions.push(...this.handleTree(response.data, "id"));
// this.depts = response.data;
// // this.deptIds = response.data.map(x => x.id);
// //
// getRole(row.id).then(response => {
// this.form.dataScope = response.data.dataScope;
// this.$refs.dept.setCheckedKeys(response.data.dataScopeDeptIds, false);
// });
// });
},
/** 提交按钮 */
submitForm() {
@ -507,6 +588,29 @@ export default {
});
});
},
/** 提交按钮工单 */
submitFormwork() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateCustomer(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open1 = false;
this.getList();
});
return;
}
//
createCustomer(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open1 = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
@ -530,7 +634,51 @@ export default {
this.$download.excel(response, '客户信息.xls');
this.exportLoading = false;
}).catch(() => {});
},
//id
getUserNickname(userId) {
for (const user of this.users) {
if (user.id === userId) {
return user.nickname;
}
}
return '未知(' + userId + ')';
},
// /
// handleCheckedTreeExpand(value, type) {
// if (type === 'menu') {
// let treeList = this.menuOptions;
// for (let i = 0; i < treeList.length; i++) {
// this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;
// }
// } else if (type === 'dept') {
// let treeList = this.deptOptions;
// for (let i = 0; i < treeList.length; i++) {
// this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value;
// }
// }
// },
// // /
// handleCheckedTreeNodeAll(value, type) {
// if (type === 'menu') {
// this.$refs.menu.setCheckedNodes(value ? this.menuOptions: []);
// } else if (type === 'dept') {
// // this.$refs.dept.setCheckedNodes(value ? this.deptOptions: []);
// this.$refs.dept.setCheckedNodes(value ? this.depts: []);
// }
// },
// //
// handleCheckedTreeConnect(value, type) {
// if (type === 'menu') {
// this.form.menuCheckStrictly = value;
// } else if (type === 'dept') {
// this.form.deptCheckStrictly = !value;
// }
// },
}
};
</script>

@ -0,0 +1,549 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="供应商名称" prop="supplierName">
<el-input v-model="queryParams.supplierName" placeholder="请输入供应商名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="供应商类型" prop="supplierType">
<el-select v-model="queryParams.supplierType" placeholder="请选择供应商类型" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.SUPPLIER_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="统一结算主体" prop="unifiedSettlement">
<el-input v-model="queryParams.unifiedSettlement" placeholder="请输入统一结算主体" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="供应商性质" prop="supplierNature">
<el-select v-model="queryParams.supplierNature" placeholder="请选择供应商性质" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.SUPPLIER_NATURE1)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="合作模式" prop="cooperationMode">
<el-select v-model="queryParams.cooperationMode" placeholder="请选择合作模式" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COOPERATION_MODE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="隶属业务线" prop="linebusinessId">
<el-input v-model="queryParams.linebusinessId" placeholder="请输入隶属业务线" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.UNIT_LIBRARY_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="归属人员" prop="belongingPeople">
<el-input v-model="queryParams.belongingPeople" placeholder="请输入归属人员" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
</el-form-item>
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker v-model="queryParams.updateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['xxjj:supplier:create']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['xxjj:supplier:export']">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddwork"
v-hasPermi="['xxjj:supplier:creatework']">新建工单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column stripe>
<el-table-column type="selection" width="55"align=center ></el-table-column>
<el-table-column label="编号" align="center" prop="id" v-if="columns[0].visible"/>
<el-table-column label="供应商名称" align="center" sortable prop="supplierName" v-if="columns[1].visible" />
<el-table-column label="供应商类型" align="center" sortable prop="supplierType" v-if="columns[2].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.SUPPLIER_TYPE" :value="scope.row.supplierType" />
</template>
</el-table-column>
<el-table-column label="统一结算主体" align="center" sortable prop="unifiedSettlement" v-if="columns[3].visible" />
<el-table-column label="供应商性质" align="center" sortable prop="supplierNature" v-if="columns[4].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.SUPPLIER_NATURE1" :value="scope.row.supplierNature" />
</template>
</el-table-column>
<el-table-column label="合作模式" align="center" sortable prop="cooperationMode" v-if="columns[5].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.COOPERATION_MODE" :value="scope.row.cooperationMode" />
</template>
</el-table-column>
<el-table-column label="隶属业务线" align="center" prop="linebusinessId" v-if="columns[6].visible" />
<el-table-column label="状态" align="center" sortable prop="status" v-if="columns[7].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.UNIT_LIBRARY_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<!-- <el-table-column label="归属人员" align="center" prop="belongingPeople" v-if="columns[8].visible" />-->
<el-table-column label="归属人员" align="center" v-if="columns[8].visible">
<template v-slot="scope">
<span v-for="userId in scope.row.belongingPeople">
{{ getUserNickname(userId) }}
</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[9].visible">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime" width="180" v-if="columns[10].visible">
<template v-slot="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:supplier:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleopen1close(scope.row)"
>{{scope.row.status == 0 ? '禁用' : '启用'}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:supplier:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="供应商名称" prop="supplierName">
<el-input v-model="form.supplierName" placeholder="请输入供应商名称" />
</el-form-item>
<el-form-item label="供应商类型" prop="supplierType">
<el-select v-model="form.supplierType" placeholder="请选择供应商类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.SUPPLIER_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="统一结算主体" prop="unifiedSettlement">
<el-input v-model="form.unifiedSettlement" placeholder="请输入统一结算主体" />
</el-form-item>
<el-form-item label="供应商性质" prop="supplierNature">
<el-select v-model="form.supplierNature" placeholder="请选择供应商性质">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.SUPPLIER_NATURE1)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="合作模式" prop="cooperationMode">
<el-select v-model="form.cooperationMode" placeholder="请选择合作模式">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COOPERATION_MODE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="隶属业务线" prop="linebusinessId">
<el-input v-model="form.linebusinessId" placeholder="请输入隶属业务线" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="form.status" placeholder="请选择状态">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.UNIT_LIBRARY_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<!-- <el-form-item label="归属人员" prop="belongingPeople">-->
<!-- <el-input v-model="form.belongingPeople" placeholder="请输入归属人员" />-->
<!-- </el-form-item>-->
<el-form-item label="归属人员" prop="belongingPeople">
<el-select v-model="form.belongingPeople" multiple placeholder="请选择归属人员">
<el-option v-for="user in users" :key="parseInt(user.id)" :label="user.nickname" :value="parseInt(user.id)"/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 新建工单-->
<el-dialog :title="title1" :visible.sync="open1" width="500px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules1" label-width="80px">
<el-form-item label="工单标题" prop="workorderName">
<el-input v-model="form.workorderName" placeholder="请输入工单标题" />
</el-form-item>
<el-form-item label="供应商id" prop="supplierId">
<el-select v-model="form.supplierId" multiple placeholder="请选择供应商id">
<el-option v-for="supplier in supp" :key="parseInt(supplier.id)" :label="supplier.supplierName" :value="parseInt(supplier.id)"/>
</el-select>
</el-form-item>
<el-form-item label="关联工单" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入关联工单" />
</el-form-item>
<!-- <el-form-item label="工单类型" prop="workorderType">-->
<!-- <el-select v-model="form.workorderType" placeholder="请选择工单类型">-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="工单类型" prop="workorderType">
<el-select v-model="form.workorderType" placeholder="请选择工单类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.WORK_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<!-- <el-form-item label="紧要程度" prop="criticality">-->
<!-- <el-input v-model="form.criticality" placeholder="请输入紧要程度" />-->
<!-- </el-form-item>-->
<el-form-item label="紧要程度" prop="criticality">
<el-radio-group v-model="form.criticality" size="small">
<el-radio-button v-for="(item, index) in field101Options" :key="index" :label="item.value"
:disabled="item.disabled" border>{{item.label}}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="描述" prop="remark">
<el-input v-model="form.remark" placeholder="请输入描述" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFormwork"> </el-button>
<el-button @click="cancelwork"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { createSupplier, updateSupplier, deleteSupplier, getSupplier, getSupplierPage, exportSupplierExcel,listSimpleSupplierId } from "@/api/xxjj/supplier";
import { listSimpleUsers } from "@/api/system/user";
export default {
name: "Supplier",
components: {
},
data() {
return {
//
loading: true,
//
exportLoading: false,
//
showSearch: true,
//
total: 0,
//
list: [],
//
title: "",
title1: "",
//
open: false,
open1: false,
users: [],
supp: [],
//
queryParams: {
pageNo: 1,
pageSize: 10,
supplierName: null,
supplierType: null,
unifiedSettlement: null,
supplierNature: null,
cooperationMode: null,
linebusinessId: null,
status: null,
belongingPeople: null,
createTime: [],
updateTime: [],
},
//
form: {},
//
rules: {
supplierName: [{ required: true, message: "供应商名称不能为空", trigger: "blur" }],
supplierType: [{ required: true, message: "供应商类型不能为空", trigger: "change" }],
supplierNature: [{ required: true, message: "供应商性质不能为空", trigger: "change" }],
cooperationMode: [{ required: true, message: "合作模式不能为空", trigger: "change" }],
status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
},
rules1: {
workorderName: [{ required: true, message: "工单标题不能为空", trigger: "blur" }],
supplierId: [{ required: true, message: "供应商不能为空", trigger: "blur" }],
workType: [{ required: true, message: "工单类型不能为空", trigger: "blur" }],
criticality: [{ required: true, message: "紧要程度不能为空", trigger: "blur" }],
},
//
field101Options: [{
"label": "重要",
"value": 0
}, {
"label": "紧急",
"value": 1
}, {
"label": "普通",
"value": 2
}, {
"label": "较低",
"value": 3
}],
//
columns: [
{ key: 0, label: `编号`, visible: true },
{ key: 1, label: `供应商名称`, visible: true },
{ key: 2, label: `供应商类型`, visible: true },
{ key: 3, label: `统一结算主体`, visible: true },
{ key: 4, label: `供应商性质`, visible: true },
{ key: 5, label: `合作模式`, visible: true },
{ key: 6, label: `隶属业务线`, visible: true },
{ key: 7, label: `状态`, visible: true },
{ key: 8, label: `归属人员`, visible: true },
{ key: 9, label: `创建时间`, visible: true },
{ key: 10, label: `更新时间`, visible: true },
],
};
},
created() {
this.getList();
//
listSimpleUsers().then(response => {
this.users = response.data;
}),
//
listSimpleSupplierId().then(response => {
this.supp = response.data;
})
},
methods: {
//
handleopen1close(row) {
if (row.status == 1) {
this.$confirm('你确定要启用该客户吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
try {
row.status = 0
updateSupplier(row).then(response => {
this.$modal.msgSuccess("启用成功");
this.open = false;
this.getList();
});
} catch (err) {
this.$message.error('启用失败')
}
})
} else if (row.status == 0) {
this.$confirm('你确定要禁用该客户吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
try {
row.status = 1
updateSupplier(row).then(response => {
this.$modal.msgSuccess("禁用成功");
this.open = false;
this.getList();
});
} catch (err) {
this.$message.error('禁用失败')
}
})
}
},
//id
getUserNickname(userId) {
for (const user of this.users) {
if (user.id === userId) {
return user.nickname;
}
}
return '未知(' + userId + ')';
},
/** 查询列表 */
getList() {
this.loading = true;
//
getSupplierPage(this.queryParams).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
cancelwork() {
this.open1 = false;
this.reset();
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
supplierName: undefined,
supplierType: undefined,
unifiedSettlement: undefined,
supplierNature: undefined,
cooperationMode: undefined,
linebusinessId: undefined,
status: undefined,
belongingPeople: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
handleAddwork() {
this.reset();
this.open1 = true;
this.title1 = "新建工单";
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加供应商";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getSupplier(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改供应商";
});
},
/** 提交按钮工单 */
submitFormwork() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateSupplier(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open1 = false;
this.getList();
});
return;
}
//
createSupplier(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open1 = false;
this.getList();
});
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateSupplier(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
}
//
createSupplier(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除供应商编号为"' + id + '"的数据项?').then(function() {
return deleteSupplier(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
//
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有供应商数据项?').then(() => {
this.exportLoading = true;
return exportSupplierExcel(params);
}).then(response => {
this.$download.excel(response, '供应商.xls');
this.exportLoading = false;
}).catch(() => {});
}
}
};
</script>
Loading…
Cancel
Save