diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java index e354df95..a6ab677e 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java @@ -8,6 +8,7 @@ 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.enterprise.EnterpriseDO; import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; import com.yunxi.scm.module.system.service.dept.DeptService; import com.yunxi.scm.module.system.service.user.AdminUserService; @@ -205,4 +206,42 @@ public class UserController { list.sort(Comparator.comparing(AdminUserDO::getId)); return success(UserConvert.INSTANCE.convertList04(list)); } + + @GetMapping("/getUserDeptCompanyListuser") + @Operation(summary = "获取公司部门人员树", description = "只包含被开启的部门人员,主要用于前端的下拉选项") + public CommonResult> getUserDeptCompanyListuser() { + //查询所属公司信息 + AdminUserDO adminUserDO = userService.getUser(SecurityFrameworkUtils.getLoginUserId()); + EnterpriseDO enterpriseDO = adminUserDO.getEnterprise(); + UserDeptCompanyRespVO userDeptCompanyRespVO = new UserDeptCompanyRespVO(); + userDeptCompanyRespVO.setId("1-" + enterpriseDO.getId()); + userDeptCompanyRespVO.setLabel(enterpriseDO.getName()); + List list1 = new ArrayList<>(); + //查询公司下的部门 + DeptListReqVO deptListReqVO = new DeptListReqVO(); + deptListReqVO.setEnterpriseId(enterpriseDO.getId()); + List deptDOList = deptService.getDeptList(deptListReqVO); + for (DeptDO deptDO : deptDOList) { + UserDeptCompanyRespVO userDeptCompanyRespVO2 = new UserDeptCompanyRespVO(); + userDeptCompanyRespVO2.setId("2-" + deptDO.getId()); + userDeptCompanyRespVO2.setLabel(deptDO.getName()); + List list2 = new ArrayList<>(); + //查询部门下的人员 + UserRespVO reqVO = new UserRespVO(); + reqVO.setDeptId(deptDO.getId()); + List userDOList = userService.getselectuser(reqVO); + for (AdminUserDO user : userDOList) { + UserDeptCompanyRespVO userDeptCompanyRespVO3 = new UserDeptCompanyRespVO(); + userDeptCompanyRespVO3.setId("3-" + user.getId()); + userDeptCompanyRespVO3.setLabel(user.getNickname()); + list2.add(userDeptCompanyRespVO3); + } + userDeptCompanyRespVO2.setChildren(list2); + list1.add(userDeptCompanyRespVO2); + } + userDeptCompanyRespVO.setChildren(list1); + List list = new ArrayList<>(); + list.add(userDeptCompanyRespVO); + return success(list); + } } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserDeptCompanyRespVO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserDeptCompanyRespVO.java new file mode 100644 index 00000000..65016ceb --- /dev/null +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/user/UserDeptCompanyRespVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.system.controller.admin.user.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import java.util.List; + +@Schema(description = "管理后台 - 公司部门人员") +@Data +public class UserDeptCompanyRespVO { + private String id; + private String label; + private List children; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-api/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java b/yunxi-module-xxjj/yunxi-module-xxjj-api/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java index 7f031d64..68c4f749 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-api/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-api/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java @@ -91,6 +91,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCT_LABEL_NOT_EXISTS = new ErrorCode(1003004028, "商品标签不存在"); ErrorCode PRODUCT_MODIFICATION_NOT_EXISTS = new ErrorCode(1003004029, "批量修改单不存在"); ErrorCode PRODUCT_BOM_NOT_EXISTS = new ErrorCode(1003004030, "商品BOM管理不存在"); + ErrorCode PRODUCT_LNVENTORY_UNIT_NOT_EXISTS = new ErrorCode(1003004031, "商品表库存单位不存在"); /** * 合同 使用 1-005-000-000 段 */ @@ -107,4 +108,9 @@ public interface ErrorCodeConstants { // ========== 跟进报告管理 TODO 补充编号 ========== ErrorCode SUBJECT_FOLLOW_REPORT_NOT_EXISTS = new ErrorCode(1005000004, "跟进报告管理不存在"); + + // ========== 主体联系人 TODO 补充编号 ========== + ErrorCode SUBJECT_CONTACTS_NOT_EXISTS = new ErrorCode(1005000005, "主体联系人不存在"); + // ========== 主体代表人 TODO 补充编号 ========== + ErrorCode SUBJECT_REPRESENTATIVE_NOT_EXISTS = new ErrorCode(1005000006, "主体代表人不存在"); } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/contract/vo/contract/ContractPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/contract/vo/contract/ContractPageReqVO.java index 05c48d9b..865a0046 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/contract/vo/contract/ContractPageReqVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/contract/vo/contract/ContractPageReqVO.java @@ -14,6 +14,9 @@ import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MON @ToString(callSuper = true) public class ContractPageReqVO extends PageParam { + @Schema(description = "合同名称/编号", example = "xxx项目/10001") + private String content; + @Schema(description = "合同状态", example = "1") private String contractStatus; @@ -32,7 +35,6 @@ public class ContractPageReqVO extends PageParam { @Schema(description = "合同简称") private String contractShortName; - @Schema(description = "供应商/客户名称") private Long subject; @@ -63,4 +65,10 @@ public class ContractPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + /* ====================contract_info 表字段=========================== */ + @Schema(description = "配送方式", example = "2") + private String deliveryMethod; + + @Schema(description = "运输方式", example = "2") + private String modeTransport; } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java index 2a694a7c..f35809be 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java @@ -99,4 +99,12 @@ public class ProductController { ExcelUtils.write(response, "商品.xls", "数据", ProductExcelVO.class, datas); } + @GetMapping("/productPage") + @Operation(summary = "获得商品分页") + @PreAuthorize("@ss.hasPermission('xxjj:product:query1')") + public CommonResult> getProductPageList(@Valid ProductPageReqVO pageVO) { + PageResult pageResult = productService.ProductPageList1(pageVO); + return success(ProductConvert.INSTANCE.convertPage(pageResult)); + } + } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java index 1bef12c0..47e7dec8 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java @@ -1,5 +1,6 @@ package com.yunxi.scm.module.xxjj.controller.admin.product.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -287,4 +288,33 @@ public class ProductBaseVO { @Schema(description = "预留字段6") private String reservedFields6; + @TableField(exist = false) + private Integer ctaeId; + + @TableField(exist = false) + private String categoryName; + + @TableField(exist = false) + private String brandName; + + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "销售状态") + private String salesStatus; + + //首选供应商 + @TableField(exist = false) + private String supplierName; + + //首选类目 + @TableField(exist = false) + private String parameterName; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime updateTime; + + @TableField(exist = false) + private String nickname; } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java index 204565a5..f3aa2537 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java @@ -303,4 +303,9 @@ public class ProductExcelVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "销售状态") + private String salesStatus; } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java index 2b3d8f97..a5ed71d1 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java @@ -1,5 +1,6 @@ package com.yunxi.scm.module.xxjj.controller.admin.product.vo; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -277,4 +278,20 @@ public class ProductExportReqVO { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] updateTime; + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "销售状态") + private String salesStatus; + + //首选供应商 + @TableField(exist = false) + private String supplierName; + + //首选类目 + @TableField(exist = false) + private String parameterName; + + @TableField(exist = false) + private String nickname; } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java index a7b8589d..78780fad 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java @@ -1,5 +1,6 @@ package com.yunxi.scm.module.xxjj.controller.admin.product.vo; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -142,7 +143,8 @@ public class ProductPageReqVO extends PageParam { private String salesAllowOverchargingRatio; @Schema(description = "销售时间开始") - private LocalDateTime salesStart; + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] salesStart; @Schema(description = "销售时间结束") private LocalDateTime salesEnd; @@ -278,4 +280,30 @@ public class ProductPageReqVO extends PageParam { @Schema(description = "更新时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] updateTime; + + + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "销售状态") + private String salesStatus; + + //首选供应商 + @TableField(exist = false) + private String supplierName; + + //首选类目 + @TableField(exist = false) + private String parameterName; + + @TableField(exist = false) + private String nickname; + + @TableField(exist = false) + private String categoryName; + + @TableField(exist = false) + private String brandName; + + } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/ProductLnventoryUnitController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/ProductLnventoryUnitController.java new file mode 100644 index 00000000..fa084248 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/ProductLnventoryUnitController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit; + +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.productlnventoryunit.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productlnventoryunit.ProductLnventoryUnitDO; +import com.yunxi.scm.module.xxjj.convert.productlnventoryunit.ProductLnventoryUnitConvert; +import com.yunxi.scm.module.xxjj.service.productlnventoryunit.ProductLnventoryUnitService; + +@Tag(name = "管理后台 - 商品表库存单位") +@RestController +@RequestMapping("/xxjj/product-lnventory-unit") +@Validated +public class ProductLnventoryUnitController { + + @Resource + private ProductLnventoryUnitService productLnventoryUnitService; + + @PostMapping("/create") + @Operation(summary = "创建商品表库存单位") + @PreAuthorize("@ss.hasPermission('xxjj:product-lnventory-unit:create')") + public CommonResult createProductLnventoryUnit(@Valid @RequestBody ProductLnventoryUnitCreateReqVO createReqVO) { + return success(productLnventoryUnitService.createProductLnventoryUnit(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新商品表库存单位") + @PreAuthorize("@ss.hasPermission('xxjj:product-lnventory-unit:update')") + public CommonResult updateProductLnventoryUnit(@Valid @RequestBody ProductLnventoryUnitUpdateReqVO updateReqVO) { + productLnventoryUnitService.updateProductLnventoryUnit(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除商品表库存单位") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:product-lnventory-unit:delete')") + public CommonResult deleteProductLnventoryUnit(@RequestParam("id") Long id) { + productLnventoryUnitService.deleteProductLnventoryUnit(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得商品表库存单位") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:product-lnventory-unit:query')") + public CommonResult getProductLnventoryUnit(@RequestParam("id") Long id) { + ProductLnventoryUnitDO productLnventoryUnit = productLnventoryUnitService.getProductLnventoryUnit(id); + return success(ProductLnventoryUnitConvert.INSTANCE.convert(productLnventoryUnit)); + } + + @GetMapping("/list") + @Operation(summary = "获得商品表库存单位列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:product-lnventory-unit:query')") + public CommonResult> getProductLnventoryUnitList(@RequestParam("ids") Collection ids) { + List list = productLnventoryUnitService.getProductLnventoryUnitList(ids); + return success(ProductLnventoryUnitConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得商品表库存单位分页") + @PreAuthorize("@ss.hasPermission('xxjj:product-lnventory-unit:query')") + public CommonResult> getProductLnventoryUnitPage(@Valid ProductLnventoryUnitPageReqVO pageVO) { + PageResult pageResult = productLnventoryUnitService.getProductLnventoryUnitPage(pageVO); + return success(ProductLnventoryUnitConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出商品表库存单位 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:product-lnventory-unit:export')") + @OperateLog(type = EXPORT) + public void exportProductLnventoryUnitExcel(@Valid ProductLnventoryUnitExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productLnventoryUnitService.getProductLnventoryUnitList(exportReqVO); + // 导出 Excel + List datas = ProductLnventoryUnitConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "商品表库存单位.xls", "数据", ProductLnventoryUnitExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitBaseVO.java new file mode 100644 index 00000000..8342f408 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitBaseVO.java @@ -0,0 +1,59 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.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 ProductLnventoryUnitBaseVO { + + @Schema(description = "单位名称", example = "李四") + private String productUnitName; + + @Schema(description = "商品id", example = "21653") + private Long prouctId; + + @Schema(description = "换算规则1") + private String conversionRules1; + + @Schema(description = "换算规则2") + private String conversionRules2; + + @Schema(description = "包装条码") + private String packagingBarcode; + + @Schema(description = "尺寸单位(1:厘米cm 2:米m)") + private String dimensionalUnit; + + @Schema(description = "尺寸信息1") + private Object sizeInformation1; + + @Schema(description = "尺寸信息2") + private Object sizeInformation2; + + @Schema(description = "尺寸信息3") + private Object sizeInformation3; + + @Schema(description = "体积信息") + private Object volumeInformation; + + @Schema(description = "体积单位(1:立方厘米cm 2:立方米m)") + private String volumeInformationUnit; + + @Schema(description = "重量单位(1:克 2:千克 3:吨)") + private String weight; + + @Schema(description = "毛重") + private Object grossWeight; + + @Schema(description = "净重") + private Object netWeight; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitCreateReqVO.java new file mode 100644 index 00000000..2d4238cc --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.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 ProductLnventoryUnitCreateReqVO extends ProductLnventoryUnitBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitExcelVO.java new file mode 100644 index 00000000..81f7e36c --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitExcelVO.java @@ -0,0 +1,73 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.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; +import com.yunxi.scm.framework.excel.core.annotations.DictFormat; +import com.yunxi.scm.framework.excel.core.convert.DictConvert; + + +/** + * 商品表库存单位 Excel VO + * + * @author 长江云息 + */ +@Data +public class ProductLnventoryUnitExcelVO { + + @ExcelProperty("编号") + private Long id; + + @ExcelProperty("单位名称") + private String productUnitName; + + @ExcelProperty("商品id") + private Long prouctId; + + @ExcelProperty("换算规则1") + private String conversionRules1; + + @ExcelProperty("换算规则2") + private String conversionRules2; + + @ExcelProperty("包装条码") + private String packagingBarcode; + + @ExcelProperty(value = "尺寸单位(1:厘米cm 2:米m)", converter = DictConvert.class) + @DictFormat("dimensional_unit") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String dimensionalUnit; + + @ExcelProperty("尺寸信息1") + private Object sizeInformation1; + + @ExcelProperty("尺寸信息2") + private Object sizeInformation2; + + @ExcelProperty("尺寸信息3") + private Object sizeInformation3; + + @ExcelProperty("体积信息") + private Object volumeInformation; + + @ExcelProperty(value = "体积单位(1:立方厘米cm 2:立方米m)", converter = DictConvert.class) + @DictFormat("volume_information_unit") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String volumeInformationUnit; + + @ExcelProperty(value = "重量单位(1:克 2:千克 3:吨)", converter = DictConvert.class) + @DictFormat("product_weight") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String weight; + + @ExcelProperty("毛重") + private Object grossWeight; + + @ExcelProperty("净重") + private Object netWeight; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitExportReqVO.java new file mode 100644 index 00000000..83dc5d85 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitExportReqVO.java @@ -0,0 +1,62 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.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,参数和 ProductLnventoryUnitPageReqVO 是一致的") +@Data +public class ProductLnventoryUnitExportReqVO { + + @Schema(description = "单位名称", example = "李四") + private String productUnitName; + + @Schema(description = "商品id", example = "21653") + private Long prouctId; + + @Schema(description = "换算规则1") + private String conversionRules1; + + @Schema(description = "换算规则2") + private String conversionRules2; + + @Schema(description = "包装条码") + private String packagingBarcode; + + @Schema(description = "尺寸单位(1:厘米cm 2:米m)") + private String dimensionalUnit; + + @Schema(description = "尺寸信息1") + private Object sizeInformation1; + + @Schema(description = "尺寸信息2") + private Object sizeInformation2; + + @Schema(description = "尺寸信息3") + private Object sizeInformation3; + + @Schema(description = "体积信息") + private Object volumeInformation; + + @Schema(description = "体积单位(1:立方厘米cm 2:立方米m)") + private String volumeInformationUnit; + + @Schema(description = "重量单位(1:克 2:千克 3:吨)") + private String weight; + + @Schema(description = "毛重") + private Object grossWeight; + + @Schema(description = "净重") + private Object netWeight; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitPageReqVO.java new file mode 100644 index 00000000..259e79dc --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitPageReqVO.java @@ -0,0 +1,64 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.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 ProductLnventoryUnitPageReqVO extends PageParam { + + @Schema(description = "单位名称", example = "李四") + private String productUnitName; + + @Schema(description = "商品id", example = "21653") + private Long prouctId; + + @Schema(description = "换算规则1") + private String conversionRules1; + + @Schema(description = "换算规则2") + private String conversionRules2; + + @Schema(description = "包装条码") + private String packagingBarcode; + + @Schema(description = "尺寸单位(1:厘米cm 2:米m)") + private String dimensionalUnit; + + @Schema(description = "尺寸信息1") + private Object sizeInformation1; + + @Schema(description = "尺寸信息2") + private Object sizeInformation2; + + @Schema(description = "尺寸信息3") + private Object sizeInformation3; + + @Schema(description = "体积信息") + private Object volumeInformation; + + @Schema(description = "体积单位(1:立方厘米cm 2:立方米m)") + private String volumeInformationUnit; + + @Schema(description = "重量单位(1:克 2:千克 3:吨)") + private String weight; + + @Schema(description = "毛重") + private Object grossWeight; + + @Schema(description = "净重") + private Object netWeight; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitRespVO.java new file mode 100644 index 00000000..3917d6bf --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.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 ProductLnventoryUnitRespVO extends ProductLnventoryUnitBaseVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27397") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitUpdateReqVO.java new file mode 100644 index 00000000..e492c3c2 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productlnventoryunit/vo/ProductLnventoryUnitUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.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 ProductLnventoryUnitUpdateReqVO extends ProductLnventoryUnitBaseVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27397") + @NotNull(message = "编号不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicBaseVO.java index 87f9aea5..39c71a4e 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicBaseVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicBaseVO.java @@ -1,5 +1,8 @@ package com.yunxi.scm.module.xxjj.controller.admin.subjectbasic.vo; +import com.yunxi.scm.module.system.dal.dataobject.businesswarehouse.BusinessWarehouseDO; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectcontacts.SubjectContactsDO; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectrepresentative.SubjectRepresentativeDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -208,12 +211,21 @@ public class SubjectBasicBaseVO { @Schema(description = "合作方式(0:买断 1:联营)") private String collaborationMethod; + private String settlementCycle; + private LocalDateTime settlementStartDate; + private String settlementDate; + private String commissionType; + private String defaultCommissionRatio; + private String commissionCalculationBase; + private String customizeCommissionRule; @Schema(description = "结算方式(0:先货后款 1:先款后货)") private String settlementMethod; @Schema(description = "账期") private String accountPeriod; + @Schema(description = "预付比例") + private String advanceRatio; @Schema(description = "压款方式(0:无 1:按金额 2:按比例)") private String underpaymentMethod; @@ -271,6 +283,14 @@ public class SubjectBasicBaseVO { @Schema(description = "完税证明超时限制") private Long taxPaymentCertificate; + @Schema(description = "联系人列表") + private List subjectContactsDOList; + + @Schema(description = "代表人信息列表") + private List subjectRepresentativeDOList; + + @Schema(description = "业务线信息列表") + private List businessWarehouseDOList; @Schema(description = "客户类型") private String customType; diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExcelVO.java index 528dea42..3d6e27fc 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExcelVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExcelVO.java @@ -202,6 +202,9 @@ public class SubjectBasicExcelVO { @ExcelProperty("账期") private String accountPeriod; + @ExcelProperty("预付比例") + private String advanceRatio; + @ExcelProperty("压款方式(0:无 1:按金额 2:按比例)") private String underpaymentMethod; diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExportReqVO.java index 271582bb..3261756b 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExportReqVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicExportReqVO.java @@ -181,12 +181,23 @@ public class SubjectBasicExportReqVO { @Schema(description = "合作方式(0:买断 1:联营)") private String collaborationMethod; + private String settlementCycle; + private LocalDateTime settlementStartDate; + private String settlementDate; + private String commissionType; + private String defaultCommissionRatio; + private String commissionCalculationBase; + private String customizeCommissionRule; + @Schema(description = "结算方式(0:先货后款 1:先款后货)") private String settlementMethod; @Schema(description = "账期") private String accountPeriod; + @Schema(description = "预付比例") + private String advanceRatio; + @Schema(description = "压款方式(0:无 1:按金额 2:按比例)") private String underpaymentMethod; diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicPageReqVO.java index 430e16d2..f8af8bff 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicPageReqVO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectbasic/vo/SubjectBasicPageReqVO.java @@ -186,12 +186,23 @@ public class SubjectBasicPageReqVO extends PageParam { @Schema(description = "合作方式(0:买断 1:联营)") private String collaborationMethod; + private String settlementCycle; + private LocalDateTime settlementStartDate; + private String settlementDate; + private String commissionType; + private String defaultCommissionRatio; + private String commissionCalculationBase; + private String customizeCommissionRule; + @Schema(description = "结算方式(0:先货后款 1:先款后货)") private String settlementMethod; @Schema(description = "账期") private String accountPeriod; + @Schema(description = "预付比例") + private String advanceRatio; + @Schema(description = "压款方式(0:无 1:按金额 2:按比例)") private String underpaymentMethod; diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/SubjectContactsController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/SubjectContactsController.java new file mode 100644 index 00000000..938b0db3 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/SubjectContactsController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts; + +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.subjectcontacts.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectcontacts.SubjectContactsDO; +import com.yunxi.scm.module.xxjj.convert.subjectcontacts.SubjectContactsConvert; +import com.yunxi.scm.module.xxjj.service.subjectcontacts.SubjectContactsService; + +@Tag(name = "管理后台 - 主体联系人") +@RestController +@RequestMapping("/xxjj/subject-contacts") +@Validated +public class SubjectContactsController { + + @Resource + private SubjectContactsService subjectContactsService; + + @PostMapping("/create") + @Operation(summary = "创建主体联系人") + @PreAuthorize("@ss.hasPermission('xxjj:subject-contacts:create')") + public CommonResult createSubjectContacts(@Valid @RequestBody SubjectContactsCreateReqVO createReqVO) { + return success(subjectContactsService.createSubjectContacts(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新主体联系人") + @PreAuthorize("@ss.hasPermission('xxjj:subject-contacts:update')") + public CommonResult updateSubjectContacts(@Valid @RequestBody SubjectContactsUpdateReqVO updateReqVO) { + subjectContactsService.updateSubjectContacts(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除主体联系人") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:subject-contacts:delete')") + public CommonResult deleteSubjectContacts(@RequestParam("id") Long id) { + subjectContactsService.deleteSubjectContacts(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得主体联系人") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:subject-contacts:query')") + public CommonResult getSubjectContacts(@RequestParam("id") Long id) { + SubjectContactsDO subjectContacts = subjectContactsService.getSubjectContacts(id); + return success(SubjectContactsConvert.INSTANCE.convert(subjectContacts)); + } + + @GetMapping("/list") + @Operation(summary = "获得主体联系人列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:subject-contacts:query')") + public CommonResult> getSubjectContactsList(@RequestParam("ids") Collection ids) { + List list = subjectContactsService.getSubjectContactsList(ids); + return success(SubjectContactsConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得主体联系人分页") + @PreAuthorize("@ss.hasPermission('xxjj:subject-contacts:query')") + public CommonResult> getSubjectContactsPage(@Valid SubjectContactsPageReqVO pageVO) { + PageResult pageResult = subjectContactsService.getSubjectContactsPage(pageVO); + return success(SubjectContactsConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出主体联系人 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:subject-contacts:export')") + @OperateLog(type = EXPORT) + public void exportSubjectContactsExcel(@Valid SubjectContactsExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = subjectContactsService.getSubjectContactsList(exportReqVO); + // 导出 Excel + List datas = SubjectContactsConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "主体联系人.xls", "数据", SubjectContactsExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsBaseVO.java new file mode 100644 index 00000000..81511475 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsBaseVO.java @@ -0,0 +1,57 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.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 SubjectContactsBaseVO { + + @Schema(description = "业务id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18892") + @NotNull(message = "业务id不能为空") + private Long businessId; + + @Schema(description = "业务类型(0:客户 1:供应商 2:服务商)", example = "2") + private String businessType; + + @Schema(description = "联系人类型(0:默认 1:联系人)", example = "1") + private String contactsType; + + @Schema(description = "是否星标(0:否 1:是)", example = "1") + private String asteriskType; + + @Schema(description = "标记颜色") + private String markColor; + + @Schema(description = "姓名", example = "张三") + private String name; + + @Schema(description = "公司", example = "王五") + private String companyName; + + @Schema(description = "职务") + private String position; + + @Schema(description = "手机") + private String mobile; + + @Schema(description = "电话") + private String phone; + + @Schema(description = "邮箱") + private String emaile; + + @Schema(description = "地址") + private String address; + + @Schema(description = "附件") + private String annex; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsCreateReqVO.java new file mode 100644 index 00000000..4e440212 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.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 SubjectContactsCreateReqVO extends SubjectContactsBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsExcelVO.java new file mode 100644 index 00000000..f5e55ca4 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsExcelVO.java @@ -0,0 +1,64 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.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 SubjectContactsExcelVO { + + @ExcelProperty("主键id") + private Long id; + + @ExcelProperty("业务id") + private Long businessId; + + @ExcelProperty("业务类型(0:客户 1:供应商 2:服务商)") + private String businessType; + + @ExcelProperty("联系人类型(0:默认 1:联系人)") + private String contactsType; + + @ExcelProperty("是否星标(0:否 1:是)") + private String asteriskType; + + @ExcelProperty("标记颜色") + private String markColor; + + @ExcelProperty("姓名") + private String name; + + @ExcelProperty("公司") + private String companyName; + + @ExcelProperty("职务") + private String position; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("邮箱") + private String emaile; + + @ExcelProperty("地址") + private String address; + + @ExcelProperty("附件") + private String annex; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsExportReqVO.java new file mode 100644 index 00000000..8954d50d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsExportReqVO.java @@ -0,0 +1,59 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.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,参数和 SubjectContactsPageReqVO 是一致的") +@Data +public class SubjectContactsExportReqVO { + + @Schema(description = "业务id", example = "18892") + private Long businessId; + + @Schema(description = "业务类型(0:客户 1:供应商 2:服务商)", example = "2") + private String businessType; + + @Schema(description = "联系人类型(0:默认 1:联系人)", example = "1") + private String contactsType; + + @Schema(description = "是否星标(0:否 1:是)", example = "1") + private String asteriskType; + + @Schema(description = "标记颜色") + private String markColor; + + @Schema(description = "姓名", example = "张三") + private String name; + + @Schema(description = "公司", example = "王五") + private String companyName; + + @Schema(description = "职务") + private String position; + + @Schema(description = "手机") + private String mobile; + + @Schema(description = "电话") + private String phone; + + @Schema(description = "邮箱") + private String emaile; + + @Schema(description = "地址") + private String address; + + @Schema(description = "附件") + private String annex; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsPageReqVO.java new file mode 100644 index 00000000..0c75d85b --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsPageReqVO.java @@ -0,0 +1,61 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.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 SubjectContactsPageReqVO extends PageParam { + + @Schema(description = "业务id", example = "18892") + private Long businessId; + + @Schema(description = "业务类型(0:客户 1:供应商 2:服务商)", example = "2") + private String businessType; + + @Schema(description = "联系人类型(0:默认 1:联系人)", example = "1") + private String contactsType; + + @Schema(description = "是否星标(0:否 1:是)", example = "1") + private String asteriskType; + + @Schema(description = "标记颜色") + private String markColor; + + @Schema(description = "姓名", example = "张三") + private String name; + + @Schema(description = "公司", example = "王五") + private String companyName; + + @Schema(description = "职务") + private String position; + + @Schema(description = "手机") + private String mobile; + + @Schema(description = "电话") + private String phone; + + @Schema(description = "邮箱") + private String emaile; + + @Schema(description = "地址") + private String address; + + @Schema(description = "附件") + private String annex; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsRespVO.java new file mode 100644 index 00000000..22092699 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.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 SubjectContactsRespVO extends SubjectContactsBaseVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12197") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsUpdateReqVO.java new file mode 100644 index 00000000..20fda46b --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectcontacts/vo/SubjectContactsUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.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 SubjectContactsUpdateReqVO extends SubjectContactsBaseVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12197") + @NotNull(message = "主键id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/SubjectRepresentativeController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/SubjectRepresentativeController.java new file mode 100644 index 00000000..54856537 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/SubjectRepresentativeController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative; + +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.subjectrepresentative.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectrepresentative.SubjectRepresentativeDO; +import com.yunxi.scm.module.xxjj.convert.subjectrepresentative.SubjectRepresentativeConvert; +import com.yunxi.scm.module.xxjj.service.subjectrepresentative.SubjectRepresentativeService; + +@Tag(name = "管理后台 - 主体代表人") +@RestController +@RequestMapping("/xxjj/subject-representative") +@Validated +public class SubjectRepresentativeController { + + @Resource + private SubjectRepresentativeService subjectRepresentativeService; + + @PostMapping("/create") + @Operation(summary = "创建主体代表人") + @PreAuthorize("@ss.hasPermission('xxjj:subject-representative:create')") + public CommonResult createSubjectRepresentative(@Valid @RequestBody SubjectRepresentativeCreateReqVO createReqVO) { + return success(subjectRepresentativeService.createSubjectRepresentative(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新主体代表人") + @PreAuthorize("@ss.hasPermission('xxjj:subject-representative:update')") + public CommonResult updateSubjectRepresentative(@Valid @RequestBody SubjectRepresentativeUpdateReqVO updateReqVO) { + subjectRepresentativeService.updateSubjectRepresentative(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除主体代表人") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:subject-representative:delete')") + public CommonResult deleteSubjectRepresentative(@RequestParam("id") Long id) { + subjectRepresentativeService.deleteSubjectRepresentative(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得主体代表人") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:subject-representative:query')") + public CommonResult getSubjectRepresentative(@RequestParam("id") Long id) { + SubjectRepresentativeDO subjectRepresentative = subjectRepresentativeService.getSubjectRepresentative(id); + return success(SubjectRepresentativeConvert.INSTANCE.convert(subjectRepresentative)); + } + + @GetMapping("/list") + @Operation(summary = "获得主体代表人列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:subject-representative:query')") + public CommonResult> getSubjectRepresentativeList(@RequestParam("ids") Collection ids) { + List list = subjectRepresentativeService.getSubjectRepresentativeList(ids); + return success(SubjectRepresentativeConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得主体代表人分页") + @PreAuthorize("@ss.hasPermission('xxjj:subject-representative:query')") + public CommonResult> getSubjectRepresentativePage(@Valid SubjectRepresentativePageReqVO pageVO) { + PageResult pageResult = subjectRepresentativeService.getSubjectRepresentativePage(pageVO); + return success(SubjectRepresentativeConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出主体代表人 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:subject-representative:export')") + @OperateLog(type = EXPORT) + public void exportSubjectRepresentativeExcel(@Valid SubjectRepresentativeExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = subjectRepresentativeService.getSubjectRepresentativeList(exportReqVO); + // 导出 Excel + List datas = SubjectRepresentativeConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "主体代表人.xls", "数据", SubjectRepresentativeExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeBaseVO.java new file mode 100644 index 00000000..0f66e5c6 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeBaseVO.java @@ -0,0 +1,61 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 主体代表人 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class SubjectRepresentativeBaseVO { + + @Schema(description = "业务id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14287") + @NotNull(message = "业务id不能为空") + private Long businessId; + + @Schema(description = "业务类型(0:客户 1:供应商 2:服务商)", example = "1") + private String businessType; + + @Schema(description = "代表人类型(0:法定代表人 1:代办人 1:实控人 1:担保人)", example = "1") + private String representativeType; + + @Schema(description = "姓名", example = "赵六") + private String name; + + @Schema(description = "身份证号") + private String idCard; + + @Schema(description = "证件有效时间开始") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime idCardStart; + + @Schema(description = "证件有效时间结束") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime idCardEnd; + + @Schema(description = "描述", example = "随便") + private String description; + + @Schema(description = "证件照正面") + private String idCardPhoto1; + + @Schema(description = "证件照反面") + private String idCardPhoto2; + + @Schema(description = "手持证件照") + private String idCardPhoto3; + + @Schema(description = "授权/证明文件") + private String authorizeFiles; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeCreateReqVO.java new file mode 100644 index 00000000..f8d73100 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.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 SubjectRepresentativeCreateReqVO extends SubjectRepresentativeBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeExcelVO.java new file mode 100644 index 00000000..46c646f5 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeExcelVO.java @@ -0,0 +1,63 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 主体代表人 Excel VO + * + * @author 长江云息 + */ +@Data +public class SubjectRepresentativeExcelVO { + + @ExcelProperty("主键id") + private Long id; + + @ExcelProperty("业务id") + private Long businessId; + + @ExcelProperty("业务类型(0:客户 1:供应商 2:服务商)") + private String businessType; + + @ExcelProperty("代表人类型(0:法定代表人 1:代办人 1:实控人 1:担保人)") + private String representativeType; + + @ExcelProperty("姓名") + private String name; + + @ExcelProperty("身份证号") + private String idCard; + + @ExcelProperty("证件有效时间开始") + private LocalDateTime idCardStart; + + @ExcelProperty("证件有效时间结束") + private LocalDateTime idCardEnd; + + @ExcelProperty("描述") + private String description; + + @ExcelProperty("证件照正面") + private String idCardPhoto1; + + @ExcelProperty("证件照反面") + private String idCardPhoto2; + + @ExcelProperty("手持证件照") + private String idCardPhoto3; + + @ExcelProperty("授权/证明文件") + private String authorizeFiles; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeExportReqVO.java new file mode 100644 index 00000000..094b0254 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeExportReqVO.java @@ -0,0 +1,56 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.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,参数和 SubjectRepresentativePageReqVO 是一致的") +@Data +public class SubjectRepresentativeExportReqVO { + + @Schema(description = "业务id", example = "14287") + private Long businessId; + + @Schema(description = "业务类型(0:客户 1:供应商 2:服务商)", example = "1") + private String businessType; + + @Schema(description = "代表人类型(0:法定代表人 1:代办人 1:实控人 1:担保人)", example = "1") + private String representativeType; + + @Schema(description = "姓名", example = "赵六") + private String name; + + @Schema(description = "身份证号") + private String idCard; + + @Schema(description = "证件有效时间开始") + private LocalDateTime idCardStart; + + @Schema(description = "证件有效时间结束") + private LocalDateTime idCardEnd; + + @Schema(description = "描述", example = "随便") + private String description; + + @Schema(description = "证件照正面") + private String idCardPhoto1; + + @Schema(description = "证件照反面") + private String idCardPhoto2; + + @Schema(description = "手持证件照") + private String idCardPhoto3; + + @Schema(description = "授权/证明文件") + private String authorizeFiles; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativePageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativePageReqVO.java new file mode 100644 index 00000000..150e5b2a --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativePageReqVO.java @@ -0,0 +1,58 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.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 SubjectRepresentativePageReqVO extends PageParam { + + @Schema(description = "业务id", example = "14287") + private Long businessId; + + @Schema(description = "业务类型(0:客户 1:供应商 2:服务商)", example = "1") + private String businessType; + + @Schema(description = "代表人类型(0:法定代表人 1:代办人 1:实控人 1:担保人)", example = "1") + private String representativeType; + + @Schema(description = "姓名", example = "赵六") + private String name; + + @Schema(description = "身份证号") + private String idCard; + + @Schema(description = "证件有效时间开始") + private LocalDateTime idCardStart; + + @Schema(description = "证件有效时间结束") + private LocalDateTime idCardEnd; + + @Schema(description = "描述", example = "随便") + private String description; + + @Schema(description = "证件照正面") + private String idCardPhoto1; + + @Schema(description = "证件照反面") + private String idCardPhoto2; + + @Schema(description = "手持证件照") + private String idCardPhoto3; + + @Schema(description = "授权/证明文件") + private String authorizeFiles; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeRespVO.java new file mode 100644 index 00000000..851f0d54 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.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 SubjectRepresentativeRespVO extends SubjectRepresentativeBaseVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21687") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeUpdateReqVO.java new file mode 100644 index 00000000..153bdb24 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/subjectrepresentative/vo/SubjectRepresentativeUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.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 SubjectRepresentativeUpdateReqVO extends SubjectRepresentativeBaseVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21687") + @NotNull(message = "主键id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productlnventoryunit/ProductLnventoryUnitConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productlnventoryunit/ProductLnventoryUnitConvert.java new file mode 100644 index 00000000..485abe5d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productlnventoryunit/ProductLnventoryUnitConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.productlnventoryunit; + +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.productlnventoryunit.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productlnventoryunit.ProductLnventoryUnitDO; + +/** + * 商品表库存单位 Convert + * + * @author 长江云息 + */ +@Mapper +public interface ProductLnventoryUnitConvert { + + ProductLnventoryUnitConvert INSTANCE = Mappers.getMapper(ProductLnventoryUnitConvert.class); + + ProductLnventoryUnitDO convert(ProductLnventoryUnitCreateReqVO bean); + + ProductLnventoryUnitDO convert(ProductLnventoryUnitUpdateReqVO bean); + + ProductLnventoryUnitRespVO convert(ProductLnventoryUnitDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/subjectcontacts/SubjectContactsConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/subjectcontacts/SubjectContactsConvert.java new file mode 100644 index 00000000..9da7108c --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/subjectcontacts/SubjectContactsConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.subjectcontacts; + +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.subjectcontacts.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectcontacts.SubjectContactsDO; + +/** + * 主体联系人 Convert + * + * @author 长江云息 + */ +@Mapper +public interface SubjectContactsConvert { + + SubjectContactsConvert INSTANCE = Mappers.getMapper(SubjectContactsConvert.class); + + SubjectContactsDO convert(SubjectContactsCreateReqVO bean); + + SubjectContactsDO convert(SubjectContactsUpdateReqVO bean); + + SubjectContactsRespVO convert(SubjectContactsDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/subjectrepresentative/SubjectRepresentativeConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/subjectrepresentative/SubjectRepresentativeConvert.java new file mode 100644 index 00000000..721d49ec --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/subjectrepresentative/SubjectRepresentativeConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.subjectrepresentative; + +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.subjectrepresentative.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectrepresentative.SubjectRepresentativeDO; + +/** + * 主体代表人 Convert + * + * @author 长江云息 + */ +@Mapper +public interface SubjectRepresentativeConvert { + + SubjectRepresentativeConvert INSTANCE = Mappers.getMapper(SubjectRepresentativeConvert.class); + + SubjectRepresentativeDO convert(SubjectRepresentativeCreateReqVO bean); + + SubjectRepresentativeDO convert(SubjectRepresentativeUpdateReqVO bean); + + SubjectRepresentativeRespVO convert(SubjectRepresentativeDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java index c79577d5..cbff1b99 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java @@ -1,6 +1,7 @@ package com.yunxi.scm.module.xxjj.dal.dataobject.product; import com.sun.xml.bind.v2.TODO; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -417,4 +418,32 @@ public class ProductDO extends BaseDO { */ @TableField(exist = false) private String updaterName; + + @TableField(exist = false) + private Integer ctaeId; + + @TableField(exist = false) + private String categoryName; + + @TableField(exist = false) + private String brandName; + + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "销售状态") + private String salesStatus; + + //首选供应商 + @TableField(exist = false) + private String supplierName; + + //首选类目 + @TableField(exist = false) + private String parameterName; + + private LocalDateTime updateTime; + + @TableField(exist = false) + private String nickname; } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productlnventoryunit/ProductLnventoryUnitDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productlnventoryunit/ProductLnventoryUnitDO.java new file mode 100644 index 00000000..849790a5 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productlnventoryunit/ProductLnventoryUnitDO.java @@ -0,0 +1,93 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.productlnventoryunit; + +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_product_lnventory_unit") +@KeySequence("xxjj_product_lnventory_unit_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProductLnventoryUnitDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 单位名称 + */ + private String productUnitName; + /** + * 商品id + */ + private Long prouctId; + /** + * 换算规则1 + */ + private String conversionRules1; + /** + * 换算规则2 + */ + private String conversionRules2; + /** + * 包装条码 + */ + private String packagingBarcode; + /** + * 尺寸单位(1:厘米cm 2:米m) + * + * 枚举 {@link TODO dimensional_unit 对应的类} + */ + private String dimensionalUnit; + /** + * 尺寸信息1 + */ + private Object sizeInformation1; + /** + * 尺寸信息2 + */ + private Object sizeInformation2; + /** + * 尺寸信息3 + */ + private Object sizeInformation3; + /** + * 体积信息 + */ + private Object volumeInformation; + /** + * 体积单位(1:立方厘米cm 2:立方米m) + * + * 枚举 {@link TODO volume_information_unit 对应的类} + */ + private String volumeInformationUnit; + /** + * 重量单位(1:克 2:千克 3:吨) + * + * 枚举 {@link TODO product_weight 对应的类} + */ + private String weight; + /** + * 毛重 + */ + private Object grossWeight; + /** + * 净重 + */ + private Object netWeight; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectbasic/SubjectBasicDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectbasic/SubjectBasicDO.java index e180f61c..bb8f719f 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectbasic/SubjectBasicDO.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectbasic/SubjectBasicDO.java @@ -262,6 +262,19 @@ public class SubjectBasicDO extends BaseDO { * 合作方式(0:买断 1:联营) */ private String collaborationMethod; + + + + private String settlementCycle; + private LocalDateTime settlementStartDate; + private String settlementDate; + private String commissionType; + private String defaultCommissionRatio; + private String commissionCalculationBase; + private String customizeCommissionRule; + + + /** * 结算方式(0:先货后款 1:先款后货) */ @@ -270,6 +283,12 @@ public class SubjectBasicDO extends BaseDO { * 账期 */ private String accountPeriod; + + /** + * 预付比例 + */ + private String advanceRatio; + /** * 压款方式(0:无 1:按金额 2:按比例) */ diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectcontacts/SubjectContactsDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectcontacts/SubjectContactsDO.java new file mode 100644 index 00000000..e58e51c0 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectcontacts/SubjectContactsDO.java @@ -0,0 +1,83 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.subjectcontacts; + +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_subject_contacts") +@KeySequence("xxjj_subject_contacts_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SubjectContactsDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 业务id + */ + private Long businessId; + /** + * 业务类型(0:客户 1:供应商 2:服务商) + */ + private String businessType; + /** + * 联系人类型(0:默认 1:联系人) + */ + private String contactsType; + /** + * 是否星标(0:否 1:是) + */ + private String asteriskType; + /** + * 标记颜色 + */ + private String markColor; + /** + * 姓名 + */ + private String name; + /** + * 公司 + */ + private String companyName; + /** + * 职务 + */ + private String position; + /** + * 手机 + */ + private String mobile; + /** + * 电话 + */ + private String phone; + /** + * 邮箱 + */ + private String emaile; + /** + * 地址 + */ + private String address; + /** + * 附件 + */ + private String annex; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectrepresentative/SubjectRepresentativeDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectrepresentative/SubjectRepresentativeDO.java new file mode 100644 index 00000000..2a53c07d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/subjectrepresentative/SubjectRepresentativeDO.java @@ -0,0 +1,81 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.subjectrepresentative; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +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_subject_representative") +@KeySequence("xxjj_subject_representative_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SubjectRepresentativeDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 业务id + */ + private Long businessId; + /** + * 业务类型(0:客户 1:供应商 2:服务商) + */ + private String businessType; + /** + * 代表人类型(0:法定代表人 1:代办人 1:实控人 1:担保人) + */ + private String representativeType; + /** + * 姓名 + */ + private String name; + /** + * 身份证号 + */ + private String idCard; + /** + * 证件有效时间开始 + */ + private LocalDateTime idCardStart; + /** + * 证件有效时间结束 + */ + private LocalDateTime idCardEnd; + /** + * 描述 + */ + private String description; + /** + * 证件照正面 + */ + private String idCardPhoto1; + /** + * 证件照反面 + */ + private String idCardPhoto2; + /** + * 手持证件照 + */ + private String idCardPhoto3; + /** + * 授权/证明文件 + */ + private String authorizeFiles; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/contract/ContractMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/contract/ContractMapper.java index dd226915..0b715a7d 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/contract/ContractMapper.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/contract/ContractMapper.java @@ -1,14 +1,26 @@ package com.yunxi.scm.module.xxjj.dal.mysql.contract; +import java.time.LocalDateTime; import java.util.*; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.query.MPJLambdaQueryWrapper; +import com.github.yulichang.wrapper.MPJLambdaWrapper; 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.framework.mybatis.core.util.MyBatisUtils; import com.yunxi.scm.module.xxjj.controller.admin.contract.vo.contract.ContractExportReqVO; import com.yunxi.scm.module.xxjj.controller.admin.contract.vo.contract.ContractPageReqVO; import com.yunxi.scm.module.xxjj.dal.dataobject.contract.ContractDO; +import com.yunxi.scm.module.xxjj.dal.dataobject.contract.ContractInfoDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 合同信息 Mapper @@ -18,6 +30,37 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ContractMapper extends BaseMapperX { + // 查询列表 (暂时弃用: 主子表存在相同字段时,查询报错) +// IPage queryList(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); + + default PageResult queryList(ContractPageReqVO reqVO) { + IPage mpPage = MyBatisUtils.buildPage(reqVO); + String content = reqVO.getContent(); + LocalDateTime[] declarationTime = reqVO.getDeclarationTime(); + // 初始化变量: 防止between空指针异常 + declarationTime = Optional.ofNullable(declarationTime).orElse(new LocalDateTime[]{null,null,null}); + LocalDateTime[] createTime = reqVO.getCreateTime(); + createTime = Optional.ofNullable(createTime).orElse(new LocalDateTime[]{null,null,null}); + MPJLambdaWrapper wrapperJ = new MPJLambdaWrapper() + .selectAll(ContractDO.class) + .select(ContractInfoDO::getCurrency, ContractInfoDO::getDeliveryMethod) + .selectAssociation(ContractInfoDO.class, ContractDO::getContractInfoDO) + .leftJoin(ContractInfoDO.class, ContractInfoDO::getContractId, ContractDO::getId) + .eq(StringUtils.isNotBlank(reqVO.getContractStatus()), ContractDO::getContractStatus, reqVO.getContractStatus()) + .eq(StringUtils.isNotBlank(reqVO.getContractType()), ContractDO::getContractType, reqVO.getContractType()) + .eq(reqVO.getSubject() != null, ContractDO::getSubject, reqVO.getSubject()) + .eq(StringUtils.isNotBlank(reqVO.getContractNo()), ContractDO::getContractNo, reqVO.getContractNo()) + .eq(StringUtils.isNotBlank(reqVO.getBusinessType()), ContractDO::getBusinessType, reqVO.getBusinessType()) + .like(StringUtils.isNotBlank(reqVO.getContractShortName()), ContractDO::getContractShortName, reqVO.getContractShortName()) + .between( declarationTime.length == 2, ContractDO::getDeclarationTime, declarationTime[0],declarationTime[1]) + .between( createTime.length == 2, ContractDO::getCreateTime, createTime[0],createTime[1]) + .and(StringUtils.isNotBlank(content), qw -> qw.like(ContractDO::getContractNumber, content).or().like(ContractDO::getContractName, content)) + .eq(StringUtils.isNotBlank(reqVO.getDeliveryMethod()), ContractInfoDO::getDeliveryMethod, reqVO.getDeliveryMethod()) + .eq(StringUtils.isNotBlank(reqVO.getModeTransport()), ContractInfoDO::getModeTransport, reqVO.getModeTransport()); + selectJoinPage(mpPage, ContractDO.class, wrapperJ); + return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); + } + default PageResult selectPage(ContractPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(ContractDO::getContractStatus, reqVO.getContractStatus()) diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java index 9c159f92..f733b0bb 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java @@ -2,12 +2,14 @@ package com.yunxi.scm.module.xxjj.dal.mysql.product; import java.util.*; +import com.baomidou.mybatisplus.core.metadata.IPage; 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.product.ProductDO; import org.apache.ibatis.annotations.Mapper; import com.yunxi.scm.module.xxjj.controller.admin.product.vo.*; +import org.apache.ibatis.annotations.Param; /** * 商品 Mapper @@ -200,4 +202,5 @@ public interface ProductMapper extends BaseMapperX { .orderByDesc(ProductDO::getId)); } + IPage productDoListpage(IPage page, @Param("reqVO") ProductPageReqVO reqVO); } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productlnventoryunit/ProductLnventoryUnitMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productlnventoryunit/ProductLnventoryUnitMapper.java new file mode 100644 index 00000000..dd0d24f0 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productlnventoryunit/ProductLnventoryUnitMapper.java @@ -0,0 +1,60 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.productlnventoryunit; + +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.productlnventoryunit.ProductLnventoryUnitDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.vo.*; + +/** + * 商品表库存单位 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface ProductLnventoryUnitMapper extends BaseMapperX { + + default PageResult selectPage(ProductLnventoryUnitPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ProductLnventoryUnitDO::getProductUnitName, reqVO.getProductUnitName()) + .eqIfPresent(ProductLnventoryUnitDO::getProuctId, reqVO.getProuctId()) + .eqIfPresent(ProductLnventoryUnitDO::getConversionRules1, reqVO.getConversionRules1()) + .eqIfPresent(ProductLnventoryUnitDO::getConversionRules2, reqVO.getConversionRules2()) + .eqIfPresent(ProductLnventoryUnitDO::getPackagingBarcode, reqVO.getPackagingBarcode()) + .eqIfPresent(ProductLnventoryUnitDO::getDimensionalUnit, reqVO.getDimensionalUnit()) + .eqIfPresent(ProductLnventoryUnitDO::getSizeInformation1, reqVO.getSizeInformation1()) + .eqIfPresent(ProductLnventoryUnitDO::getSizeInformation2, reqVO.getSizeInformation2()) + .eqIfPresent(ProductLnventoryUnitDO::getSizeInformation3, reqVO.getSizeInformation3()) + .eqIfPresent(ProductLnventoryUnitDO::getVolumeInformation, reqVO.getVolumeInformation()) + .eqIfPresent(ProductLnventoryUnitDO::getVolumeInformationUnit, reqVO.getVolumeInformationUnit()) + .eqIfPresent(ProductLnventoryUnitDO::getWeight, reqVO.getWeight()) + .eqIfPresent(ProductLnventoryUnitDO::getGrossWeight, reqVO.getGrossWeight()) + .eqIfPresent(ProductLnventoryUnitDO::getNetWeight, reqVO.getNetWeight()) + .betweenIfPresent(ProductLnventoryUnitDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductLnventoryUnitDO::getId)); + } + + default List selectList(ProductLnventoryUnitExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(ProductLnventoryUnitDO::getProductUnitName, reqVO.getProductUnitName()) + .eqIfPresent(ProductLnventoryUnitDO::getProuctId, reqVO.getProuctId()) + .eqIfPresent(ProductLnventoryUnitDO::getConversionRules1, reqVO.getConversionRules1()) + .eqIfPresent(ProductLnventoryUnitDO::getConversionRules2, reqVO.getConversionRules2()) + .eqIfPresent(ProductLnventoryUnitDO::getPackagingBarcode, reqVO.getPackagingBarcode()) + .eqIfPresent(ProductLnventoryUnitDO::getDimensionalUnit, reqVO.getDimensionalUnit()) + .eqIfPresent(ProductLnventoryUnitDO::getSizeInformation1, reqVO.getSizeInformation1()) + .eqIfPresent(ProductLnventoryUnitDO::getSizeInformation2, reqVO.getSizeInformation2()) + .eqIfPresent(ProductLnventoryUnitDO::getSizeInformation3, reqVO.getSizeInformation3()) + .eqIfPresent(ProductLnventoryUnitDO::getVolumeInformation, reqVO.getVolumeInformation()) + .eqIfPresent(ProductLnventoryUnitDO::getVolumeInformationUnit, reqVO.getVolumeInformationUnit()) + .eqIfPresent(ProductLnventoryUnitDO::getWeight, reqVO.getWeight()) + .eqIfPresent(ProductLnventoryUnitDO::getGrossWeight, reqVO.getGrossWeight()) + .eqIfPresent(ProductLnventoryUnitDO::getNetWeight, reqVO.getNetWeight()) + .betweenIfPresent(ProductLnventoryUnitDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductLnventoryUnitDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/subjectcontacts/SubjectContactsMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/subjectcontacts/SubjectContactsMapper.java new file mode 100644 index 00000000..621c8bb7 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/subjectcontacts/SubjectContactsMapper.java @@ -0,0 +1,58 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.subjectcontacts; + +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.subjectcontacts.SubjectContactsDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.vo.*; + +/** + * 主体联系人 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface SubjectContactsMapper extends BaseMapperX { + + default PageResult selectPage(SubjectContactsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SubjectContactsDO::getBusinessId, reqVO.getBusinessId()) + .eqIfPresent(SubjectContactsDO::getBusinessType, reqVO.getBusinessType()) + .eqIfPresent(SubjectContactsDO::getContactsType, reqVO.getContactsType()) + .eqIfPresent(SubjectContactsDO::getAsteriskType, reqVO.getAsteriskType()) + .eqIfPresent(SubjectContactsDO::getMarkColor, reqVO.getMarkColor()) + .likeIfPresent(SubjectContactsDO::getName, reqVO.getName()) + .likeIfPresent(SubjectContactsDO::getCompanyName, reqVO.getCompanyName()) + .eqIfPresent(SubjectContactsDO::getPosition, reqVO.getPosition()) + .eqIfPresent(SubjectContactsDO::getMobile, reqVO.getMobile()) + .eqIfPresent(SubjectContactsDO::getPhone, reqVO.getPhone()) + .eqIfPresent(SubjectContactsDO::getEmaile, reqVO.getEmaile()) + .eqIfPresent(SubjectContactsDO::getAddress, reqVO.getAddress()) + .eqIfPresent(SubjectContactsDO::getAnnex, reqVO.getAnnex()) + .betweenIfPresent(SubjectContactsDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SubjectContactsDO::getId)); + } + + default List selectList(SubjectContactsExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(SubjectContactsDO::getBusinessId, reqVO.getBusinessId()) + .eqIfPresent(SubjectContactsDO::getBusinessType, reqVO.getBusinessType()) + .eqIfPresent(SubjectContactsDO::getContactsType, reqVO.getContactsType()) + .eqIfPresent(SubjectContactsDO::getAsteriskType, reqVO.getAsteriskType()) + .eqIfPresent(SubjectContactsDO::getMarkColor, reqVO.getMarkColor()) + .likeIfPresent(SubjectContactsDO::getName, reqVO.getName()) + .likeIfPresent(SubjectContactsDO::getCompanyName, reqVO.getCompanyName()) + .eqIfPresent(SubjectContactsDO::getPosition, reqVO.getPosition()) + .eqIfPresent(SubjectContactsDO::getMobile, reqVO.getMobile()) + .eqIfPresent(SubjectContactsDO::getPhone, reqVO.getPhone()) + .eqIfPresent(SubjectContactsDO::getEmaile, reqVO.getEmaile()) + .eqIfPresent(SubjectContactsDO::getAddress, reqVO.getAddress()) + .eqIfPresent(SubjectContactsDO::getAnnex, reqVO.getAnnex()) + .betweenIfPresent(SubjectContactsDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SubjectContactsDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/subjectrepresentative/SubjectRepresentativeMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/subjectrepresentative/SubjectRepresentativeMapper.java new file mode 100644 index 00000000..27b5a069 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/subjectrepresentative/SubjectRepresentativeMapper.java @@ -0,0 +1,56 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.subjectrepresentative; + +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.subjectrepresentative.SubjectRepresentativeDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.vo.*; + +/** + * 主体代表人 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface SubjectRepresentativeMapper extends BaseMapperX { + + default PageResult selectPage(SubjectRepresentativePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SubjectRepresentativeDO::getBusinessId, reqVO.getBusinessId()) + .eqIfPresent(SubjectRepresentativeDO::getBusinessType, reqVO.getBusinessType()) + .eqIfPresent(SubjectRepresentativeDO::getRepresentativeType, reqVO.getRepresentativeType()) + .likeIfPresent(SubjectRepresentativeDO::getName, reqVO.getName()) + .eqIfPresent(SubjectRepresentativeDO::getIdCard, reqVO.getIdCard()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardStart, reqVO.getIdCardStart()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardEnd, reqVO.getIdCardEnd()) + .eqIfPresent(SubjectRepresentativeDO::getDescription, reqVO.getDescription()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardPhoto1, reqVO.getIdCardPhoto1()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardPhoto2, reqVO.getIdCardPhoto2()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardPhoto3, reqVO.getIdCardPhoto3()) + .eqIfPresent(SubjectRepresentativeDO::getAuthorizeFiles, reqVO.getAuthorizeFiles()) + .betweenIfPresent(SubjectRepresentativeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SubjectRepresentativeDO::getId)); + } + + default List selectList(SubjectRepresentativeExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(SubjectRepresentativeDO::getBusinessId, reqVO.getBusinessId()) + .eqIfPresent(SubjectRepresentativeDO::getBusinessType, reqVO.getBusinessType()) + .eqIfPresent(SubjectRepresentativeDO::getRepresentativeType, reqVO.getRepresentativeType()) + .likeIfPresent(SubjectRepresentativeDO::getName, reqVO.getName()) + .eqIfPresent(SubjectRepresentativeDO::getIdCard, reqVO.getIdCard()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardStart, reqVO.getIdCardStart()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardEnd, reqVO.getIdCardEnd()) + .eqIfPresent(SubjectRepresentativeDO::getDescription, reqVO.getDescription()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardPhoto1, reqVO.getIdCardPhoto1()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardPhoto2, reqVO.getIdCardPhoto2()) + .eqIfPresent(SubjectRepresentativeDO::getIdCardPhoto3, reqVO.getIdCardPhoto3()) + .eqIfPresent(SubjectRepresentativeDO::getAuthorizeFiles, reqVO.getAuthorizeFiles()) + .betweenIfPresent(SubjectRepresentativeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SubjectRepresentativeDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/contract/ContractServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/contract/ContractServiceImpl.java index 355678cd..1eadf024 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/contract/ContractServiceImpl.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/contract/ContractServiceImpl.java @@ -1,5 +1,8 @@ package com.yunxi.scm.module.xxjj.service.contract; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.util.MyBatisUtils; import com.yunxi.scm.module.xxjj.controller.admin.contract.vo.contract.ContractCreateReqVO; import com.yunxi.scm.module.xxjj.controller.admin.contract.vo.contract.ContractExportReqVO; import com.yunxi.scm.module.xxjj.controller.admin.contract.vo.contract.ContractPageReqVO; @@ -84,8 +87,8 @@ public class ContractServiceImpl implements ContractService { } @Override - public PageResult getContractPage(ContractPageReqVO pageReqVO) { - return contractMapper.selectPage(pageReqVO); + public PageResult getContractPage(ContractPageReqVO reqVO) { + return contractMapper.queryList(reqVO); } @Override diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java index d15cb7c7..cdd49ff3 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java @@ -67,4 +67,10 @@ public interface ProductService { */ List getProductList(ProductExportReqVO exportReqVO); + /** + * + * @param + * @return 商品列表 + */ + PageResult ProductPageList1(ProductPageReqVO reqVO); } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java index 2686b6c3..c270796d 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java @@ -1,5 +1,7 @@ package com.yunxi.scm.module.xxjj.service.product; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; import com.yunxi.scm.module.system.service.user.AdminUserService; import com.yunxi.scm.module.xxjj.dal.dataobject.subjectbasic.SubjectBasicDO; @@ -100,4 +102,11 @@ public class ProductServiceImpl implements ProductService { return productMapper.selectList(exportReqVO); } + @Override + public PageResult ProductPageList1(ProductPageReqVO reqVO) { + IPage page =new Page<>(reqVO.getPageNo(),reqVO.getPageSize()); + productMapper.productDoListpage(page,reqVO); + return new PageResult<>(page.getRecords(),page.getTotal()); + } + } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitService.java new file mode 100644 index 00000000..e6f0a2fb --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.productlnventoryunit; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.productlnventoryunit.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productlnventoryunit.ProductLnventoryUnitDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 商品表库存单位 Service 接口 + * + * @author 长江云息 + */ +public interface ProductLnventoryUnitService { + + /** + * 创建商品表库存单位 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductLnventoryUnit(@Valid ProductLnventoryUnitCreateReqVO createReqVO); + + /** + * 更新商品表库存单位 + * + * @param updateReqVO 更新信息 + */ + void updateProductLnventoryUnit(@Valid ProductLnventoryUnitUpdateReqVO updateReqVO); + + /** + * 删除商品表库存单位 + * + * @param id 编号 + */ + void deleteProductLnventoryUnit(Long id); + + /** + * 获得商品表库存单位 + * + * @param id 编号 + * @return 商品表库存单位 + */ + ProductLnventoryUnitDO getProductLnventoryUnit(Long id); + + /** + * 获得商品表库存单位列表 + * + * @param ids 编号 + * @return 商品表库存单位列表 + */ + List getProductLnventoryUnitList(Collection ids); + + /** + * 获得商品表库存单位分页 + * + * @param pageReqVO 分页查询 + * @return 商品表库存单位分页 + */ + PageResult getProductLnventoryUnitPage(ProductLnventoryUnitPageReqVO pageReqVO); + + /** + * 获得商品表库存单位列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 商品表库存单位列表 + */ + List getProductLnventoryUnitList(ProductLnventoryUnitExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitServiceImpl.java new file mode 100644 index 00000000..228783c2 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.productlnventoryunit; + +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.productlnventoryunit.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productlnventoryunit.ProductLnventoryUnitDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.productlnventoryunit.ProductLnventoryUnitConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.productlnventoryunit.ProductLnventoryUnitMapper; + +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 ProductLnventoryUnitServiceImpl implements ProductLnventoryUnitService { + + @Resource + private ProductLnventoryUnitMapper productLnventoryUnitMapper; + + @Override + public Long createProductLnventoryUnit(ProductLnventoryUnitCreateReqVO createReqVO) { + // 插入 + ProductLnventoryUnitDO productLnventoryUnit = ProductLnventoryUnitConvert.INSTANCE.convert(createReqVO); + productLnventoryUnitMapper.insert(productLnventoryUnit); + // 返回 + return productLnventoryUnit.getId(); + } + + @Override + public void updateProductLnventoryUnit(ProductLnventoryUnitUpdateReqVO updateReqVO) { + // 校验存在 + validateProductLnventoryUnitExists(updateReqVO.getId()); + // 更新 + ProductLnventoryUnitDO updateObj = ProductLnventoryUnitConvert.INSTANCE.convert(updateReqVO); + productLnventoryUnitMapper.updateById(updateObj); + } + + @Override + public void deleteProductLnventoryUnit(Long id) { + // 校验存在 + validateProductLnventoryUnitExists(id); + // 删除 + productLnventoryUnitMapper.deleteById(id); + } + + private void validateProductLnventoryUnitExists(Long id) { + if (productLnventoryUnitMapper.selectById(id) == null) { + throw exception(PRODUCT_LNVENTORY_UNIT_NOT_EXISTS); + } + } + + @Override + public ProductLnventoryUnitDO getProductLnventoryUnit(Long id) { + return productLnventoryUnitMapper.selectById(id); + } + + @Override + public List getProductLnventoryUnitList(Collection ids) { + return productLnventoryUnitMapper.selectBatchIds(ids); + } + + @Override + public PageResult getProductLnventoryUnitPage(ProductLnventoryUnitPageReqVO pageReqVO) { + return productLnventoryUnitMapper.selectPage(pageReqVO); + } + + @Override + public List getProductLnventoryUnitList(ProductLnventoryUnitExportReqVO exportReqVO) { + return productLnventoryUnitMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsService.java new file mode 100644 index 00000000..6afdc7d4 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.subjectcontacts; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.subjectcontacts.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectcontacts.SubjectContactsDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 主体联系人 Service 接口 + * + * @author 长江云息 + */ +public interface SubjectContactsService { + + /** + * 创建主体联系人 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSubjectContacts(@Valid SubjectContactsCreateReqVO createReqVO); + + /** + * 更新主体联系人 + * + * @param updateReqVO 更新信息 + */ + void updateSubjectContacts(@Valid SubjectContactsUpdateReqVO updateReqVO); + + /** + * 删除主体联系人 + * + * @param id 编号 + */ + void deleteSubjectContacts(Long id); + + /** + * 获得主体联系人 + * + * @param id 编号 + * @return 主体联系人 + */ + SubjectContactsDO getSubjectContacts(Long id); + + /** + * 获得主体联系人列表 + * + * @param ids 编号 + * @return 主体联系人列表 + */ + List getSubjectContactsList(Collection ids); + + /** + * 获得主体联系人分页 + * + * @param pageReqVO 分页查询 + * @return 主体联系人分页 + */ + PageResult getSubjectContactsPage(SubjectContactsPageReqVO pageReqVO); + + /** + * 获得主体联系人列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 主体联系人列表 + */ + List getSubjectContactsList(SubjectContactsExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsServiceImpl.java new file mode 100644 index 00000000..54fc6a26 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.subjectcontacts; + +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.subjectcontacts.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectcontacts.SubjectContactsDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.subjectcontacts.SubjectContactsConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.subjectcontacts.SubjectContactsMapper; + +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 SubjectContactsServiceImpl implements SubjectContactsService { + + @Resource + private SubjectContactsMapper subjectContactsMapper; + + @Override + public Long createSubjectContacts(SubjectContactsCreateReqVO createReqVO) { + // 插入 + SubjectContactsDO subjectContacts = SubjectContactsConvert.INSTANCE.convert(createReqVO); + subjectContactsMapper.insert(subjectContacts); + // 返回 + return subjectContacts.getId(); + } + + @Override + public void updateSubjectContacts(SubjectContactsUpdateReqVO updateReqVO) { + // 校验存在 + validateSubjectContactsExists(updateReqVO.getId()); + // 更新 + SubjectContactsDO updateObj = SubjectContactsConvert.INSTANCE.convert(updateReqVO); + subjectContactsMapper.updateById(updateObj); + } + + @Override + public void deleteSubjectContacts(Long id) { + // 校验存在 + validateSubjectContactsExists(id); + // 删除 + subjectContactsMapper.deleteById(id); + } + + private void validateSubjectContactsExists(Long id) { + if (subjectContactsMapper.selectById(id) == null) { + throw exception(SUBJECT_CONTACTS_NOT_EXISTS); + } + } + + @Override + public SubjectContactsDO getSubjectContacts(Long id) { + return subjectContactsMapper.selectById(id); + } + + @Override + public List getSubjectContactsList(Collection ids) { + return subjectContactsMapper.selectBatchIds(ids); + } + + @Override + public PageResult getSubjectContactsPage(SubjectContactsPageReqVO pageReqVO) { + return subjectContactsMapper.selectPage(pageReqVO); + } + + @Override + public List getSubjectContactsList(SubjectContactsExportReqVO exportReqVO) { + return subjectContactsMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectfollowreport/SubjectFollowReportServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectfollowreport/SubjectFollowReportServiceImpl.java index 7c56a95a..8c8fb624 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectfollowreport/SubjectFollowReportServiceImpl.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectfollowreport/SubjectFollowReportServiceImpl.java @@ -55,7 +55,7 @@ public class SubjectFollowReportServiceImpl implements SubjectFollowReportServic private void validateSubjectFollowReportExists(Long id) { if (subjectFollowReportMapper.selectById(id) == null) { - //throw exception(SUBJECT_FOLLOW_REPORT_NOT_EXISTS); + throw exception(SUBJECT_FOLLOW_REPORT_NOT_EXISTS); } } diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeService.java new file mode 100644 index 00000000..534b4bfd --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.subjectrepresentative; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.subjectrepresentative.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectrepresentative.SubjectRepresentativeDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 主体代表人 Service 接口 + * + * @author 长江云息 + */ +public interface SubjectRepresentativeService { + + /** + * 创建主体代表人 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSubjectRepresentative(@Valid SubjectRepresentativeCreateReqVO createReqVO); + + /** + * 更新主体代表人 + * + * @param updateReqVO 更新信息 + */ + void updateSubjectRepresentative(@Valid SubjectRepresentativeUpdateReqVO updateReqVO); + + /** + * 删除主体代表人 + * + * @param id 编号 + */ + void deleteSubjectRepresentative(Long id); + + /** + * 获得主体代表人 + * + * @param id 编号 + * @return 主体代表人 + */ + SubjectRepresentativeDO getSubjectRepresentative(Long id); + + /** + * 获得主体代表人列表 + * + * @param ids 编号 + * @return 主体代表人列表 + */ + List getSubjectRepresentativeList(Collection ids); + + /** + * 获得主体代表人分页 + * + * @param pageReqVO 分页查询 + * @return 主体代表人分页 + */ + PageResult getSubjectRepresentativePage(SubjectRepresentativePageReqVO pageReqVO); + + /** + * 获得主体代表人列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 主体代表人列表 + */ + List getSubjectRepresentativeList(SubjectRepresentativeExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeServiceImpl.java new file mode 100644 index 00000000..0a1d5740 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.subjectrepresentative; + +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.subjectrepresentative.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectrepresentative.SubjectRepresentativeDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.subjectrepresentative.SubjectRepresentativeConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.subjectrepresentative.SubjectRepresentativeMapper; + +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 SubjectRepresentativeServiceImpl implements SubjectRepresentativeService { + + @Resource + private SubjectRepresentativeMapper subjectRepresentativeMapper; + + @Override + public Long createSubjectRepresentative(SubjectRepresentativeCreateReqVO createReqVO) { + // 插入 + SubjectRepresentativeDO subjectRepresentative = SubjectRepresentativeConvert.INSTANCE.convert(createReqVO); + subjectRepresentativeMapper.insert(subjectRepresentative); + // 返回 + return subjectRepresentative.getId(); + } + + @Override + public void updateSubjectRepresentative(SubjectRepresentativeUpdateReqVO updateReqVO) { + // 校验存在 + validateSubjectRepresentativeExists(updateReqVO.getId()); + // 更新 + SubjectRepresentativeDO updateObj = SubjectRepresentativeConvert.INSTANCE.convert(updateReqVO); + subjectRepresentativeMapper.updateById(updateObj); + } + + @Override + public void deleteSubjectRepresentative(Long id) { + // 校验存在 + validateSubjectRepresentativeExists(id); + // 删除 + subjectRepresentativeMapper.deleteById(id); + } + + private void validateSubjectRepresentativeExists(Long id) { + if (subjectRepresentativeMapper.selectById(id) == null) { + throw exception(SUBJECT_REPRESENTATIVE_NOT_EXISTS); + } + } + + @Override + public SubjectRepresentativeDO getSubjectRepresentative(Long id) { + return subjectRepresentativeMapper.selectById(id); + } + + @Override + public List getSubjectRepresentativeList(Collection ids) { + return subjectRepresentativeMapper.selectBatchIds(ids); + } + + @Override + public PageResult getSubjectRepresentativePage(SubjectRepresentativePageReqVO pageReqVO) { + return subjectRepresentativeMapper.selectPage(pageReqVO); + } + + @Override + public List getSubjectRepresentativeList(SubjectRepresentativeExportReqVO exportReqVO) { + return subjectRepresentativeMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/contract/ContractMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/contract/ContractMapper.xml index a4d70080..144411d6 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/contract/ContractMapper.xml +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/contract/ContractMapper.xml @@ -1,12 +1,30 @@ - + + + + + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml index be21a2e7..375d8c0f 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml @@ -9,46 +9,77 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - SELECT a.*, b.id AS ctaeId, - b.category_name, - c.brand_name, - z.life_cycle, - z.sales_status + b.category_name AS categoryName, -- 分类 + c.brand_name AS brandName, + d.parameter_name AS parameterName, -- 类目 + e.name AS supplierName, + f.nickname AS nickname FROM xxjj_product a - LEFT JOIN xxjj_product_category b ON a.product_type_id=b.id AND b.deleted=0 - LEFT JOIN xxjj_product_brand c ON a.brand_id=c.id AND c.deleted=0 - LEFT JOIN xxjj_product_supply z ON a.id=z.product_id AND z.deleted=0 - WHERE - a.deleted=0 - + LEFT JOIN xxjj_product_category b ON a.product_type_id = b.id + AND b.deleted = '0' + LEFT JOIN xxjj_product_brand c ON a.brand_id = c.id + AND c.deleted = '0' -- 品牌 + LEFT JOIN xxjj_product_parameter d ON a.area_category=d.id + LEFT JOIN xxjj_subject_basic e ON a.first_supplier_id=e.id + LEFT JOIN system_users f ON a.creator=f.id + a.deleted=0 - a.name LIKE CONCAT('%',#{name},'%') + AND a.name LIKE CONCAT('%',#{reqVO.name},'%') - a.code LIKE CONCAT('%',#{code},'%') + AND a.code LIKE CONCAT('%',#{reqVO.code},'%') - a.product_status LIKE CONCAT('%',#{productStatus},'%') + AND a.product_status LIKE CONCAT('%',#{reqVO.productStatus},'%') - a.product_type LIKE CONCAT('%',#{productType},'%') + AND a.product_type LIKE CONCAT('%',#{reqVO.productType},'%') - a.inventory_type LIKE CONCAT('%',#{inventoryType},'%') + AND a.inventory_type LIKE CONCAT('%',#{reqVO.inventoryType},'%') - a.short_name LIKE CONCAT('%',#{shortName},'%') + AND a.short_name LIKE CONCAT('%',#{reqVO.shortName},'%') - - AND a.update_time > #{reqVO} AND a.update_time <= #{reqVO} + + AND a.create_time > #{reqVO.createTime[0]} AND a.create_time <= #{reqVO.createTime[1]} + + + AND a.sales_start > #{reqVO.salesStart[0]} AND a.sales_start <= #{reqVO.salesStart[1]} + + + AND a.update_time > #{reqVO.updateTime[0]} AND a.update_time <= #{reqVO.updateTime[1]} + + + AND b.category_name LIKE CONCAT('%',#{reqVO.categoryName},'%') + + + AND a.delivery_type LIKE CONCAT('%',#{reqVO.deliveryType},'%') + + + AND a.purchase_mode LIKE CONCAT('%',#{reqVO.purchaseMode},'%') + + + AND a.nickname LIKE CONCAT('%',#{reqVO.nickname},'%') + + + AND a.life_cycle LIKE CONCAT('%',#{reqVO.lifeCycle},'%') + + . + AND d.parameter_name LIKE CONCAT('%',#{reqVO.parameterName},'%') + + + AND c.brand_name LIKE CONCAT('%',#{reqVO.brandName},'%') + + + AND e.name LIKE CONCAT('%',#{reqVO.supplierName},'%') - - GROUP BY a.id diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productlnventoryunit/ProductLnventoryUnitMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productlnventoryunit/ProductLnventoryUnitMapper.xml new file mode 100644 index 00000000..e5b7ab87 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productlnventoryunit/ProductLnventoryUnitMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/subjectcontacts/SubjectContactsMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/subjectcontacts/SubjectContactsMapper.xml new file mode 100644 index 00000000..ad8b89d7 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/subjectcontacts/SubjectContactsMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/subjectrepresentative/SubjectRepresentativeMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/subjectrepresentative/SubjectRepresentativeMapper.xml new file mode 100644 index 00000000..46fe0642 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/subjectrepresentative/SubjectRepresentativeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitServiceImplTest.java new file mode 100644 index 00000000..0a681e03 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productlnventoryunit/ProductLnventoryUnitServiceImplTest.java @@ -0,0 +1,263 @@ +package com.yunxi.scm.module.xxjj.service.productlnventoryunit; + +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.productlnventoryunit.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productlnventoryunit.ProductLnventoryUnitDO; +import com.yunxi.scm.module.xxjj.dal.mysql.productlnventoryunit.ProductLnventoryUnitMapper; +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 ProductLnventoryUnitServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(ProductLnventoryUnitServiceImpl.class) +public class ProductLnventoryUnitServiceImplTest extends BaseDbUnitTest { + + @Resource + private ProductLnventoryUnitServiceImpl productLnventoryUnitService; + + @Resource + private ProductLnventoryUnitMapper productLnventoryUnitMapper; + + @Test + public void testCreateProductLnventoryUnit_success() { + // 准备参数 + ProductLnventoryUnitCreateReqVO reqVO = randomPojo(ProductLnventoryUnitCreateReqVO.class); + + // 调用 + Long productLnventoryUnitId = productLnventoryUnitService.createProductLnventoryUnit(reqVO); + // 断言 + assertNotNull(productLnventoryUnitId); + // 校验记录的属性是否正确 + ProductLnventoryUnitDO productLnventoryUnit = productLnventoryUnitMapper.selectById(productLnventoryUnitId); + assertPojoEquals(reqVO, productLnventoryUnit); + } + + @Test + public void testUpdateProductLnventoryUnit_success() { + // mock 数据 + ProductLnventoryUnitDO dbProductLnventoryUnit = randomPojo(ProductLnventoryUnitDO.class); + productLnventoryUnitMapper.insert(dbProductLnventoryUnit);// @Sql: 先插入出一条存在的数据 + // 准备参数 + ProductLnventoryUnitUpdateReqVO reqVO = randomPojo(ProductLnventoryUnitUpdateReqVO.class, o -> { + o.setId(dbProductLnventoryUnit.getId()); // 设置更新的 ID + }); + + // 调用 + productLnventoryUnitService.updateProductLnventoryUnit(reqVO); + // 校验是否更新正确 + ProductLnventoryUnitDO productLnventoryUnit = productLnventoryUnitMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, productLnventoryUnit); + } + + @Test + public void testUpdateProductLnventoryUnit_notExists() { + // 准备参数 + ProductLnventoryUnitUpdateReqVO reqVO = randomPojo(ProductLnventoryUnitUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> productLnventoryUnitService.updateProductLnventoryUnit(reqVO), PRODUCT_LNVENTORY_UNIT_NOT_EXISTS); + } + + @Test + public void testDeleteProductLnventoryUnit_success() { + // mock 数据 + ProductLnventoryUnitDO dbProductLnventoryUnit = randomPojo(ProductLnventoryUnitDO.class); + productLnventoryUnitMapper.insert(dbProductLnventoryUnit);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbProductLnventoryUnit.getId(); + + // 调用 + productLnventoryUnitService.deleteProductLnventoryUnit(id); + // 校验数据不存在了 + assertNull(productLnventoryUnitMapper.selectById(id)); + } + + @Test + public void testDeleteProductLnventoryUnit_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> productLnventoryUnitService.deleteProductLnventoryUnit(id), PRODUCT_LNVENTORY_UNIT_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductLnventoryUnitPage() { + // mock 数据 + ProductLnventoryUnitDO dbProductLnventoryUnit = randomPojo(ProductLnventoryUnitDO.class, o -> { // 等会查询到 + o.setProductUnitName(null); + o.setProuctId(null); + o.setConversionRules1(null); + o.setConversionRules2(null); + o.setPackagingBarcode(null); + o.setDimensionalUnit(null); + o.setSizeInformation1(null); + o.setSizeInformation2(null); + o.setSizeInformation3(null); + o.setVolumeInformation(null); + o.setVolumeInformationUnit(null); + o.setWeight(null); + o.setGrossWeight(null); + o.setNetWeight(null); + o.setCreateTime(null); + }); + productLnventoryUnitMapper.insert(dbProductLnventoryUnit); + // 测试 productUnitName 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setProductUnitName(null))); + // 测试 prouctId 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setProuctId(null))); + // 测试 conversionRules1 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setConversionRules1(null))); + // 测试 conversionRules2 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setConversionRules2(null))); + // 测试 packagingBarcode 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setPackagingBarcode(null))); + // 测试 dimensionalUnit 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setDimensionalUnit(null))); + // 测试 sizeInformation1 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setSizeInformation1(null))); + // 测试 sizeInformation2 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setSizeInformation2(null))); + // 测试 sizeInformation3 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setSizeInformation3(null))); + // 测试 volumeInformation 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setVolumeInformation(null))); + // 测试 volumeInformationUnit 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setVolumeInformationUnit(null))); + // 测试 weight 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setWeight(null))); + // 测试 grossWeight 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setGrossWeight(null))); + // 测试 net weight 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setNetWeight(null))); + // 测试 createTime 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setCreateTime(null))); + // 准备参数 + ProductLnventoryUnitPageReqVO reqVO = new ProductLnventoryUnitPageReqVO(); + reqVO.setProductUnitName(null); + reqVO.setProuctId(null); + reqVO.setConversionRules1(null); + reqVO.setConversionRules2(null); + reqVO.setPackagingBarcode(null); + reqVO.setDimensionalUnit(null); + reqVO.setSizeInformation1(null); + reqVO.setSizeInformation2(null); + reqVO.setSizeInformation3(null); + reqVO.setVolumeInformation(null); + reqVO.setVolumeInformationUnit(null); + reqVO.setWeight(null); + reqVO.setGrossWeight(null); + reqVO.setNetWeight(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = productLnventoryUnitService.getProductLnventoryUnitPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbProductLnventoryUnit, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductLnventoryUnitList() { + // mock 数据 + ProductLnventoryUnitDO dbProductLnventoryUnit = randomPojo(ProductLnventoryUnitDO.class, o -> { // 等会查询到 + o.setProductUnitName(null); + o.setProuctId(null); + o.setConversionRules1(null); + o.setConversionRules2(null); + o.setPackagingBarcode(null); + o.setDimensionalUnit(null); + o.setSizeInformation1(null); + o.setSizeInformation2(null); + o.setSizeInformation3(null); + o.setVolumeInformation(null); + o.setVolumeInformationUnit(null); + o.setWeight(null); + o.setGrossWeight(null); + o.setNetWeight(null); + o.setCreateTime(null); + }); + productLnventoryUnitMapper.insert(dbProductLnventoryUnit); + // 测试 productUnitName 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setProductUnitName(null))); + // 测试 prouctId 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setProuctId(null))); + // 测试 conversionRules1 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setConversionRules1(null))); + // 测试 conversionRules2 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setConversionRules2(null))); + // 测试 packagingBarcode 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setPackagingBarcode(null))); + // 测试 dimensionalUnit 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setDimensionalUnit(null))); + // 测试 sizeInformation1 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setSizeInformation1(null))); + // 测试 sizeInformation2 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setSizeInformation2(null))); + // 测试 sizeInformation3 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setSizeInformation3(null))); + // 测试 volumeInformation 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setVolumeInformation(null))); + // 测试 volumeInformationUnit 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setVolumeInformationUnit(null))); + // 测试 weight 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setWeight(null))); + // 测试 grossWeight 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setGrossWeight(null))); + // 测试 net weight 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setNetWeight(null))); + // 测试 createTime 不匹配 + productLnventoryUnitMapper.insert(cloneIgnoreId(dbProductLnventoryUnit, o -> o.setCreateTime(null))); + // 准备参数 + ProductLnventoryUnitExportReqVO reqVO = new ProductLnventoryUnitExportReqVO(); + reqVO.setProductUnitName(null); + reqVO.setProuctId(null); + reqVO.setConversionRules1(null); + reqVO.setConversionRules2(null); + reqVO.setPackagingBarcode(null); + reqVO.setDimensionalUnit(null); + reqVO.setSizeInformation1(null); + reqVO.setSizeInformation2(null); + reqVO.setSizeInformation3(null); + reqVO.setVolumeInformation(null); + reqVO.setVolumeInformationUnit(null); + reqVO.setWeight(null); + reqVO.setGrossWeight(null); + reqVO.setNetWeight(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = productLnventoryUnitService.getProductLnventoryUnitList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbProductLnventoryUnit, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsServiceImplTest.java new file mode 100644 index 00000000..1b6fba87 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/subjectcontacts/SubjectContactsServiceImplTest.java @@ -0,0 +1,255 @@ +package com.yunxi.scm.module.xxjj.service.subjectcontacts; + +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.subjectcontacts.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectcontacts.SubjectContactsDO; +import com.yunxi.scm.module.xxjj.dal.mysql.subjectcontacts.SubjectContactsMapper; +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 SubjectContactsServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(SubjectContactsServiceImpl.class) +public class SubjectContactsServiceImplTest extends BaseDbUnitTest { + + @Resource + private SubjectContactsServiceImpl subjectContactsService; + + @Resource + private SubjectContactsMapper subjectContactsMapper; + + @Test + public void testCreateSubjectContacts_success() { + // 准备参数 + SubjectContactsCreateReqVO reqVO = randomPojo(SubjectContactsCreateReqVO.class); + + // 调用 + Long subjectContactsId = subjectContactsService.createSubjectContacts(reqVO); + // 断言 + assertNotNull(subjectContactsId); + // 校验记录的属性是否正确 + SubjectContactsDO subjectContacts = subjectContactsMapper.selectById(subjectContactsId); + assertPojoEquals(reqVO, subjectContacts); + } + + @Test + public void testUpdateSubjectContacts_success() { + // mock 数据 + SubjectContactsDO dbSubjectContacts = randomPojo(SubjectContactsDO.class); + subjectContactsMapper.insert(dbSubjectContacts);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SubjectContactsUpdateReqVO reqVO = randomPojo(SubjectContactsUpdateReqVO.class, o -> { + o.setId(dbSubjectContacts.getId()); // 设置更新的 ID + }); + + // 调用 + subjectContactsService.updateSubjectContacts(reqVO); + // 校验是否更新正确 + SubjectContactsDO subjectContacts = subjectContactsMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, subjectContacts); + } + + @Test + public void testUpdateSubjectContacts_notExists() { + // 准备参数 + SubjectContactsUpdateReqVO reqVO = randomPojo(SubjectContactsUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> subjectContactsService.updateSubjectContacts(reqVO), SUBJECT_CONTACTS_NOT_EXISTS); + } + + @Test + public void testDeleteSubjectContacts_success() { + // mock 数据 + SubjectContactsDO dbSubjectContacts = randomPojo(SubjectContactsDO.class); + subjectContactsMapper.insert(dbSubjectContacts);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbSubjectContacts.getId(); + + // 调用 + subjectContactsService.deleteSubjectContacts(id); + // 校验数据不存在了 + assertNull(subjectContactsMapper.selectById(id)); + } + + @Test + public void testDeleteSubjectContacts_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> subjectContactsService.deleteSubjectContacts(id), SUBJECT_CONTACTS_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSubjectContactsPage() { + // mock 数据 + SubjectContactsDO dbSubjectContacts = randomPojo(SubjectContactsDO.class, o -> { // 等会查询到 + o.setBusinessId(null); + o.setBusinessType(null); + o.setContactsType(null); + o.setAsteriskType(null); + o.setMarkColor(null); + o.setName(null); + o.setCompanyName(null); + o.setPosition(null); + o.setMobile(null); + o.setPhone(null); + o.setEmaile(null); + o.setAddress(null); + o.setAnnex(null); + o.setCreateTime(null); + }); + subjectContactsMapper.insert(dbSubjectContacts); + // 测试 businessId 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setBusinessId(null))); + // 测试 businessType 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setBusinessType(null))); + // 测试 contactsType 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setContactsType(null))); + // 测试 asteriskType 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setAsteriskType(null))); + // 测试 markColor 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setMarkColor(null))); + // 测试 name 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setName(null))); + // 测试 companyName 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setCompanyName(null))); + // 测试 position 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setPosition(null))); + // 测试 mobile 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setMobile(null))); + // 测试 phone 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setPhone(null))); + // 测试 emaile 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setEmaile(null))); + // 测试 address 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setAddress(null))); + // 测试 annex 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setAnnex(null))); + // 测试 createTime 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setCreateTime(null))); + // 准备参数 + SubjectContactsPageReqVO reqVO = new SubjectContactsPageReqVO(); + reqVO.setBusinessId(null); + reqVO.setBusinessType(null); + reqVO.setContactsType(null); + reqVO.setAsteriskType(null); + reqVO.setMarkColor(null); + reqVO.setName(null); + reqVO.setCompanyName(null); + reqVO.setPosition(null); + reqVO.setMobile(null); + reqVO.setPhone(null); + reqVO.setEmaile(null); + reqVO.setAddress(null); + reqVO.setAnnex(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = subjectContactsService.getSubjectContactsPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbSubjectContacts, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSubjectContactsList() { + // mock 数据 + SubjectContactsDO dbSubjectContacts = randomPojo(SubjectContactsDO.class, o -> { // 等会查询到 + o.setBusinessId(null); + o.setBusinessType(null); + o.setContactsType(null); + o.setAsteriskType(null); + o.setMarkColor(null); + o.setName(null); + o.setCompanyName(null); + o.setPosition(null); + o.setMobile(null); + o.setPhone(null); + o.setEmaile(null); + o.setAddress(null); + o.setAnnex(null); + o.setCreateTime(null); + }); + subjectContactsMapper.insert(dbSubjectContacts); + // 测试 businessId 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setBusinessId(null))); + // 测试 businessType 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setBusinessType(null))); + // 测试 contactsType 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setContactsType(null))); + // 测试 asteriskType 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setAsteriskType(null))); + // 测试 markColor 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setMarkColor(null))); + // 测试 name 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setName(null))); + // 测试 companyName 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setCompanyName(null))); + // 测试 position 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setPosition(null))); + // 测试 mobile 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setMobile(null))); + // 测试 phone 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setPhone(null))); + // 测试 emaile 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setEmaile(null))); + // 测试 address 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setAddress(null))); + // 测试 annex 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setAnnex(null))); + // 测试 createTime 不匹配 + subjectContactsMapper.insert(cloneIgnoreId(dbSubjectContacts, o -> o.setCreateTime(null))); + // 准备参数 + SubjectContactsExportReqVO reqVO = new SubjectContactsExportReqVO(); + reqVO.setBusinessId(null); + reqVO.setBusinessType(null); + reqVO.setContactsType(null); + reqVO.setAsteriskType(null); + reqVO.setMarkColor(null); + reqVO.setName(null); + reqVO.setCompanyName(null); + reqVO.setPosition(null); + reqVO.setMobile(null); + reqVO.setPhone(null); + reqVO.setEmaile(null); + reqVO.setAddress(null); + reqVO.setAnnex(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = subjectContactsService.getSubjectContactsList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbSubjectContacts, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeServiceImplTest.java new file mode 100644 index 00000000..6719b8e2 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/subjectrepresentative/SubjectRepresentativeServiceImplTest.java @@ -0,0 +1,247 @@ +package com.yunxi.scm.module.xxjj.service.subjectrepresentative; + +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.subjectrepresentative.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.subjectrepresentative.SubjectRepresentativeDO; +import com.yunxi.scm.module.xxjj.dal.mysql.subjectrepresentative.SubjectRepresentativeMapper; +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 SubjectRepresentativeServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(SubjectRepresentativeServiceImpl.class) +public class SubjectRepresentativeServiceImplTest extends BaseDbUnitTest { + + @Resource + private SubjectRepresentativeServiceImpl subjectRepresentativeService; + + @Resource + private SubjectRepresentativeMapper subjectRepresentativeMapper; + + @Test + public void testCreateSubjectRepresentative_success() { + // 准备参数 + SubjectRepresentativeCreateReqVO reqVO = randomPojo(SubjectRepresentativeCreateReqVO.class); + + // 调用 + Long subjectRepresentativeId = subjectRepresentativeService.createSubjectRepresentative(reqVO); + // 断言 + assertNotNull(subjectRepresentativeId); + // 校验记录的属性是否正确 + SubjectRepresentativeDO subjectRepresentative = subjectRepresentativeMapper.selectById(subjectRepresentativeId); + assertPojoEquals(reqVO, subjectRepresentative); + } + + @Test + public void testUpdateSubjectRepresentative_success() { + // mock 数据 + SubjectRepresentativeDO dbSubjectRepresentative = randomPojo(SubjectRepresentativeDO.class); + subjectRepresentativeMapper.insert(dbSubjectRepresentative);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SubjectRepresentativeUpdateReqVO reqVO = randomPojo(SubjectRepresentativeUpdateReqVO.class, o -> { + o.setId(dbSubjectRepresentative.getId()); // 设置更新的 ID + }); + + // 调用 + subjectRepresentativeService.updateSubjectRepresentative(reqVO); + // 校验是否更新正确 + SubjectRepresentativeDO subjectRepresentative = subjectRepresentativeMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, subjectRepresentative); + } + + @Test + public void testUpdateSubjectRepresentative_notExists() { + // 准备参数 + SubjectRepresentativeUpdateReqVO reqVO = randomPojo(SubjectRepresentativeUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> subjectRepresentativeService.updateSubjectRepresentative(reqVO), SUBJECT_REPRESENTATIVE_NOT_EXISTS); + } + + @Test + public void testDeleteSubjectRepresentative_success() { + // mock 数据 + SubjectRepresentativeDO dbSubjectRepresentative = randomPojo(SubjectRepresentativeDO.class); + subjectRepresentativeMapper.insert(dbSubjectRepresentative);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbSubjectRepresentative.getId(); + + // 调用 + subjectRepresentativeService.deleteSubjectRepresentative(id); + // 校验数据不存在了 + assertNull(subjectRepresentativeMapper.selectById(id)); + } + + @Test + public void testDeleteSubjectRepresentative_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> subjectRepresentativeService.deleteSubjectRepresentative(id), SUBJECT_REPRESENTATIVE_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSubjectRepresentativePage() { + // mock 数据 + SubjectRepresentativeDO dbSubjectRepresentative = randomPojo(SubjectRepresentativeDO.class, o -> { // 等会查询到 + o.setBusinessId(null); + o.setBusinessType(null); + o.setRepresentativeType(null); + o.setName(null); + o.setIdCard(null); + o.setIdCardStart(null); + o.setIdCardEnd(null); + o.setDescription(null); + o.setIdCardPhoto1(null); + o.setIdCardPhoto2(null); + o.setIdCardPhoto3(null); + o.setAuthorizeFiles(null); + o.setCreateTime(null); + }); + subjectRepresentativeMapper.insert(dbSubjectRepresentative); + // 测试 businessId 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setBusinessId(null))); + // 测试 businessType 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setBusinessType(null))); + // 测试 representativeType 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setRepresentativeType(null))); + // 测试 name 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setName(null))); + // 测试 idCard 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCard(null))); + // 测试 idCardStart 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardStart(null))); + // 测试 idCardEnd 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardEnd(null))); + // 测试 description 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setDescription(null))); + // 测试 idCardPhoto1 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardPhoto1(null))); + // 测试 idCardPhoto2 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardPhoto2(null))); + // 测试 idCardPhoto3 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardPhoto3(null))); + // 测试 authorizeFiles 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setAuthorizeFiles(null))); + // 测试 createTime 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setCreateTime(null))); + // 准备参数 + SubjectRepresentativePageReqVO reqVO = new SubjectRepresentativePageReqVO(); + reqVO.setBusinessId(null); + reqVO.setBusinessType(null); + reqVO.setRepresentativeType(null); + reqVO.setName(null); + reqVO.setIdCard(null); + reqVO.setIdCardStart(null); + reqVO.setIdCardEnd(null); + reqVO.setDescription(null); + reqVO.setIdCardPhoto1(null); + reqVO.setIdCardPhoto2(null); + reqVO.setIdCardPhoto3(null); + reqVO.setAuthorizeFiles(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = subjectRepresentativeService.getSubjectRepresentativePage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbSubjectRepresentative, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSubjectRepresentativeList() { + // mock 数据 + SubjectRepresentativeDO dbSubjectRepresentative = randomPojo(SubjectRepresentativeDO.class, o -> { // 等会查询到 + o.setBusinessId(null); + o.setBusinessType(null); + o.setRepresentativeType(null); + o.setName(null); + o.setIdCard(null); + o.setIdCardStart(null); + o.setIdCardEnd(null); + o.setDescription(null); + o.setIdCardPhoto1(null); + o.setIdCardPhoto2(null); + o.setIdCardPhoto3(null); + o.setAuthorizeFiles(null); + o.setCreateTime(null); + }); + subjectRepresentativeMapper.insert(dbSubjectRepresentative); + // 测试 businessId 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setBusinessId(null))); + // 测试 businessType 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setBusinessType(null))); + // 测试 representativeType 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setRepresentativeType(null))); + // 测试 name 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setName(null))); + // 测试 idCard 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCard(null))); + // 测试 idCardStart 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardStart(null))); + // 测试 idCardEnd 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardEnd(null))); + // 测试 description 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setDescription(null))); + // 测试 idCardPhoto1 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardPhoto1(null))); + // 测试 idCardPhoto2 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardPhoto2(null))); + // 测试 idCardPhoto3 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setIdCardPhoto3(null))); + // 测试 authorizeFiles 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setAuthorizeFiles(null))); + // 测试 createTime 不匹配 + subjectRepresentativeMapper.insert(cloneIgnoreId(dbSubjectRepresentative, o -> o.setCreateTime(null))); + // 准备参数 + SubjectRepresentativeExportReqVO reqVO = new SubjectRepresentativeExportReqVO(); + reqVO.setBusinessId(null); + reqVO.setBusinessType(null); + reqVO.setRepresentativeType(null); + reqVO.setName(null); + reqVO.setIdCard(null); + reqVO.setIdCardStart(null); + reqVO.setIdCardEnd(null); + reqVO.setDescription(null); + reqVO.setIdCardPhoto1(null); + reqVO.setIdCardPhoto2(null); + reqVO.setIdCardPhoto3(null); + reqVO.setAuthorizeFiles(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = subjectRepresentativeService.getSubjectRepresentativeList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbSubjectRepresentative, list.get(0)); + } + +} diff --git a/yunxi-ui-admin-vue3/src/api/system/user/index.ts b/yunxi-ui-admin-vue3/src/api/system/user/index.ts index 6224f0e8..25ca042a 100644 --- a/yunxi-ui-admin-vue3/src/api/system/user/index.ts +++ b/yunxi-ui-admin-vue3/src/api/system/user/index.ts @@ -74,3 +74,7 @@ export const updateUserStatus = (id: number, status: number) => { export const getSimpleUserList = (): Promise => { return request.get({ url: '/system/user/list-all-simple' }) } +// 获取公司部门人员树 +export const getUserDeptCompanyListuser = (): Promise => { + return request.get({ url: '/system/user/getUserDeptCompanyListuser' }) +} diff --git a/yunxi-ui-admin-vue3/src/api/xxjj/product/index.ts b/yunxi-ui-admin-vue3/src/api/xxjj/product/index.ts index aff9c64f..94fedff4 100644 --- a/yunxi-ui-admin-vue3/src/api/xxjj/product/index.ts +++ b/yunxi-ui-admin-vue3/src/api/xxjj/product/index.ts @@ -118,3 +118,8 @@ export const deleteProduct = async (id: number) => { export const exportProduct = async (params) => { return await request.download({ url: `/xxjj/product/export-excel`, params }) } + +// 查询商品列表 +export const getProductPage1 = async (params) => { + return await request.get({ url: `/xxjj/product/productPage`, params }) +} \ No newline at end of file diff --git a/yunxi-ui-admin-vue3/src/api/xxjj/subjectContacts/index.ts b/yunxi-ui-admin-vue3/src/api/xxjj/subjectContacts/index.ts new file mode 100644 index 00000000..f5495c79 --- /dev/null +++ b/yunxi-ui-admin-vue3/src/api/xxjj/subjectContacts/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface SubjectContactsVO { + id: number + businessId: number + businessType: string + contactsType: string + asteriskType: string + markColor: string + name: string + companyName: string + position: string + mobile: string + phone: string + emaile: string + address: string + annex: string +} + +// 查询主体联系人列表 +export const getSubjectContactsPage = async (params) => { + return await request.get({ url: `/xxjj/subject-contacts/page`, params }) +} + +// 查询主体联系人详情 +export const getSubjectContacts = async (id: number) => { + return await request.get({ url: `/xxjj/subject-contacts/get?id=` + id }) +} + +// 新增主体联系人 +export const createSubjectContacts = async (data: SubjectContactsVO) => { + return await request.post({ url: `/xxjj/subject-contacts/create`, data }) +} + +// 修改主体联系人 +export const updateSubjectContacts = async (data: SubjectContactsVO) => { + return await request.put({ url: `/xxjj/subject-contacts/update`, data }) +} + +// 删除主体联系人 +export const deleteSubjectContacts = async (id: number) => { + return await request.delete({ url: `/xxjj/subject-contacts/delete?id=` + id }) +} + +// 导出主体联系人 Excel +export const exportSubjectContacts = async (params) => { + return await request.download({ url: `/xxjj/subject-contacts/export-excel`, params }) +} diff --git a/yunxi-ui-admin-vue3/src/utils/dict.ts b/yunxi-ui-admin-vue3/src/utils/dict.ts index 14d0bb07..f015d245 100644 --- a/yunxi-ui-admin-vue3/src/utils/dict.ts +++ b/yunxi-ui-admin-vue3/src/utils/dict.ts @@ -227,11 +227,18 @@ export enum DICT_TYPE { MANAGE_INVENTORY = 'manage_inventory', //管理库存 TRANSPORT_TEMPERATURE = 'transport_temperature', //温层 OUTPUT_TAX_RATE = 'output_tax_rate', //商品进销税率 + representative_type = 'representative_type', //商品进销税率 + paymentMethod = 'payment_method', //商品进销税率 + bankDeposit = 'bankDeposit', //商品进销税率 + settlementDate = 'settlementDate', //商品进销税率 + commissionCalculationBase = 'commissionCalculationBase', DELIVERY_TYPE = 'delivery_type', // 配送方式 UNIT_TYPE = 'unit_type', //单位类型 SOURCE = 'source' , //单位来源 UNIT_STATUS = 'unit_status', //单位状态 - + LIFE_CYCLE = 'life_cycle' ,//生命周期 + SALES_STATUS = 'sales_status', //商品表销售状态 + DELIVETRY_TYPE = 'delivery_type', //配送方式 // ============= CONTRACT 模块================= CONTRACT_STATUS = 'contract_status', // 合同状态 @@ -247,5 +254,5 @@ export enum DICT_TYPE { CONTRACT_BIDDING_STATUS = 'contract_bidding_status', // 合同招投标状态 CONTRACT_LONGTERM_STATUS = 'contract_longterm_status', // 合同长协 - + } diff --git a/yunxi-ui-admin-vue3/src/views/xxjj/contract/components/DrawerFilter.vue b/yunxi-ui-admin-vue3/src/views/xxjj/contract/components/DrawerFilter.vue index 2ab0c44c..e3846e3c 100644 --- a/yunxi-ui-admin-vue3/src/views/xxjj/contract/components/DrawerFilter.vue +++ b/yunxi-ui-admin-vue3/src/views/xxjj/contract/components/DrawerFilter.vue @@ -28,8 +28,8 @@ --> - - + @@ -46,7 +46,7 @@ - + @@ -79,7 +79,8 @@ - + @@ -87,7 +88,8 @@ - + @@ -99,7 +101,8 @@ + :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" + clearable /> @@ -110,11 +113,12 @@ + type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" class="!w-240px" + clearable /> - + @@ -136,7 +140,7 @@ const props = defineProps({ isShow: Boolean }) -const emit = defineEmits(['doClose','doSearch']) +const emit = defineEmits(['doClose', 'doSearch']) const queryFormRef = ref() @@ -175,7 +179,7 @@ const changeDateRange = (obj) => { /** 搜索按钮操作 */ const handleQuery = () => { console.log(queryParams); - // emit('doSearch', queryParams) + emit('doSearch', queryParams) } diff --git a/yunxi-ui-admin-vue3/src/views/xxjj/contract/index.vue b/yunxi-ui-admin-vue3/src/views/xxjj/contract/index.vue index ed28d193..1ae80b2f 100644 --- a/yunxi-ui-admin-vue3/src/views/xxjj/contract/index.vue +++ b/yunxi-ui-admin-vue3/src/views/xxjj/contract/index.vue @@ -153,7 +153,7 @@ const { t } = useI18n() // 国际化 const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数据 -const queryParams = reactive({ +let queryParams: any = reactive({ pageNo: 1, pageSize: 10, content: null, @@ -246,9 +246,12 @@ let showFilterDrawer = ref(false); const toggleShowDrawerFilter = (isshow: boolean) => { showFilterDrawer.value = isshow; } + +// 高级查询 const doDrawerFilterSearch = (params: Object) => { queryParams = params; getList() + showFilterDrawer.value = false; } diff --git a/yunxi-ui-admin-vue3/src/views/xxjj/enterpriseDetails/src/infopage2/businesspage.vue b/yunxi-ui-admin-vue3/src/views/xxjj/enterpriseDetails/src/infopage2/businesspage.vue index 0ce2ba7d..707c7c65 100644 --- a/yunxi-ui-admin-vue3/src/views/xxjj/enterpriseDetails/src/infopage2/businesspage.vue +++ b/yunxi-ui-admin-vue3/src/views/xxjj/enterpriseDetails/src/infopage2/businesspage.vue @@ -33,7 +33,7 @@ - + + + --> diff --git a/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/BulinessLineList.vue b/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/BulinessLineList.vue new file mode 100644 index 00000000..9e9ec692 --- /dev/null +++ b/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/BulinessLineList.vue @@ -0,0 +1,185 @@ + + + + + + + diff --git a/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/ConcatForm.vue b/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/ConcatForm.vue new file mode 100644 index 00000000..27b0c52c --- /dev/null +++ b/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/ConcatForm.vue @@ -0,0 +1,154 @@ + + diff --git a/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/CustomerAdd.vue b/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/CustomerAdd.vue index 281ff31b..8f290653 100644 --- a/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/CustomerAdd.vue +++ b/yunxi-ui-admin-vue3/src/views/xxjj/subjectBasic/CustomerAdd.vue @@ -2,9 +2,11 @@