Merge branch 'master' into ysq-dev-0811

# Conflicts:
#	yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/customer/CustomerMapper.java
#	yunxi-ui-admin/src/utils/dict.js
#	yunxi-ui-admin/src/views/xxjj/businessLine/index.vue
#	yunxi-ui-admin/src/views/xxjj/customer/index.vue
#	yunxi-ui-admin/src/views/xxjj/warehouse/index.vue
ccongli-dev-0920
杨世强 1 year ago
commit 844e30ef25

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

@ -8,8 +8,6 @@ import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.module.xxjj.dal.dataobject.customer.CustomerDO;
import org.apache.ibatis.annotations.Mapper;
import com.yunxi.scm.module.xxjj.controller.admin.customer.vo.*;
import org.apache.ibatis.annotations.Param;
import org.checkerframework.checker.units.qual.C;
/**
* Mapper
@ -28,7 +26,6 @@ public interface CustomerMapper extends BaseMapperX<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));
@ -43,12 +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));
}
List<CustomerDO> queryCustomerTree(@Param("id") Long id);
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'
})
}

@ -364,3 +364,17 @@ export const customerstatus = {
name: '关闭'
}
}
/**
* 树状列表
*/
export const TreeEnum = {
WAREHOUSE: {
status: 0,
name: '开启'
},
CLOSE: {
status: 1,
name: '关闭'
}
}

@ -102,12 +102,19 @@ export const DICT_TYPE = {
CUSTOMER_NATUER: 'customer_nature', //客户性质
COOPERATION_MODE: 'cooperation_mode', //客户合作模式
// ============= BUSINESSLINE 模块=================
BUSINESS_TYPE: 'business_type', //业务线类型
// ============= WAREHOUSE 模块=================
WAREHOUSE_TYPE: 'warehouse_type', //仓库类型
WORK_TYPE: 'work_type', //工单类型
// ============= SUPPLIER 模块=================
SUPPLIER_TYPE: 'supplier_type', //供应商类型
SUPPLIER_NATURE1: 'supplier_nature', //供应商性质
}
/**

@ -1,45 +1,113 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="业务线编号" prop="businessCode">
<el-input v-model="queryParams.businessCode" placeholder="请输入业务线编号" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.businessCode"
placeholder="请输入业务线编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="业务线名称" prop="businessName">
<el-input v-model="queryParams.businessName" placeholder="请输入业务线名称" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.businessName"
placeholder="请输入业务线名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="隶属企业" prop="affiliatCompanyId">
<el-input v-model="queryParams.affiliatCompanyId" placeholder="请输入隶属企业" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.affiliatCompanyId"
placeholder="请输入隶属企业"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择类型" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BUSINESS_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
<el-select
v-model="queryParams.type"
placeholder="请选择类型"
clearable
size="small"
>
<el-option
v-for="dict in this.getDictDatas(DICT_TYPE.BUSINESS_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="所属行业" prop="industry">
<el-input v-model="queryParams.industry" placeholder="请输入所属行业" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.industry"
placeholder="请输入所属行业"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="所在城市" prop="city">
<el-input v-model="queryParams.city" placeholder="请输入所在城市" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.city"
placeholder="请输入所在城市"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="成立时间" prop="establishDate">
<el-date-picker v-model="queryParams.establishDate" 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-date-picker
v-model="queryParams.establishDate"
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="brandName">
<el-input v-model="queryParams.brandName" placeholder="请输入品牌/业务线/事业群名称" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.brandName"
placeholder="请输入品牌/业务线/事业群名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-input v-model="queryParams.phone" placeholder="请输入电话" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.phone"
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-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>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<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>
@ -47,14 +115,32 @@
<!-- 操作工具栏 -->
<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:business-line:create']">新增</el-button>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['xxjj:business-line: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:business-line:export']">导出</el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['xxjj:business-line:export']"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- 列表 -->
@ -62,9 +148,17 @@
<el-table-column label="业务id" align="center" prop="id" />
<el-table-column label="业务线编号" align="center" prop="businessCode" />
<el-table-column label="业务线名称" align="center" prop="businessName" />
<el-table-column label="业务线简称" align="center" prop="businessSimple" />
<el-table-column
label="业务线简称"
align="center"
prop="businessSimple"
/>
<el-table-column label="业务线LOGO" align="center" prop="businessLogo" />
<el-table-column label="隶属企业" align="center" prop="affiliatCompanyId" />
<el-table-column
label="隶属企业"
align="center"
prop="affiliatCompanyId"
/>
<el-table-column label="类型" align="center" prop="type">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.BUSINESS_TYPE" :value="scope.row.type" />
@ -72,57 +166,117 @@
</el-table-column>
<el-table-column label="所属行业" align="center" prop="industry" />
<el-table-column label="所在城市" align="center" prop="city" />
<el-table-column label="成立时间" align="center" prop="establishDate" width="180">
<el-table-column
label="成立时间"
align="center"
prop="establishDate"
width="180"
>
<template v-slot="scope">
<span>{{ parseTime(scope.row.establishDate) }}</span>
</template>
</el-table-column>
<el-table-column label="归属人员" align="center" prop="belongUserId" />
<el-table-column label="品牌/业务线/事业群名称" align="center" prop="brandName" />
<el-table-column
label="品牌/业务线/事业群名称"
align="center"
prop="brandName"
/>
<el-table-column label="电话" align="center" prop="phone" />
<el-table-column label="传真" align="center" prop="fax" />
<el-table-column label="网址" align="center" prop="url" />
<el-table-column label="介绍" align="center" prop="desc" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<el-table-column label="介绍" align="center" prop="description" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
>
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<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:business-line:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:business-line:delete']">删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:business-line:update']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['xxjj:business-line: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"/>
<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-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="businessCode">
<el-input v-model="form.businessCode" placeholder="请输入业务线编号" />
<el-input
v-model="form.businessCode"
placeholder="请输入业务线编号"
/>
</el-form-item>
<el-form-item label="业务线名称" prop="businessName">
<el-input v-model="form.businessName" placeholder="请输入业务线名称" />
<el-input
v-model="form.businessName"
placeholder="请输入业务线名称"
/>
</el-form-item>
<el-form-item label="业务线简称" prop="businessSimple">
<el-input v-model="form.businessSimple" placeholder="请输入业务线简称" />
<el-input
v-model="form.businessSimple"
placeholder="请输入业务线简称"
/>
</el-form-item>
<el-form-item label="业务线LOGO" prop="businessLogo">
<el-input v-model="form.businessLogo" placeholder="请输入业务线LOGO" />
<el-input
v-model="form.businessLogo"
placeholder="请输入业务线LOGO"
/>
</el-form-item>
<el-form-item label="隶属企业" prop="affiliatCompanyId">
<el-input v-model="form.affiliatCompanyId" placeholder="请输入隶属企业" />
<el-input
v-model="form.affiliatCompanyId"
placeholder="请输入隶属企业"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="form.type" placeholder="请选择类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BUSINESS_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
<el-option
v-for="dict in this.getDictDatas(DICT_TYPE.BUSINESS_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="所属行业" prop="industry">
@ -132,13 +286,22 @@
<el-input v-model="form.city" placeholder="请输入所在城市" />
</el-form-item>
<el-form-item label="成立时间" prop="establishDate">
<el-date-picker clearable v-model="form.establishDate" type="date" value-format="timestamp" placeholder="选择成立时间" />
<el-date-picker
clearable
v-model="form.establishDate"
type="date"
value-format="timestamp"
placeholder="选择成立时间"
/>
</el-form-item>
<el-form-item label="归属人员" prop="belongUserId">
<el-input v-model="form.belongUserId" placeholder="请输入归属人员" />
</el-form-item>
<el-form-item label="品牌/业务线/事业群名称" prop="brandName">
<el-input v-model="form.brandName" placeholder="请输入品牌/业务线/事业群名称" />
<el-input
v-model="form.brandName"
placeholder="请输入品牌/业务线/事业群名称"
/>
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-input v-model="form.phone" placeholder="请输入电话" />
@ -149,8 +312,8 @@
<el-form-item label="网址" prop="url">
<el-input v-model="form.url" placeholder="请输入网址" />
</el-form-item>
<el-form-item label="介绍" prop="desc">
<el-input v-model="form.desc" placeholder="请输入介绍" />
<el-form-item label="介绍" prop="description">
<el-input v-model="form.description" placeholder="请输入介绍" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -162,12 +325,18 @@
</template>
<script>
import { createBusinessLine, updateBusinessLine, deleteBusinessLine, getBusinessLine, getBusinessLinePage, exportBusinessLineExcel } from "@/api/xxjj/businessLine";
import {
createBusinessLine,
updateBusinessLine,
deleteBusinessLine,
getBusinessLine,
getBusinessLinePage,
exportBusinessLineExcel,
} from "@/api/xxjj/businessLine";
export default {
name: "BusinessLine",
components: {
},
components: {},
data() {
return {
//
@ -203,18 +372,40 @@ export default {
form: {},
//
rules: {
businessCode: [{ required: true, message: "业务线编号不能为空", trigger: "blur" }],
businessName: [{ required: true, message: "业务线名称不能为空", trigger: "blur" }],
businessLogo: [{ required: true, message: "业务线LOGO不能为空", trigger: "blur" }],
affiliatCompanyId: [{ required: true, message: "隶属企业不能为空", trigger: "blur" }],
businessCode: [
{ required: true, message: "业务线编号不能为空", trigger: "blur" },
],
businessName: [
{ required: true, message: "业务线名称不能为空", trigger: "blur" },
],
businessLogo: [
{ required: true, message: "业务线LOGO不能为空", trigger: "blur" },
],
affiliatCompanyId: [
{ required: true, message: "隶属企业不能为空", trigger: "blur" },
],
type: [{ required: true, message: "类型不能为空", trigger: "change" }],
industry: [{ required: true, message: "所属行业不能为空", trigger: "blur" }],
city: [{ required: true, message: "所在城市不能为空", trigger: "blur" }],
establishDate: [{ required: true, message: "成立时间不能为空", trigger: "blur" }],
belongUserId: [{ required: true, message: "归属人员不能为空", trigger: "blur" }],
brandName: [{ required: true, message: "品牌/业务线/事业群名称不能为空", trigger: "blur" }],
industry: [
{ required: true, message: "所属行业不能为空", trigger: "blur" },
],
city: [
{ required: true, message: "所在城市不能为空", trigger: "blur" },
],
establishDate: [
{ required: true, message: "成立时间不能为空", trigger: "blur" },
],
belongUserId: [
{ required: true, message: "归属人员不能为空", trigger: "blur" },
],
brandName: [
{
required: true,
message: "品牌/业务线/事业群名称不能为空",
trigger: "blur",
},
],
phone: [{ required: true, message: "电话不能为空", trigger: "blur" }],
}
},
};
},
created() {
@ -225,7 +416,7 @@ export default {
getList() {
this.loading = true;
//
getBusinessLinePage(this.queryParams).then(response => {
getBusinessLinePage(this.queryParams).then((response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
@ -254,7 +445,7 @@ export default {
phone: undefined,
fax: undefined,
url: undefined,
desc: undefined,
description: undefined,
};
this.resetForm("form");
},
@ -278,7 +469,7 @@ export default {
handleUpdate(row) {
this.reset();
const id = row.id;
getBusinessLine(id).then(response => {
getBusinessLine(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改业务线";
@ -286,13 +477,13 @@ export default {
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
this.$refs["form"].validate((valid) => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateBusinessLine(this.form).then(response => {
updateBusinessLine(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
@ -300,7 +491,7 @@ export default {
return;
}
//
createBusinessLine(this.form).then(response => {
createBusinessLine(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
@ -310,12 +501,16 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除业务线编号为"' + id + '"的数据项?').then(function() {
this.$modal
.confirm('是否确认删除业务线编号为"' + id + '"的数据项?')
.then(function () {
return deleteBusinessLine(id);
}).then(() => {
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
@ -323,14 +518,18 @@ export default {
let params = { ...this.queryParams };
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有业务线数据项?').then(() => {
this.$modal
.confirm("是否确认导出所有业务线数据项?")
.then(() => {
this.exportLoading = true;
return exportBusinessLineExcel(params);
}).then(response => {
this.$download.excel(response, '业务线.xls');
})
.then((response) => {
this.$download.excel(response, "业务线.xls");
this.exportLoading = false;
}).catch(() => {});
}
}
})
.catch(() => {});
},
},
};
</script>

File diff suppressed because it is too large Load Diff

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

@ -1,36 +1,89 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="仓库编号" prop="warehouseCode">
<el-input v-model="queryParams.warehouseCode" placeholder="请输入仓库编号" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.warehouseCode"
placeholder="请输入仓库编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="仓库名称" prop="warehouseName">
<el-input v-model="queryParams.warehouseName" placeholder="请输入仓库名称" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.warehouseName"
placeholder="请输入仓库名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="隶属业务线" prop="affiliatLineId">
<el-input v-model="queryParams.affiliatLineId" placeholder="请输入隶属业务线" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.affiliatLineId"
placeholder="请输入隶属业务线"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择类型" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
<el-select
v-model="queryParams.type"
placeholder="请选择类型"
clearable
size="small"
>
<el-option
v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="所在城市" prop="city">
<el-input v-model="queryParams.city" placeholder="请输入所在城市" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.city"
placeholder="请输入所在城市"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="成立时间" prop="establishDate">
<el-date-picker v-model="queryParams.establishDate" 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-date-picker
v-model="queryParams.establishDate"
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="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-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>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<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>
@ -38,14 +91,32 @@
<!-- 操作工具栏 -->
<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:warehouse:create']">新增</el-button>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['xxjj:warehouse: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:warehouse:export']">导出</el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['xxjj:warehouse:export']"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- 列表 -->
@ -54,40 +125,81 @@
<el-table-column label="仓库编号" align="center" prop="warehouseCode" />
<el-table-column label="仓库名称" align="center" prop="warehouseName" />
<el-table-column label="仓库简称" align="center" prop="warehouseSimple" />
<el-table-column label="隶属业务线" align="center" prop="affiliatLineId" />
<el-table-column
label="隶属业务线"
align="center"
prop="affiliatLineId"
/>
<el-table-column label="类型" align="center" prop="type">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.WAREHOUSE_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="所在城市" align="center" prop="city" />
<el-table-column label="成立时间" align="center" prop="establishDate" width="180">
<el-table-column
label="成立时间"
align="center"
prop="establishDate"
width="180"
>
<template v-slot="scope">
<span>{{ parseTime(scope.row.establishDate) }}</span>
</template>
</el-table-column>
<el-table-column label="归属人员" align="center" prop="belongUserId" />
<el-table-column label="介绍" align="center" prop="desc" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<el-table-column label="介绍" align="center" prop="description" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
>
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<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:warehouse:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:warehouse:delete']">删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:warehouse:update']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['xxjj:warehouse: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"/>
<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-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="warehouseCode">
<el-input v-model="form.warehouseCode" placeholder="请输入仓库编号" />
@ -96,28 +208,44 @@
<el-input v-model="form.warehouseName" placeholder="请输入仓库名称" />
</el-form-item>
<el-form-item label="仓库简称" prop="warehouseSimple">
<el-input v-model="form.warehouseSimple" placeholder="请输入仓库简称" />
<el-input
v-model="form.warehouseSimple"
placeholder="请输入仓库简称"
/>
</el-form-item>
<el-form-item label="隶属业务线" prop="affiliatLineId">
<el-input v-model="form.affiliatLineId" placeholder="请输入隶属业务线" />
<el-input
v-model="form.affiliatLineId"
placeholder="请输入隶属业务线"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="form.type" placeholder="请选择类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
<el-option
v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="所在城市" prop="city">
<el-input v-model="form.city" placeholder="请输入所在城市" />
</el-form-item>
<el-form-item label="成立时间" prop="establishDate">
<el-date-picker clearable v-model="form.establishDate" type="date" value-format="timestamp" placeholder="选择成立时间" />
<el-date-picker
clearable
v-model="form.establishDate"
type="date"
value-format="timestamp"
placeholder="选择成立时间"
/>
</el-form-item>
<el-form-item label="归属人员" prop="belongUserId">
<el-input v-model="form.belongUserId" placeholder="请输入归属人员" />
</el-form-item>
<el-form-item label="介绍" prop="desc">
<el-input v-model="form.desc" placeholder="请输入介绍" />
<el-form-item label="介绍" prop="description">
<el-input v-model="form.description" placeholder="请输入介绍" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -129,12 +257,18 @@
</template>
<script>
import { createWarehouse, updateWarehouse, deleteWarehouse, getWarehouse, getWarehousePage, exportWarehouseExcel } from "@/api/xxjj/warehouse";
import {
createWarehouse,
updateWarehouse,
deleteWarehouse,
getWarehouse,
getWarehousePage,
exportWarehouseExcel,
} from "@/api/xxjj/warehouse";
export default {
name: "Warehouse",
components: {
},
components: {},
data() {
return {
//
@ -167,14 +301,26 @@ export default {
form: {},
//
rules: {
warehouseCode: [{ required: true, message: "仓库编号不能为空", trigger: "blur" }],
warehouseName: [{ required: true, message: "仓库名称不能为空", trigger: "blur" }],
affiliatLineId: [{ required: true, message: "隶属业务线不能为空", trigger: "blur" }],
warehouseCode: [
{ required: true, message: "仓库编号不能为空", trigger: "blur" },
],
warehouseName: [
{ required: true, message: "仓库名称不能为空", trigger: "blur" },
],
affiliatLineId: [
{ required: true, message: "隶属业务线不能为空", trigger: "blur" },
],
type: [{ required: true, message: "类型不能为空", trigger: "change" }],
city: [{ required: true, message: "所在城市不能为空", trigger: "blur" }],
establishDate: [{ required: true, message: "成立时间不能为空", trigger: "blur" }],
belongUserId: [{ required: true, message: "归属人员不能为空", trigger: "blur" }],
}
city: [
{ required: true, message: "所在城市不能为空", trigger: "blur" },
],
establishDate: [
{ required: true, message: "成立时间不能为空", trigger: "blur" },
],
belongUserId: [
{ required: true, message: "归属人员不能为空", trigger: "blur" },
],
},
};
},
created() {
@ -185,7 +331,7 @@ export default {
getList() {
this.loading = true;
//
getWarehousePage(this.queryParams).then(response => {
getWarehousePage(this.queryParams).then((response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
@ -208,7 +354,7 @@ export default {
city: undefined,
establishDate: undefined,
belongUserId: undefined,
desc: undefined,
description: undefined,
};
this.resetForm("form");
},
@ -232,7 +378,7 @@ export default {
handleUpdate(row) {
this.reset();
const id = row.id;
getWarehouse(id).then(response => {
getWarehouse(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改仓库";
@ -240,13 +386,13 @@ export default {
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
this.$refs["form"].validate((valid) => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateWarehouse(this.form).then(response => {
updateWarehouse(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
@ -254,7 +400,7 @@ export default {
return;
}
//
createWarehouse(this.form).then(response => {
createWarehouse(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
@ -264,12 +410,16 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除仓库编号为"' + id + '"的数据项?').then(function() {
this.$modal
.confirm('是否确认删除仓库编号为"' + id + '"的数据项?')
.then(function () {
return deleteWarehouse(id);
}).then(() => {
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
@ -277,14 +427,18 @@ export default {
let params = { ...this.queryParams };
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有仓库数据项?').then(() => {
this.$modal
.confirm("是否确认导出所有仓库数据项?")
.then(() => {
this.exportLoading = true;
return exportWarehouseExcel(params);
}).then(response => {
this.$download.excel(response, '仓库.xls');
})
.then((response) => {
this.$download.excel(response, "仓库.xls");
this.exportLoading = false;
}).catch(() => {});
}
}
})
.catch(() => {});
},
},
};
</script>

Loading…
Cancel
Save