ソースを参照

Merge remote-tracking branch 'origin/master'

24282 2 年 前
コミット
229d8551d2
92 ファイル変更2618 行追加210 行削除
  1. 28 0
      hx-account/pom.xml
  2. 0 0
      hx-account/src/main/java/com/fjhx/account/a-json/AccountManagementApi.json
  3. 0 0
      hx-account/src/main/java/com/fjhx/account/a-json/AccountRemainderApi.json
  4. 73 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountManagementController.java
  5. 68 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountRemainderController.java
  6. 22 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementDto.java
  7. 27 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementSelectDto.java
  8. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderDto.java
  9. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderSelectDto.java
  10. 47 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountManagement.java
  11. 38 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRemainder.java
  12. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountManagementVo.java
  13. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRemainderVo.java
  14. 27 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountManagementMapper.java
  15. 26 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRemainderMapper.java
  16. 46 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountManagementService.java
  17. 46 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountRemainderService.java
  18. 118 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountManagementServiceImpl.java
  19. 57 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRemainderServiceImpl.java
  20. 20 0
      hx-account/src/main/resources/mapper/account/AccountManagementMapper.xml
  21. 18 0
      hx-account/src/main/resources/mapper/account/AccountRemainderMapper.xml
  22. 10 0
      hx-admin/pom.xml
  23. 9 0
      hx-admin/src/main/resources/application-dev.yml
  24. 10 0
      hx-admin/src/main/resources/application-prod.yml
  25. 5 0
      hx-admin/src/main/resources/application-test.yml
  26. 5 0
      hx-common/src/main/java/com/fjhx/common/constant/SourceConstant.java
  27. 1 2
      hx-customer/pom.xml
  28. 1 1
      hx-customer/src/main/java/com/fjhx/customer/controller/customer/CustomerController.java
  29. 2 2
      hx-customer/src/main/java/com/fjhx/customer/entity/customer/po/Customer.java
  30. 16 2
      hx-customer/src/main/java/com/fjhx/customer/entity/customer/vo/CustomerVo.java
  31. 1 1
      hx-customer/src/main/java/com/fjhx/customer/service/customer/CustomerService.java
  32. 23 4
      hx-customer/src/main/java/com/fjhx/customer/service/customer/impl/CustomerServiceImpl.java
  33. 2 2
      hx-customer/src/main/resources/mapper/customer/CustomerMapper.xml
  34. 3 0
      hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductInfoVo.java
  35. 16 0
      hx-item/src/main/java/com/fjhx/item/mapper/product/ProductInfoMapper.java
  36. 16 0
      hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java
  37. 22 0
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java
  38. 28 0
      hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml
  39. 72 0
      hx-oa/src/main/java/com/fjhx/oa/controller/internal/InternalAddressBookController.java
  40. 22 0
      hx-oa/src/main/java/com/fjhx/oa/entity/internal/dto/InternalAddressBookDto.java
  41. 17 0
      hx-oa/src/main/java/com/fjhx/oa/entity/internal/dto/InternalAddressBookSelectDto.java
  42. 37 0
      hx-oa/src/main/java/com/fjhx/oa/entity/internal/po/InternalAddressBook.java
  43. 33 0
      hx-oa/src/main/java/com/fjhx/oa/entity/internal/vo/InternalAddressBookVo.java
  44. 22 0
      hx-oa/src/main/java/com/fjhx/oa/entity/internal/vo/SysUserVo.java
  45. 26 0
      hx-oa/src/main/java/com/fjhx/oa/mapper/internal/InternalAddressBookMapper.java
  46. 47 0
      hx-oa/src/main/java/com/fjhx/oa/service/internal/InternalAddressBookService.java
  47. 86 0
      hx-oa/src/main/java/com/fjhx/oa/service/internal/impl/InternalAddressBookServiceImpl.java
  48. 18 0
      hx-oa/src/main/resources/mapper/internal/InternalAddressBookMapper.xml
  49. 69 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java
  50. 68 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseDetailController.java
  51. 7 3
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeController.java
  52. 7 2
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeDetailController.java
  53. 0 71
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeFlow.java
  54. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailDto.java
  55. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailSelectDto.java
  56. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDto.java
  57. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseSelectDto.java
  58. 50 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseDetailStatusEnum.java
  59. 51 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseStatusEnum.java
  60. 75 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/Purchase.java
  61. 54 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/PurchaseDetail.java
  62. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java
  63. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java
  64. 16 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java
  65. 6 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeSelectDto.java
  66. 52 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeDetailStatusEnum.java
  67. 50 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeStatusEnum.java
  68. 4 16
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java
  69. 32 2
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java
  70. 31 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java
  71. 1 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeVo.java
  72. 90 0
      hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java
  73. 36 4
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java
  74. 26 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java
  75. 26 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseMapper.java
  76. 9 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/subscribe/SubscribeDetailMapper.java
  77. 46 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java
  78. 46 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java
  79. 57 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java
  80. 82 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java
  81. 3 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeDetailService.java
  82. 0 26
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeFlowService.java
  83. 2 2
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeService.java
  84. 83 5
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  85. 0 38
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeFlowServiceImpl.java
  86. 69 7
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java
  87. 1 0
      hx-purchase/src/main/java/com/fjhx/purchase/util/code/CodeEnum.java
  88. 22 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml
  89. 25 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml
  90. 27 15
      hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml
  91. 1 4
      hx-purchase/src/main/resources/mapper/subscribe/SubscribeMapper.xml
  92. 13 0
      pom.xml

+ 28 - 0
hx-account/pom.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.fjhx</groupId>
+        <artifactId>bytesailing</artifactId>
+        <version>1.0</version>
+    </parent>
+
+    <artifactId>hx-account</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-base</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-common</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>

ファイルの差分が大きいため隠しています
+ 0 - 0
hx-account/src/main/java/com/fjhx/account/a-json/AccountManagementApi.json


ファイルの差分が大きいため隠しています
+ 0 - 0
hx-account/src/main/java/com/fjhx/account/a-json/AccountRemainderApi.json


+ 73 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountManagementController.java

@@ -0,0 +1,73 @@
+package com.fjhx.account.controller.account;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.common.constant.SourceConstant;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.fjhx.account.entity.account.dto.AccountManagementSelectDto;
+import com.fjhx.account.entity.account.dto.AccountManagementDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 账户-管理表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@DS(SourceConstant.ACCOUNT)
+@RestController
+@RequestMapping("/accountManagement")
+public class AccountManagementController {
+
+    @Autowired
+    private AccountManagementService accountManagementService;
+
+    /**
+     * 账户-管理表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountManagementVo> page(@RequestBody AccountManagementSelectDto dto) {
+        return accountManagementService.getPage(dto);
+    }
+
+    /**
+     * 账户-管理表明细
+     */
+    @PostMapping("/detail")
+    public AccountManagementDto detail(@RequestBody BaseSelectDto dto) {
+        return accountManagementService.detail(dto.getId());
+    }
+
+    /**
+     * 账户-管理表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountManagementDto accountManagementDto) {
+        accountManagementService.add(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountManagementDto accountManagementDto) {
+        accountManagementService.edit(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountManagementService.delete(dto.getId());
+    }
+
+}

+ 68 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRemainderController.java

@@ -0,0 +1,68 @@
+package com.fjhx.account.controller.account;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.fjhx.account.entity.account.dto.AccountRemainderSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRemainderDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountRemainderService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 账户-余额表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@RestController
+@RequestMapping("/accountRemainder")
+public class AccountRemainderController {
+
+    @Autowired
+    private AccountRemainderService accountRemainderService;
+
+    /**
+     * 账户-余额表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountRemainderVo> page(@RequestBody AccountRemainderSelectDto dto) {
+        return accountRemainderService.getPage(dto);
+    }
+
+    /**
+     * 账户-余额表明细
+     */
+    @PostMapping("/detail")
+    public AccountRemainderVo detail(@RequestBody BaseSelectDto dto) {
+        return accountRemainderService.detail(dto.getId());
+    }
+
+    /**
+     * 账户-余额表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountRemainderDto accountRemainderDto) {
+        accountRemainderService.add(accountRemainderDto);
+    }
+
+    /**
+     * 账户-余额表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountRemainderDto accountRemainderDto) {
+        accountRemainderService.edit(accountRemainderDto);
+    }
+
+    /**
+     * 账户-余额表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountRemainderService.delete(dto.getId());
+    }
+
+}

+ 22 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementDto.java

@@ -0,0 +1,22 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 账户-管理表新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountManagementDto extends AccountManagement {
+    @TableField(exist = false)
+    private List<AccountRemainder> accountRemainderList;
+}

+ 27 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementSelectDto.java

@@ -0,0 +1,27 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-管理表列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountManagementSelectDto extends BaseSelectDto {
+
+
+    /**
+     * 账户名
+     */
+    private String name;
+
+    /**
+     * 开户银行
+     */
+    private String openingBank;
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-余额表新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRemainderDto extends AccountRemainder {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-余额表列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRemainderSelectDto extends BaseSelectDto {
+
+}

+ 47 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountManagement.java

@@ -0,0 +1,47 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 账户-管理表
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("account_management")
+public class AccountManagement extends BasePo {
+
+    /**
+     * 账户别名
+     */
+    private String alias;
+
+    /**
+     * 账户名
+     */
+    private String name;
+
+    /**
+     * 开户银行
+     */
+    private String openingBank;
+
+    /**
+     * 开户账号
+     */
+    private String accountOpening;
+
+    /**
+     * 联行号
+     */
+    private String interbankNumber;
+
+}

+ 38 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRemainder.java

@@ -0,0 +1,38 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 账户-余额表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("account_remainder")
+public class AccountRemainder extends BasePo {
+
+    /**
+     * 账户管理表ID
+     */
+    private Long accountManagementId;
+
+    /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+    /**
+     * 余额
+     */
+    private BigDecimal remainder;
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountManagementVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountManagement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-管理表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountManagementVo extends AccountManagement {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRemainderVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-余额表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRemainderVo extends AccountRemainder {
+
+}

+ 27 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountManagementMapper.java

@@ -0,0 +1,27 @@
+package com.fjhx.account.mapper.account;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 账户-管理表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+public interface AccountManagementMapper extends BaseMapper<AccountManagement> {
+
+    /**
+     * 账户-管理表分页
+     */
+    Page<AccountManagementVo> getPage(@Param("page") Page<Object> page, @Param("ew")LambdaQueryWrapper<AccountManagement> wrapper);
+
+}

+ 26 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRemainderMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.account.mapper.account;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 账户-余额表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface AccountRemainderMapper extends BaseMapper<AccountRemainder> {
+
+    /**
+     * 账户-余额表分页
+     */
+    Page<AccountRemainderVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<AccountRemainder> wrapper);
+
+}

+ 46 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountManagementService.java

@@ -0,0 +1,46 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.fjhx.account.entity.account.dto.AccountManagementSelectDto;
+import com.fjhx.account.entity.account.dto.AccountManagementDto;
+
+
+/**
+ * <p>
+ * 账户-管理表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+public interface AccountManagementService extends BaseService<AccountManagement> {
+
+    /**
+     * 账户-管理表分页
+     */
+    Page<AccountManagementVo> getPage(AccountManagementSelectDto dto);
+
+    /**
+     * 账户-管理表明细
+     */
+    AccountManagementDto detail(Long id);
+
+    /**
+     * 账户-管理表新增
+     */
+    void add(AccountManagementDto accountManagementDto);
+
+    /**
+     * 账户-管理表编辑
+     */
+    void edit(AccountManagementDto accountManagementDto);
+
+    /**
+     * 账户-管理表删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountRemainderService.java

@@ -0,0 +1,46 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.fjhx.account.entity.account.dto.AccountRemainderSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRemainderDto;
+
+
+/**
+ * <p>
+ * 账户-余额表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface AccountRemainderService extends BaseService<AccountRemainder> {
+
+    /**
+     * 账户-余额表分页
+     */
+    Page<AccountRemainderVo> getPage(AccountRemainderSelectDto dto);
+
+    /**
+     * 账户-余额表明细
+     */
+    AccountRemainderVo detail(Long id);
+
+    /**
+     * 账户-余额表新增
+     */
+    void add(AccountRemainderDto accountRemainderDto);
+
+    /**
+     * 账户-余额表编辑
+     */
+    void edit(AccountRemainderDto accountRemainderDto);
+
+    /**
+     * 账户-余额表删除
+     */
+    void delete(Long id);
+
+}

+ 118 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountManagementServiceImpl.java

@@ -0,0 +1,118 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.mapper.account.AccountManagementMapper;
+import com.fjhx.account.service.account.AccountManagementService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.account.service.account.AccountRemainderService;
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.poi.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.fjhx.account.entity.account.dto.AccountManagementSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountManagementDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 账户-管理表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Service
+public class AccountManagementServiceImpl extends ServiceImpl<AccountManagementMapper, AccountManagement> implements AccountManagementService {
+    @Autowired
+    private AccountRemainderService accountRemainderService;
+
+    /**
+     * 账户-管理表分页
+     */
+    @Override
+    public Page<AccountManagementVo> getPage(AccountManagementSelectDto dto) {
+        LambdaQueryWrapper<AccountManagement> wrapper = Wrappers.<AccountManagement>lambdaQuery();
+        //根据关键字查询(查询的字段有账户别名、账户名称、账号)
+        if (StringUtils.isNotEmpty(dto.getName())){
+            wrapper.like(AccountManagement::getName,dto.getName());
+            wrapper.like(AccountManagement::getAlias,dto.getName());
+            wrapper.like(AccountManagement::getAccountOpening,dto.getName());
+        }
+        //根据开户银行查询
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getOpeningBank()),AccountManagement::getOpeningBank,dto.getOpeningBank());
+        Page<AccountManagementVo> page = baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    /**
+     * 账户-管理表明细
+     */
+    @Override
+    public AccountManagementDto detail(Long id) {
+        //查询账户管理表的明细
+        AccountManagement AccountManagement = this.getById(id);
+        AccountManagementDto result = BeanUtil.toBean(AccountManagement, AccountManagementDto.class);
+        //查询账户余额表的信息
+        List<AccountRemainder> accountRemainderList = accountRemainderService.list(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId, id));
+        result.setAccountRemainderList(accountRemainderList);
+        return result;
+    }
+
+    /**
+     * 账户-管理表新增
+     */
+    @Override
+    public void add(AccountManagementDto accountManagementDto) {
+        //添加账户管理表的信息
+        this.save(accountManagementDto);
+        saveAccountRemainder(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表编辑
+     */
+    @Override
+    public void edit(AccountManagementDto accountManagementDto) {
+        this.updateById(accountManagementDto);
+        //删除账户-余额表的信息
+        accountRemainderService.remove(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId,accountManagementDto.getId()));
+        //添加账户余额表的信息
+        saveAccountRemainder(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表删除
+     */
+    @Override
+    public void delete(Long id) {
+        //删除账户-管理表的信息
+        this.removeById(id);
+        //删除账户-余额表的信息
+        accountRemainderService.remove(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId,id));
+    }
+
+
+    /**
+     * 添加账户-余额表的信息
+     */
+    private void saveAccountRemainder(AccountManagementDto accountManagementDto){
+        List<AccountRemainder> accountRemainderList = accountManagementDto.getAccountRemainderList();
+        accountRemainderList.forEach(accountRemainder -> {
+            accountRemainder.setAccountManagementId(accountManagementDto.getId());
+        });
+        accountRemainderService.saveBatch(accountRemainderList);
+    }
+}

+ 57 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRemainderServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.account.service.account.impl;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.mapper.account.AccountRemainderMapper;
+import com.fjhx.account.service.account.AccountRemainderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.fjhx.account.entity.account.dto.AccountRemainderSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountRemainderDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 账户-余额表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Service
+public class AccountRemainderServiceImpl extends ServiceImpl<AccountRemainderMapper, AccountRemainder> implements AccountRemainderService {
+
+    @Override
+    public Page<AccountRemainderVo> getPage(AccountRemainderSelectDto dto) {
+        IWrapper<AccountRemainder> wrapper = getWrapper();
+        wrapper.orderByDesc("ar", AccountRemainder::getId);
+        Page<AccountRemainderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public AccountRemainderVo detail(Long id) {
+        AccountRemainder AccountRemainder = this.getById(id);
+        AccountRemainderVo result = BeanUtil.toBean(AccountRemainder, AccountRemainderVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(AccountRemainderDto accountRemainderDto) {
+        this.save(accountRemainderDto);
+    }
+
+    @Override
+    public void edit(AccountRemainderDto accountRemainderDto) {
+        this.updateById(accountRemainderDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 20 - 0
hx-account/src/main/resources/mapper/account/AccountManagementMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountManagementMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountManagementVo">
+        select
+            am.id,
+            am.alias,
+            am.name,
+            am.opening_bank,
+            am.account_opening,
+            am.interbank_number,
+            am.create_user,
+            am.create_time,
+            am.update_user,
+            am.update_time
+        from account_management am
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 18 - 0
hx-account/src/main/resources/mapper/account/AccountRemainderMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountRemainderMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountRemainderVo">
+        select
+            ar.id,
+            ar.account_management_id,
+            ar.currency,
+            ar.remainder,
+            ar.create_user,
+            ar.create_time,
+            ar.update_user,
+            ar.update_time
+        from account_remainder ar
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 10 - 0
hx-admin/pom.xml

@@ -54,6 +54,16 @@
             <artifactId>hx-customer</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-purchase</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-account</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 9 - 0
hx-admin/src/main/resources/application-dev.yml

@@ -38,6 +38,15 @@ spring:
                     url: jdbc:mysql://36.134.91.96:17330/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: fjhx2012mysql
                     password: 3PN-Mzn#vnP&q6d
+                purchase:
+                    url: jdbc:mysql://36.134.91.96:17330/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: fjhx2012mysql
+                    password: 3PN-Mzn#vnP&q6d
+
+                account:
+                    url: jdbc:mysql://36.134.91.96:17330/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: fjhx2012mysql
+                    password: 3PN-Mzn#vnP&q6d
 
     # redis 配置
     redis:

+ 10 - 0
hx-admin/src/main/resources/application-prod.yml

@@ -35,6 +35,16 @@ spring:
                     username: fjhx2012mysql
                     password: IzJshF_dk9NNFpNm_IK
 
+                customer:
+                    url: jdbc:mysql://36.134.91.96:17330/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: fjhx2012mysql
+                    password: 3PN-Mzn#vnP&q6d
+
+                account:
+                    url: jdbc:mysql://36.134.91.96:17330/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: fjhx2012mysql
+                    password: 3PN-Mzn#vnP&q6d
+
     # redis 配置
     redis:
         # 地址

+ 5 - 0
hx-admin/src/main/resources/application-test.yml

@@ -40,6 +40,11 @@ spring:
                     username: fjhx2012mysql
                     password: 3PN-Mzn#vnP&q6d
 
+                account:
+                    url: jdbc:mysql://36.134.91.96:17330/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: fjhx2012mysql
+                    password: 3PN-Mzn#vnP&q6d
+
     # redis 配置
     redis:
         # 地址

+ 5 - 0
hx-common/src/main/java/com/fjhx/common/constant/SourceConstant.java

@@ -16,4 +16,9 @@ public interface SourceConstant {
 
     String CUSTOMER = "customer";
 
+    String PURCHASE = "purchase";
+
+    String BASE = "base";
+    String ACCOUNT = "account";
+
 }

+ 1 - 2
hx-customer/pom.xml

@@ -13,7 +13,6 @@
     <artifactId>hx-customer</artifactId>
 
     <dependencies>
-
         <dependency>
             <groupId>com.fjhx</groupId>
             <artifactId>hx-base</artifactId>
@@ -26,4 +25,4 @@
 
     </dependencies>
 
-</project>
+</project>

+ 1 - 1
hx-customer/src/main/java/com/fjhx/customer/controller/customer/CustomerController.java

@@ -50,7 +50,7 @@ public class CustomerController {
      * 客户表明细
      */
     @PostMapping("/detail")
-    public CustomerDto detail(@RequestBody BaseSelectDto dto) {
+    public CustomerVo detail(@RequestBody BaseSelectDto dto) {
         return customerService.detail(dto.getId());
     }
 

+ 2 - 2
hx-customer/src/main/java/com/fjhx/customer/entity/customer/po/Customer.java

@@ -35,9 +35,9 @@ public class Customer extends BasePo {
     private String countryId;
 
     /**
-     * 州/区名称
+     * 省份ID
      */
-    private String stateName;
+    private String provinceId;
 
     /**
      * 城市id

+ 16 - 2
hx-customer/src/main/java/com/fjhx/customer/entity/customer/vo/CustomerVo.java

@@ -1,17 +1,31 @@
 package com.fjhx.customer.entity.customer.vo;
 
+import com.fjhx.area.service.ISetAreaName;
 import com.fjhx.customer.entity.customer.po.Customer;
+import com.fjhx.customer.entity.customer.po.CustomerUser;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 客户表列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2023-04-04
  */
 @Getter
 @Setter
-public class CustomerVo extends Customer {
+public class CustomerVo extends Customer implements ISetAreaName {
+
+
+    private String countryName;
+
+    private String provinceName;
+
+    private String cityName;
+
+    private List<CustomerUser> customerUserList;
+
 
 }

+ 1 - 1
hx-customer/src/main/java/com/fjhx/customer/service/customer/CustomerService.java

@@ -28,7 +28,7 @@ public interface CustomerService extends BaseService<Customer> {
     /**
      * 客户表明细
      */
-    CustomerDto detail(Long id);
+    CustomerVo detail(Long id);
 
     /**
      * 客户表新增

+ 23 - 4
hx-customer/src/main/java/com/fjhx/customer/service/customer/impl/CustomerServiceImpl.java

@@ -1,8 +1,10 @@
 package com.fjhx.customer.service.customer.impl;
 
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.area.utils.AreaUtil;
 import com.fjhx.customer.entity.customer.dto.CustomerUserDto;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.entity.customer.po.CustomerUser;
@@ -11,6 +13,7 @@ import com.fjhx.customer.service.customer.CustomerService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.customer.service.customer.CustomerUserService;
 import com.fjhx.customer.utils.code.CodeEnum;
+import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -20,7 +23,9 @@ import com.fjhx.customer.entity.customer.dto.CustomerSelectDto;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.rmi.ServerException;
 import java.security.Security;
 import java.util.List;
 
@@ -59,6 +64,10 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
         }
         wrapper.orderByDesc(Customer::getCreateTime);
         Page<CustomerVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+
+        //复制城市信息
+        List<CustomerVo> records = page.getRecords();
+        AreaUtil.setAreaName(records);
         return page;
     }
 
@@ -68,14 +77,18 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
      * @return
      */
     @Override
-    public CustomerDto detail(Long id) {
+    public CustomerVo detail(Long id) {
         //查询客户表的信息
         Customer Customer = this.getById(id);
-        CustomerDto result = BeanUtil.toBean(Customer, CustomerDto.class);
+        CustomerVo result = BeanUtil.toBean(Customer, CustomerVo.class);
+        if (ObjectUtil.isEmpty(result)){
+            throw new ServiceException("没有找到该用户信息");
+        }
         //查询客户-联系人表的信息
         List<CustomerUser> customerUserList = customerUserService.list(Wrappers.<CustomerUser>lambdaQuery()
                 .eq(CustomerUser::getCustomerId, result.getId()));
         result.setCustomerUserList(customerUserList);
+        AreaUtil.setAreaName(result);
         return result;
     }
 
@@ -84,6 +97,7 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
      * @param customerDto
      */
     @Override
+    @Transactional(rollbackFor = {Exception.class})
     public void add(CustomerDto customerDto) {
         customerDto.setCode(CodeEnum.CUSTOMER.getCode());
         this.save(customerDto);
@@ -95,13 +109,14 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
      * 修改客户表的数据
      * @param customerDto
      */
+    @Transactional(rollbackFor = {Exception.class})
     @Override
     public void edit(CustomerDto customerDto) {
         //修改客户表的信息
         this.updateById(customerDto);
         //删除客户-用户表的信息
         customerUserService.remove(Wrappers.<CustomerUser>lambdaQuery().eq(CustomerUser::getCustomerId,customerDto.getId()));
-        //添加户-联系人表的信息
+        //添加户-联系人表的信息
         saveCustomerUse(customerDto);
     }
 
@@ -110,6 +125,7 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
      * @param
      */
     @Override
+    @Transactional(rollbackFor = {Exception.class})
     public void delete(Long id) {
         //删除客户表的数据
         this.removeById(id);
@@ -128,7 +144,10 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
         //添加权限(自己看自己)
         wrapper.eq(Customer::getUserId, SecurityUtils.getUserId());
         wrapper.orderByDesc(Customer::getCreateTime);
-        Page<CustomerVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        Page<CustomerVo> page =baseMapper.getPage(dto.getPage(), wrapper);
+        //复制城市信息
+        List<CustomerVo> records = page.getRecords();
+        AreaUtil.setAreaName(records);
         return page;
     }
 

+ 2 - 2
hx-customer/src/main/resources/mapper/customer/CustomerMapper.xml

@@ -7,7 +7,7 @@
             c.customer_code,
             c.code,
             c.country_id,
-            c.state_name,
+            c.province_id,
             c.city_id,
             c.address,
             c.zip_code,
@@ -29,7 +29,7 @@
             c.customer_code,
             c.code,
             c.country_id,
-            c.state_name,
+            c.province_id,
             c.city_id,
             c.address,
             c.zip_code,

+ 3 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductInfoVo.java

@@ -1,5 +1,6 @@
 package com.fjhx.item.entity.product.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import lombok.Getter;
 import lombok.Setter;
@@ -14,4 +15,6 @@ import lombok.Setter;
 @Setter
 public class ProductInfoVo extends ProductInfo {
 
+    @TableField(exist = false)
+    private String classifyName;
 }

+ 16 - 0
hx-item/src/main/java/com/fjhx/item/mapper/product/ProductInfoMapper.java

@@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.ruoyi.common.annotation.TenantIgnore;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
+
+import java.util.List;
 
 
 /**
@@ -23,4 +27,16 @@ public interface ProductInfoMapper extends BaseMapper<ProductInfo> {
      */
     Page<ProductInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductInfo> wrapper);
 
+    /**
+     * 根据产品IDS获取产品
+     * @return
+     */
+    List<ProductInfoVo> getListByProductIds(@Param("productIds") List<Long> productIds);
+
+    /**
+     * 根据产品类型获取产品
+     * @return
+     */
+    List<ProductInfoVo> getListByProductType(@Param("productType") Integer productType);
+
 }

+ 16 - 0
hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java

@@ -6,6 +6,9 @@ import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.ruoyi.common.core.service.BaseService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
@@ -43,4 +46,17 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
      */
     void delete(Long id);
 
+    /**
+     * 根据产品IDS获取产品
+     * @param productIds
+     * @return
+     */
+    List<ProductInfoVo> getListByProductIds(List<Long> productIds);
+
+    /**
+     * 根据产品类型获取产品
+     * @return
+     */
+    List<ProductInfoVo> getListByProductType(Integer productType);
+
 }

+ 22 - 0
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -18,6 +18,8 @@ import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -83,4 +85,24 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         ObsFileUtil.removeFile(id);
     }
 
+    /**
+     * 根据产品IDS获取产品
+     * @param productIds
+     * @return
+     */
+    @Override
+    public List<ProductInfoVo> getListByProductIds(List<Long> productIds) {
+        return baseMapper.getListByProductIds(productIds);
+    }
+
+    /**
+     * 根据产品类型获取产品
+     * @param productType
+     * @return
+     */
+    @Override
+    public List<ProductInfoVo> getListByProductType(Integer productType) {
+        return baseMapper.getListByProductType(productType);
+    }
+
 }

+ 28 - 0
hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -19,4 +19,32 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getListByProductIds" resultType="com.fjhx.item.entity.product.vo.ProductInfoVo">
+        SELECT
+            t1.*,
+            t2.`name` AS classifyName
+        FROM
+            product_info t1
+        LEFT JOIN product_classify t2 ON t1.product_classify_id = t2.id
+        <where>
+            <if test="productIds neq null and productIds.size() > 0">
+                <foreach collection="productIds" item="productId" open="t1.id IN (" separator="," close=")">
+                    #{productId}
+                </foreach>
+            </if>
+        </where>
+    </select>
+    <select id="getListByProductType" resultType="com.fjhx.item.entity.product.vo.ProductInfoVo">
+        SELECT
+            t1.*,
+            t2.`name` AS classifyName
+        FROM
+            product_info t1
+        LEFT JOIN product_classify t2 ON t1.product_classify_id = t2.id
+        <where>
+            <if test="productType neq null ">
+               t1.type = #{productType}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 72 - 0
hx-oa/src/main/java/com/fjhx/oa/controller/internal/InternalAddressBookController.java

@@ -0,0 +1,72 @@
+package com.fjhx.oa.controller.internal;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.web.bind.annotation.*;
+import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.oa.service.internal.InternalAddressBookService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 内部通讯录 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@RestController
+@RequestMapping("/internalAddressBook")
+public class InternalAddressBookController extends BaseController {
+
+    @Autowired
+    private InternalAddressBookService internalAddressBookService;
+
+    /**
+     * 内部通讯录分页
+     */
+    @GetMapping("/page")
+    public TableDataInfo page(SysUser sysUser) {
+        startPage();
+        return getDataTable(internalAddressBookService.getPage(sysUser));
+    }
+
+    /**
+     * 内部通讯录明细
+     */
+    @PostMapping("/detail")
+    public List<InternalAddressBook> detail(@RequestBody InternalAddressBookDto dto) {
+        return internalAddressBookService.detail(dto.getUserId());
+    }
+
+    /**
+     * 内部通讯录新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody InternalAddressBookDto internalAddressBookDto) {
+        internalAddressBookService.add(internalAddressBookDto);
+    }
+
+    /**
+     * 内部通讯录编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody InternalAddressBookDto internalAddressBookDto) {
+        internalAddressBookService.edit(internalAddressBookDto);
+    }
+
+    /**
+     * 内部通讯录删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        internalAddressBookService.delete(dto.getId());
+    }
+
+}

+ 22 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/dto/InternalAddressBookDto.java

@@ -0,0 +1,22 @@
+package com.fjhx.oa.entity.internal.dto;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 内部通讯录新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class InternalAddressBookDto extends InternalAddressBook {
+
+    /**内部通讯录列表明细*/
+    private List<InternalAddressBook> internalAddressBookList;
+
+}

+ 17 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/dto/InternalAddressBookSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.oa.entity.internal.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 内部通讯录列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class InternalAddressBookSelectDto extends BaseSelectDto {
+
+}

+ 37 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/po/InternalAddressBook.java

@@ -0,0 +1,37 @@
+package com.fjhx.oa.entity.internal.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 内部通讯录
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+@TableName("internal_address_book")
+public class InternalAddressBook extends BasePo {
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 联系类型(字典contact_information)
+     */
+    private Integer type;
+
+    /**
+     * 联系号码
+     */
+    private String contactNumber;
+
+}

+ 33 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/vo/InternalAddressBookVo.java

@@ -0,0 +1,33 @@
+package com.fjhx.oa.entity.internal.vo;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 内部通讯录列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class InternalAddressBookVo extends InternalAddressBook {
+
+    /**部门名称*/
+    private String deptName;
+    /**工号*/
+    private String jobNumber;
+    /**用户昵称*/
+    private String nickName;
+    /**手机号*/
+    private String phonenumber;
+    /**电子邮箱*/
+    private String email;
+    /**部门信息*/
+    /**联系方式列表*/
+    List<InternalAddressBook> internalAddressBookList;
+
+}

+ 22 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/vo/SysUserVo.java

@@ -0,0 +1,22 @@
+package com.fjhx.oa.entity.internal.vo;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 内部通讯录列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class SysUserVo extends SysUser {
+    /**联系方式列表*/
+    List<InternalAddressBook> internalAddressBookList;
+
+}

+ 26 - 0
hx-oa/src/main/java/com/fjhx/oa/mapper/internal/InternalAddressBookMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.oa.mapper.internal;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.internal.vo.InternalAddressBookVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 内部通讯录 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+public interface InternalAddressBookMapper extends BaseMapper<InternalAddressBook> {
+
+    /**
+     * 内部通讯录分页
+     */
+    Page<InternalAddressBookVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<InternalAddressBook> wrapper);
+
+}

+ 47 - 0
hx-oa/src/main/java/com/fjhx/oa/service/internal/InternalAddressBookService.java

@@ -0,0 +1,47 @@
+package com.fjhx.oa.service.internal;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.fjhx.oa.entity.internal.vo.SysUserVo;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.service.BaseService;
+import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 内部通讯录 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+public interface InternalAddressBookService extends BaseService<InternalAddressBook> {
+
+    /**
+     * 内部通讯录分页
+     */
+    List<SysUserVo> getPage(SysUser sysUser);
+
+    /**
+     * 内部通讯录明细
+     */
+    List<InternalAddressBook> detail(Long id);
+
+    /**
+     * 内部通讯录新增
+     */
+    void add(InternalAddressBookDto internalAddressBookDto);
+
+    /**
+     * 内部通讯录编辑
+     */
+    void edit(InternalAddressBookDto internalAddressBookDto);
+
+    /**
+     * 内部通讯录删除
+     */
+    void delete(Long id);
+
+}

+ 86 - 0
hx-oa/src/main/java/com/fjhx/oa/service/internal/impl/InternalAddressBookServiceImpl.java

@@ -0,0 +1,86 @@
+package com.fjhx.oa.service.internal.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.fjhx.oa.entity.internal.vo.SysUserVo;
+import com.fjhx.oa.mapper.internal.InternalAddressBookMapper;
+import com.fjhx.oa.service.internal.InternalAddressBookService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.service.impl.SysUserServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 内部通讯录 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@DS(SourceConstant.OA)
+@Service
+public class InternalAddressBookServiceImpl extends ServiceImpl<InternalAddressBookMapper, InternalAddressBook> implements InternalAddressBookService {
+
+    @Autowired
+    SysUserServiceImpl sysUserService;
+
+    @Override
+    public List<SysUserVo> getPage(SysUser user) {
+//        IWrapper<InternalAddressBook> wrapper = getWrapper();
+//        wrapper.orderByDesc("iab", InternalAddressBook::getId);
+//        Page<InternalAddressBookVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<SysUser> sysUsers = sysUserService.selectUserList(user);
+        DynamicDataSourceContextHolder.poll();
+
+        List<SysUserVo> sysUserVoList = BeanUtil.copyToList(sysUsers, SysUserVo.class);
+        List<Long> userIds = sysUserVoList.stream().map(SysUser::getUserId).collect(Collectors.toList());
+        List<InternalAddressBook> list = list(q -> q.in(InternalAddressBook::getUserId, userIds));
+        Map<Long, List<InternalAddressBook>> internalAddressBookMap = list.stream().collect(Collectors.groupingBy(InternalAddressBook::getUserId));
+        for (SysUserVo sysUserVo : sysUserVoList){
+            List<InternalAddressBook> internalAddressBook = internalAddressBookMap.get(sysUserVo.getUserId());
+            sysUserVo.setInternalAddressBookList(internalAddressBook);
+        }
+        return sysUserVoList;
+    }
+
+    @Override
+    public List<InternalAddressBook> detail(Long userId) {
+        List<InternalAddressBook> list = list(q -> q.eq(InternalAddressBook::getUserId, userId));
+        return list;
+    }
+
+    @Override
+    public void add(InternalAddressBookDto internalAddressBookDto) {
+        this.save(internalAddressBookDto);
+    }
+
+    @Override
+    public void edit(InternalAddressBookDto internalAddressBookDto) {
+        List<InternalAddressBook> internalAddressBookList = internalAddressBookDto.getInternalAddressBookList();
+        for (InternalAddressBook internalAddressBook :internalAddressBookList){
+            internalAddressBook.setUserId(internalAddressBookDto.getUserId());
+        }
+        List<Long> internalAddressBookIds = internalAddressBookList.stream().map(InternalAddressBook::getId).collect(Collectors.toList());
+        remove(q->q.in(InternalAddressBook::getId,internalAddressBookIds));
+        saveOrUpdateBatch(internalAddressBookList);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 18 - 0
hx-oa/src/main/resources/mapper/internal/InternalAddressBookMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.oa.mapper.internal.InternalAddressBookMapper">
+    <select id="getPage" resultType="com.fjhx.oa.entity.internal.vo.InternalAddressBookVo">
+        select
+            iab.id,
+            iab.user_id,
+            iab.type,
+            iab.contact_number,
+            iab.create_user,
+            iab.create_time,
+            iab.update_user,
+            iab.update_time
+        from internal_address_book iab
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 69 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java

@@ -0,0 +1,69 @@
+package com.fjhx.purchase.controller.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.purchase.PurchaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 采购 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@RestController
+@RequestMapping("/purchase")
+public class PurchaseController {
+
+    @Autowired
+    private PurchaseService purchaseService;
+
+    /**
+     * 采购分页
+     */
+    @PostMapping("/page")
+    public Page<PurchaseVo> page(@RequestBody PurchaseSelectDto dto) {
+        return purchaseService.getPage(dto);
+    }
+
+    /**
+     * 采购明细
+     */
+    @PostMapping("/detail")
+    public PurchaseVo detail(@RequestBody BaseSelectDto dto) {
+        return purchaseService.detail(dto.getId());
+    }
+
+    /**
+     * 采购新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody Purchase purchase) {
+        purchaseService.add(purchase);
+    }
+
+    /**
+     * 采购编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody PurchaseDto purchaseDto) {
+        purchaseService.edit(purchaseDto);
+    }
+
+    /**
+     * 采购删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        purchaseService.delete(dto.getId());
+    }
+
+}

+ 68 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseDetailController.java

@@ -0,0 +1,68 @@
+package com.fjhx.purchase.controller.purchase;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 申购单 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@RestController
+@RequestMapping("/purchaseDetail")
+public class PurchaseDetailController {
+
+    @Autowired
+    private PurchaseDetailService purchaseDetailService;
+
+    /**
+     * 申购单分页
+     */
+    @PostMapping("/page")
+    public Page<PurchaseDetailVo> page(@RequestBody PurchaseDetailSelectDto dto) {
+        return purchaseDetailService.getPage(dto);
+    }
+
+    /**
+     * 申购单明细
+     */
+    @PostMapping("/detail")
+    public PurchaseDetailVo detail(@RequestBody BaseSelectDto dto) {
+        return purchaseDetailService.detail(dto.getId());
+    }
+
+    /**
+     * 申购单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody PurchaseDetailDto purchaseDetailDto) {
+        purchaseDetailService.add(purchaseDetailDto);
+    }
+
+    /**
+     * 申购单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody PurchaseDetailDto purchaseDetailDto) {
+        purchaseDetailService.edit(purchaseDetailDto);
+    }
+
+    /**
+     * 申购单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        purchaseDetailService.delete(dto.getId());
+    }
+
+}

+ 7 - 3
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeController.java

@@ -1,5 +1,8 @@
 package com.fjhx.purchase.controller.subscribe;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
@@ -18,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  * @author 
  * @since 2023-04-03
  */
+@DS(SourceConstant.PURCHASE)
 @RestController
 @RequestMapping("/subscribe")
 public class SubscribeController {
@@ -37,7 +41,7 @@ public class SubscribeController {
      * 申购单明细
      */
     @PostMapping("/detail")
-    public SubscribeVo detail(@RequestBody BaseSelectDto dto) {
+    public Subscribe detail(@RequestBody BaseSelectDto dto) {
         return subscribeService.detail(dto.getId());
     }
 
@@ -45,8 +49,8 @@ public class SubscribeController {
      * 申购单新增
      */
     @PostMapping("/add")
-    public void add(@RequestBody SubscribeDto subscribeDto) {
-        subscribeService.add(subscribeDto);
+    public void add(@RequestBody Subscribe subscribe) {
+        subscribeService.add(subscribe);
     }
 
     /**

+ 7 - 2
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeDetailController.java

@@ -1,5 +1,7 @@
 package com.fjhx.purchase.controller.subscribe;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
@@ -9,6 +11,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -18,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  * @author 
  * @since 2023-04-03
  */
+@DS(SourceConstant.PURCHASE)
 @RestController
 @RequestMapping("/subscribeDetail")
 public class SubscribeDetailController {
@@ -37,8 +42,8 @@ public class SubscribeDetailController {
      * 申购单明细
      */
     @PostMapping("/detail")
-    public SubscribeDetailVo detail(@RequestBody BaseSelectDto dto) {
-        return subscribeDetailService.detail(dto.getId());
+    public List<SubscribeDetailVo> detail(@RequestBody SubscribeDetailSelectDto dto) {
+        return subscribeDetailService.detail(dto.getIds());
     }
 
     /**

+ 0 - 71
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeFlow.java

@@ -1,71 +0,0 @@
-package com.fjhx.purchase.controller.subscribe;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
-import com.fjhx.purchase.service.subscribe.SubscribeService;
-import com.ruoyi.common.core.domain.BaseSelectDto;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-
-/**
- * <p>
- * 申购单流程 前端控制器
- * </p>
- *
- * @author 
- * @since 2023-04-03
- */
-@RestController
-@RequestMapping("/subscribe/flow")
-public class SubscribeFlow {
-
-    @Autowired
-    private SubscribeService subscribeService;
-
-    /**
-     * 申购单分页
-     */
-    @PostMapping("/page")
-    public Page<SubscribeVo> page(@RequestBody SubscribeSelectDto dto) {
-        return subscribeService.getPage(dto);
-    }
-
-    /**
-     * 申购单明细
-     */
-    @PostMapping("/detail")
-    public SubscribeVo detail(@RequestBody BaseSelectDto dto) {
-        return subscribeService.detail(dto.getId());
-    }
-
-    /**
-     * 申购单新增
-     */
-    @PostMapping("/add")
-    public void add(@RequestBody SubscribeDto subscribeDto) {
-        subscribeService.add(subscribeDto);
-    }
-
-    /**
-     * 申购单编辑
-     */
-    @PostMapping("/edit")
-    public void edit(@RequestBody SubscribeDto subscribeDto) {
-        subscribeService.edit(subscribeDto);
-    }
-
-    /**
-     * 申购单删除
-     */
-    @PostMapping("/delete")
-    public void delete(@RequestBody BaseSelectDto dto) {
-        subscribeService.delete(dto.getId());
-    }
-
-}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 申购单新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDetailDto extends PurchaseDetail {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 申购单列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDetailSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDto extends Purchase {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseSelectDto extends BaseSelectDto {
+
+}

+ 50 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseDetailStatusEnum.java

@@ -0,0 +1,50 @@
+package com.fjhx.purchase.entity.purchase.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 采购状态枚举
+ */
+public enum PurchaseDetailStatusEnum {
+    UNDER_REVIEW(10, "审批中"),
+    REJECT(20, "驳回"),
+    PASS(30,"通过"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    PurchaseDetailStatusEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (PurchaseDetailStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 51 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseStatusEnum.java

@@ -0,0 +1,51 @@
+package com.fjhx.purchase.entity.purchase.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 采购状态枚举
+ */
+public enum PurchaseStatusEnum {
+    DRAFT(0, "草稿"),
+    UNDER_REVIEW(10, "审批中"),
+    REJECT(20, "驳回"),
+    PASS(30,"通过"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    PurchaseStatusEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (PurchaseStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 75 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/Purchase.java

@@ -0,0 +1,75 @@
+package com.fjhx.purchase.entity.purchase.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 采购
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("purchase")
+public class Purchase extends BasePo {
+
+    /**
+     * 申购明细单ID
+     */
+    private Long subscribeDetailId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 申购人名称
+     */
+    private String purchaseName;
+
+    /**
+     * 申购时间
+     */
+    private Date purchaseTime;
+
+    /**
+     * 采购编码
+     */
+    private String code;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplyId;
+
+    /**
+     * 采购说明
+     */
+    private String purchaseContent;
+
+    /**
+     * 采购状态 0草稿 10、审批中;20、驳回  30、通过
+     */
+    private Integer purchaseStatus;
+
+    /**
+     * 审核通过时间
+     */
+    private Date approvedDate;
+
+    /**
+     * 流程id
+     */
+    private String processInstanceId;
+
+    private List<PurchaseDetail> purchaseDetailList;
+}

+ 54 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/PurchaseDetail.java

@@ -0,0 +1,54 @@
+package com.fjhx.purchase.entity.purchase.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 申购单
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("purchase_detail")
+public class PurchaseDetail extends BasePo {
+
+    /**
+     * 关联ID  产品ID/货品ID
+     */
+    private Long bussinessId;
+
+    private Integer subscribeDetailId;
+
+    /**
+     * 申购单ID
+     */
+    private Long purchaseId;
+
+    /**
+     * 申购数量
+     */
+    private Integer count;
+
+    /**
+     * 申购事由
+     */
+    private String content;
+
+    /**
+     * 状态 10、审批中 15:待采购 20、已采购  30、部分采购  40、已采购  99 作废
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.vo;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 申购单列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseDetailVo extends PurchaseDetail {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.purchase.vo;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class PurchaseVo extends Purchase {
+
+}

+ 16 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java

@@ -4,6 +4,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 申购单列表查询入参实体
  *
@@ -14,4 +16,18 @@ import lombok.Setter;
 @Setter
 public class SubscribeDetailSelectDto extends BaseSelectDto {
 
+    /**
+     * 产品类型
+     */
+    private Integer productType;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * id集合
+     */
+    private List<Long> ids;
 }

+ 6 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeSelectDto.java

@@ -1,5 +1,6 @@
 package com.fjhx.purchase.entity.subscribe.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
@@ -14,4 +15,9 @@ import lombok.Setter;
 @Setter
 public class SubscribeSelectDto extends BaseSelectDto {
 
+    /**
+     * 货品类型
+     */
+    @TableField(exist = false)
+    private Integer productType;
 }

+ 52 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeDetailStatusEnum.java

@@ -0,0 +1,52 @@
+package com.fjhx.purchase.entity.subscribe.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 申购状态枚举
+ */
+public enum SubscribeDetailStatusEnum {
+    UNDER_REVIEW(10, "审批中"),
+    PAID_AMOUNT(15,"待采购"),
+    LITT_PAID_AMOUNT(30,"部分采购"),
+    PURCHASED(20,"已采购"),
+    CENCELLATION(99,"已作废")
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    SubscribeDetailStatusEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (SubscribeDetailStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 50 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/enums/SubscribeStatusEnum.java

@@ -0,0 +1,50 @@
+package com.fjhx.purchase.entity.subscribe.enums;
+
+import org.apache.commons.collections4.MapUtils;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 申购状态枚举
+ */
+public enum SubscribeStatusEnum {
+    DRAFT(0, "草稿"),
+    UNDER_REVIEW(10, "审批中"),
+    REJECT(20, "驳回"),
+    PASS(30,"通过"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    SubscribeStatusEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (SubscribeStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 4 - 16
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java

@@ -1,5 +1,6 @@
 package com.fjhx.purchase.entity.subscribe.po;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BasePo;
 import java.util.Date;
@@ -63,27 +64,14 @@ public class Subscribe extends BasePo {
     private String processInstanceId;
 
     /**
-     * 下个节点名称
-     */
-    private String processInstanceName;
-
-    /**
-     * 下个节点处理人id
-     */
-    private String processInstanceUserId;
-
-    /**
-     * 下个节点处理人名称
-     */
-    private String processInstanceUserName;
-
-    /**
      * 是否删除
      */
-    private Integer isDelete;
+    private Integer delFlag;
 
     /**
      * 申购明细列表
      */
+    @TableField(exist = false)
     private List<SubscribeDetail> subscribeDetailList;
+
 }

+ 32 - 2
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java

@@ -1,5 +1,6 @@
 package com.fjhx.purchase.entity.subscribe.po;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.util.Date;
@@ -22,7 +23,7 @@ public class SubscribeDetail extends BasePo {
     /**
      * 关联ID  产品ID/货品ID
      */
-    private String bussinessId;
+    private Long bussinessId;
 
     /**
      * 申购单ID
@@ -52,6 +53,35 @@ public class SubscribeDetail extends BasePo {
     /**
      * 是否删除
      */
-    private Integer isDelete;
+    private Integer delFlag;
 
+    /**
+     * 货品类型
+     */
+    @TableField(exist = false)
+    private Integer productType;
+
+    /**
+     * 所属分类
+     */
+    @TableField(exist = false)
+    private String productCategory;
+
+    /**
+     * 货品编码
+     */
+    @TableField(exist = false)
+    private String productCode;
+
+    /**
+     * 货品名称
+     */
+    @TableField(exist = false)
+    private String productName;
+
+    /**
+     * 单位
+     */
+    @TableField(exist = false)
+    private String productUnit;
 }

+ 31 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java

@@ -4,6 +4,8 @@ import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 申购单列表查询返回值实体
  *
@@ -14,4 +16,33 @@ import lombok.Setter;
 @Setter
 public class SubscribeDetailVo extends SubscribeDetail {
 
+    /**
+     * 申购单号
+     */
+    private String subscribeCode;
+
+    /**
+     * 申购事由
+     */
+    private String subscribeContent;
+
+    /**
+     * 申购时间
+     */
+    private String subcribeTime;
+
+    /**
+     * 申购人
+     */
+    private String subcribeName;
+
+    /**
+     * 申购单ID
+     */
+    private Long subcribeId;
+
+    /**
+     * 采购数量
+     */
+    private String purchaseCount;
 }

+ 1 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeVo.java

@@ -14,4 +14,5 @@ import lombok.Setter;
 @Setter
 public class SubscribeVo extends Subscribe {
 
+
 }

+ 90 - 0
hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java

@@ -0,0 +1,90 @@
+package com.fjhx.purchase.flow;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum;
+import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.fjhx.purchase.service.subscribe.SubscribeService;
+import com.fjhx.purchase.util.code.CodeEnum;
+import com.obs.services.internal.ServiceException;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 采购流程
+ * @Author:caozj
+ * @DATE:2023/4/3 17:38
+ */
+@Component
+public class PurchaseFlow extends FlowDelegate {
+
+    @Override
+    public String getFlowKey() {
+        return "purchase_flow";
+    }
+
+
+    /**
+     * 发起流程
+     * @param flowId 流程ID
+     * @param submitData 申购数据
+     * @return
+     */
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+        PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
+        PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
+        Purchase purchase = submitData.toJavaObject(Purchase.class);
+        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
+        purchaseService.save(purchase);
+        if(CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())){
+            for(PurchaseDetail s : purchase.getPurchaseDetailList()){
+                s.setPurchaseId(purchase.getId());
+            }
+            purchaseDetailService.saveBatch(purchase.getPurchaseDetailList());
+        }
+        return purchase.getId();
+    }
+
+    /**
+     * 结束流程
+     * @param flowId 流程ID
+     * @param businessId 业务ID
+     * @param submitData 数据
+     */
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
+        PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
+        //通过业务ID查询申购数据
+        Purchase purchase = purchaseService.getById(businessId);
+        if(ObjectUtils.isEmpty(purchase)){
+            throw new ServiceException("采购单不存在");
+        }
+        //修改申购状态为审批通过
+        purchase.setPurchaseStatus(PurchaseStatusEnum.PASS.getKey());
+        purchase.setApprovedDate(new Date());
+        purchaseService.updateById(purchase);
+        //修改申购明细为待采购
+        PurchaseDetail detail = new PurchaseDetail();
+        detail.setStatus(PurchaseDetailStatusEnum.PASS.getKey());
+        purchaseDetailService.update(detail,Wrappers.<PurchaseDetail>query()
+                .lambda().eq(PurchaseDetail::getPurchaseId,purchase.getId()));
+    }
+}

+ 36 - 4
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -3,16 +3,20 @@ package com.fjhx.purchase.flow;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.purchase.util.code.CodeEnum;
-import com.ruoyi.common.utils.spring.SpringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.obs.services.internal.ServiceException;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -28,12 +32,19 @@ public class SubscribeFlow extends FlowDelegate {
     }
 
 
+    /**
+     * 发起流程
+     * @param flowId 流程ID
+     * @param submitData 申购数据
+     * @return
+     */
     @Override
     public Long start(Long flowId, JSONObject submitData) {
         SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
         SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
         Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
         subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+        subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
         subscribeService.save(subscribe);
         List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
         if(CollectionUtils.isNotEmpty(SubscribeDetails)){
@@ -45,8 +56,29 @@ public class SubscribeFlow extends FlowDelegate {
         return subscribe.getId();
     }
 
+    /**
+     * 结束流程
+     * @param flowId 流程ID
+     * @param businessId 业务ID
+     * @param submitData 数据
+     */
     @Override
-    public void end(Long aLong, Long aLong1, JSONObject jsonObject) {
-
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
+        SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
+        //通过业务ID查询申购数据
+        Subscribe subscribe = subscribeService.getById(businessId);
+        if(ObjectUtils.isEmpty(subscribe)){
+            throw new ServiceException("申购单不存在");
+        }
+        //修改申购状态为审批通过
+        subscribe.setSubcribeStatus(SubscribeStatusEnum.PASS.getKey());
+        subscribe.setApprovedDate(new Date());
+        subscribeService.updateById(subscribe);
+        //修改申购明细为待采购
+        SubscribeDetail detail = new SubscribeDetail();
+        detail.setStatus(SubscribeDetailStatusEnum.PAID_AMOUNT.getKey());
+        subscribeDetailService.update(detail,Wrappers.<SubscribeDetail>query()
+                .lambda().eq(SubscribeDetail::getSubscribeId,subscribe.getId()));
     }
 }

+ 26 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.mapper.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 采购单明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseDetailMapper extends BaseMapper<PurchaseDetail> {
+
+    /**
+     * 申购单分页
+     */
+    Page<PurchaseDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseDetail> wrapper);
+
+}

+ 26 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.mapper.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 采购 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseMapper extends BaseMapper<Purchase> {
+
+    /**
+     * 采购分页
+     */
+    Page<PurchaseVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Purchase> wrapper);
+
+}

+ 9 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/subscribe/SubscribeDetailMapper.java

@@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
+
+import java.util.List;
 
 
 /**
@@ -23,4 +26,10 @@ public interface SubscribeDetailMapper extends BaseMapper<SubscribeDetail> {
      */
     Page<SubscribeDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SubscribeDetail> wrapper);
 
+    /**
+     * 根据IDS查询明细
+     * @param ids
+     * @return
+     */
+    List<SubscribeDetailVo> getDetail(@Param("ids")List<Long> ids);
 }

+ 46 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java

@@ -0,0 +1,46 @@
+package com.fjhx.purchase.service.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
+
+
+/**
+ * <p>
+ * 申购单 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseDetailService extends BaseService<PurchaseDetail> {
+
+    /**
+     * 申购单分页
+     */
+    Page<PurchaseDetailVo> getPage(PurchaseDetailSelectDto dto);
+
+    /**
+     * 申购单明细
+     */
+    PurchaseDetailVo detail(Long id);
+
+    /**
+     * 申购单新增
+     */
+    void add(PurchaseDetailDto purchaseDetailDto);
+
+    /**
+     * 申购单编辑
+     */
+    void edit(PurchaseDetailDto purchaseDetailDto);
+
+    /**
+     * 申购单删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java

@@ -0,0 +1,46 @@
+package com.fjhx.purchase.service.purchase;
+
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
+
+
+/**
+ * <p>
+ * 采购 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface PurchaseService extends BaseService<Purchase> {
+
+    /**
+     * 采购分页
+     */
+    Page<PurchaseVo> getPage(PurchaseSelectDto dto);
+
+    /**
+     * 采购明细
+     */
+    PurchaseVo detail(Long id);
+
+    /**
+     * 采购新增
+     */
+    void add(Purchase purchase);
+
+    /**
+     * 采购编辑
+     */
+    void edit(PurchaseDto purchaseDto);
+
+    /**
+     * 采购删除
+     */
+    void delete(Long id);
+
+}

+ 57 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.purchase.service.purchase.impl;
+
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.mapper.purchase.PurchaseDetailMapper;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 采购单明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Service
+public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailMapper, PurchaseDetail> implements PurchaseDetailService {
+
+    @Override
+    public Page<PurchaseDetailVo> getPage(PurchaseDetailSelectDto dto) {
+        IWrapper<PurchaseDetail> wrapper = getWrapper();
+        wrapper.orderByDesc("pd", PurchaseDetail::getId);
+        Page<PurchaseDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public PurchaseDetailVo detail(Long id) {
+        PurchaseDetail PurchaseDetail = this.getById(id);
+        PurchaseDetailVo result = BeanUtil.toBean(PurchaseDetail, PurchaseDetailVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(PurchaseDetailDto purchaseDetailDto) {
+        this.save(purchaseDetailDto);
+    }
+
+    @Override
+    public void edit(PurchaseDetailDto purchaseDetailDto) {
+        this.updateById(purchaseDetailDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 82 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -0,0 +1,82 @@
+package com.fjhx.purchase.service.purchase.impl;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.mapper.purchase.PurchaseMapper;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.purchase.util.code.CodeEnum;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 采购 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Service
+public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> implements PurchaseService {
+
+    @Override
+    public Page<PurchaseVo> getPage(PurchaseSelectDto dto) {
+        IWrapper<Purchase> wrapper = getWrapper();
+        wrapper.orderByDesc("p", Purchase::getId);
+        Page<PurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    @Override
+    public PurchaseVo detail(Long id) {
+        Purchase Purchase = this.getById(id);
+        PurchaseVo result = BeanUtil.toBean(Purchase, PurchaseVo.class);
+        return result;
+    }
+
+    /**
+     * 采购新增
+     * @param purchase
+     */
+    @Override
+    public void add(Purchase purchase) {
+        PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
+        PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
+        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
+        purchaseService.save(purchase);
+        if(CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())){
+            for(PurchaseDetail s : purchase.getPurchaseDetailList()){
+                s.setPurchaseId(purchase.getId());
+            }
+            purchaseDetailService.saveBatch(purchase.getPurchaseDetailList());
+        }
+    }
+
+    @Override
+    public void edit(PurchaseDto purchaseDto) {
+        this.updateById(purchaseDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 3 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeDetailService.java

@@ -7,6 +7,8 @@ import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -26,7 +28,7 @@ public interface SubscribeDetailService extends BaseService<SubscribeDetail> {
     /**
      * 申购单明细
      */
-    SubscribeDetailVo detail(Long id);
+    List<SubscribeDetailVo> detail(List<Long> ids);
 
     /**
      * 申购单新增

+ 0 - 26
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeFlowService.java

@@ -1,26 +0,0 @@
-package com.fjhx.purchase.service.subscribe;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
-import com.fjhx.purchase.entity.subscribe.po.Subscribe;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
-import com.ruoyi.common.core.service.BaseService;
-
-
-/**
- * <p>
- * 申购单 服务类
- * </p>
- *
- * @author 
- * @since 2023-04-03
- */
-public interface SubscribeFlowService  {
-
-    /**
-     * 发起流程
-     * @param subscribe
-     */
-    void start(Subscribe subscribe);
-}

+ 2 - 2
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeService.java

@@ -26,12 +26,12 @@ public interface SubscribeService extends BaseService<Subscribe> {
     /**
      * 申购单明细
      */
-    SubscribeVo detail(Long id);
+    Subscribe detail(Long id);
 
     /**
      * 申购单新增
      */
-    void add(SubscribeDto subscribeDto);
+    void add(Subscribe subscribe);
 
     /**
      * 申购单编辑

+ 83 - 5
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -1,9 +1,18 @@
 package com.fjhx.purchase.service.subscribe.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.obs.services.internal.ServiceException;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
@@ -12,6 +21,9 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
 import cn.hutool.core.bean.BeanUtil;
 
+import java.util.*;
+import java.util.stream.Collectors;
+
 
 /**
  * <p>
@@ -24,19 +36,85 @@ import cn.hutool.core.bean.BeanUtil;
 @Service
 public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMapper, SubscribeDetail> implements SubscribeDetailService {
 
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    /**
+     * 分页
+     * @param dto
+     * @return
+     */
     @Override
     public Page<SubscribeDetailVo> getPage(SubscribeDetailSelectDto dto) {
+        Map<Long,List<ProductInfoVo>> productMap;
+        List<Long> productIds = new ArrayList<>();
         IWrapper<SubscribeDetail> wrapper = getWrapper();
-        wrapper.orderByDesc("sd", SubscribeDetail::getId);
+        //搜索条件-----当产品数据量多得情况下会影响查询得速度。超过1000条mybatisplus在in查询得时候会报错
+        if(ObjectUtil.isNotEmpty(dto.getProductType())){//如果类型存在带入类型查询
+            List<ProductInfoVo> productList = productInfoService.getListByProductType(dto.getProductType());
+            if(CollectionUtils.isEmpty(productList)){
+                return new Page<>();
+            }else{
+                productMap = productList.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
+                productIds = productList.stream().map(ProductInfoVo::getId).collect(Collectors.toList());
+            }
+        }else{//不存在查所有
+            List<ProductInfoVo> productList = productInfoService.getListByProductType(null);
+            productMap = productList.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
+        }
+        if(ObjectUtil.isNotEmpty(dto.getStatus())){
+            wrapper.in("t1",SubscribeDetail::getStatus, Arrays.asList(dto.getStatus().split(",")));
+        }
+        if(CollectionUtils.isNotEmpty(productIds)){
+            wrapper.in("t1",SubscribeDetail::getBussinessId,productIds);
+        }
+        wrapper.orderByDesc("t1", SubscribeDetail::getCreateTime);
         Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<SubscribeDetailVo> list = page.getRecords();
+        if(CollectionUtils.isNotEmpty(list)&&MapUtils.isNotEmpty(productMap)){
+            for(SubscribeDetailVo s:list){
+                List<ProductInfoVo> productInfos = productMap.getOrDefault(s.getBussinessId(), null);
+                if(ObjectUtil.isNotEmpty(productInfos)){
+                    ProductInfoVo vo = productInfos.get(0);
+                    s.setProductCode(vo.getCode());
+                    s.setProductName(vo.getName());
+                    s.setProductType(vo.getType());
+                    s.setProductCategory(vo.getClassifyName());
+                    s.setProductUnit(vo.getUnit());
+                }
+            }
+        }
         return page;
     }
 
+    /**
+     * 根据IDS获取明细
+     * @param ids
+     * @return
+     */
     @Override
-    public SubscribeDetailVo detail(Long id) {
-        SubscribeDetail SubscribeDetail = this.getById(id);
-        SubscribeDetailVo result = BeanUtil.toBean(SubscribeDetail, SubscribeDetailVo.class);
-        return result;
+    public List<SubscribeDetailVo> detail(List<Long> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            throw new ServiceException("参数异常");
+        }
+        List<SubscribeDetailVo> list = baseMapper.getDetail(ids);
+        if(CollectionUtils.isNotEmpty(list)){
+            //根据申购businessId取出所有产品
+            List<Long> productIds = list.stream().map(SubscribeDetail::getBussinessId).collect(Collectors.toList());
+            List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
+            Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
+            for(SubscribeDetail s:list){
+                if(MapUtils.isNotEmpty(productMap)){
+                    ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
+                    s.setProductCategory(p.getClassifyName());
+                    s.setProductCode(p.getCode());
+                    s.setProductUnit(p.getUnit());
+                    s.setProductType(p.getType());
+                    s.setProductName(p.getName());
+                }
+            }
+        }
+        return list;
     }
 
     @Override

+ 0 - 38
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeFlowServiceImpl.java

@@ -1,38 +0,0 @@
-package com.fjhx.purchase.service.subscribe.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
-import com.fjhx.purchase.entity.subscribe.po.Subscribe;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
-import com.fjhx.purchase.mapper.subscribe.SubscribeMapper;
-import com.fjhx.purchase.service.subscribe.SubscribeFlowService;
-import com.fjhx.purchase.service.subscribe.SubscribeService;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import org.springframework.stereotype.Service;
-
-
-/**
- * <p>
- * 申购单 服务实现类
- * </p>
- *
- * @author 
- * @since 2023-04-03
- */
-@Service
-public class SubscribeFlowServiceImpl implements SubscribeFlowService {
-
-    /**
-     * 发起审批
-     * @param subscribe
-     */
-    @Override
-    public void start(Subscribe subscribe) {
-
-    }
-}

+ 69 - 7
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java

@@ -1,16 +1,31 @@
 package com.fjhx.purchase.service.subscribe.impl;
 
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.subscribe.SubscribeMapper;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.purchase.util.code.CodeEnum;
+import com.obs.services.internal.ServiceException;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
-import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -24,6 +39,12 @@ import cn.hutool.core.bean.BeanUtil;
 @Service
 public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe> implements SubscribeService {
 
+    @Autowired
+    private SubscribeDetailService subscribeDetailService;
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
     @Override
     public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
         IWrapper<Subscribe> wrapper = getWrapper();
@@ -32,16 +53,57 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
         return page;
     }
 
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
     @Override
-    public SubscribeVo detail(Long id) {
-        Subscribe Subscribe = this.getById(id);
-        SubscribeVo result = BeanUtil.toBean(Subscribe, SubscribeVo.class);
-        return result;
+    public Subscribe detail(Long id) {
+        if(ObjectUtils.isEmpty(id)){
+            throw new ServiceException("参数异常");
+        }
+        Subscribe subscribe = this.getById(id);
+        if(ObjectUtils.isEmpty(subscribe)){
+            throw new ServiceException("数据不存在");
+        }
+        //处理申购产品
+        List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(
+                Wrappers.<SubscribeDetail>query().lambda()
+                        .eq(SubscribeDetail::getSubscribeId,id));
+        if(CollectionUtils.isNotEmpty(subscribeDetailList)){
+            //根据申购businessId取出所有产品
+            List<Long> productIds = subscribeDetailList.stream().map(SubscribeDetail::getBussinessId).collect(Collectors.toList());
+            List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
+            Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
+            for(SubscribeDetail s:subscribeDetailList){
+                if(MapUtils.isNotEmpty(productMap)){
+                    ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
+                    s.setProductCategory(p.getClassifyName());
+                    s.setProductCode(p.getCode());
+                    s.setProductUnit(p.getUnit());
+                    s.setProductType(p.getType());
+                    s.setProductName(p.getName());
+                }
+            }
+        }
+        subscribe.setSubscribeDetailList(subscribeDetailList);
+        return subscribe;
     }
 
     @Override
-    public void add(SubscribeDto subscribeDto) {
-        this.save(subscribeDto);
+    public void add(Subscribe subscribe) {
+        SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
+        SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
+        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+        subscribeService.save(subscribe);
+        List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
+        if(CollectionUtils.isNotEmpty(SubscribeDetails)){
+            for(SubscribeDetail s : SubscribeDetails){
+                s.setSubscribeId(subscribe.getId());
+            }
+            subscribeDetailService.saveBatch(subscribe.getSubscribeDetailList());
+        }
     }
 
     @Override

+ 1 - 0
hx-purchase/src/main/java/com/fjhx/purchase/util/code/CodeEnum.java

@@ -18,6 +18,7 @@ public enum CodeEnum {
 
     //申购
     SUBSCRIBE("PR", "yyMM-", "code", 3, SubscribeService.class),
+    PURCHASE("PO", "yyMM-", "code", 3, SubscribeService.class),
     ;
 
     CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {

+ 22 - 0
hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.purchase.mapper.purchase.PurchaseDetailMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo">
+        select
+            pd.id,
+            pd.bussiness_id,
+            pd.subscribe_detail_id,
+            pd.purchase_id,
+            pd.count,
+            pd.content,
+            pd.status,
+            pd.remark,
+            pd.create_user,
+            pd.create_time,
+            pd.update_user,
+            pd.update_time
+        from purchase_detail pd
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 25 - 0
hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.purchase.mapper.purchase.PurchaseMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseVo">
+        select
+            p.id,
+            p.subscribe_detail_id,
+            p.dept_name,
+            p.purchase_name,
+            p.purchase_time,
+            p.code,
+            p.supply_id,
+            p.purchase_content,
+            p.purchase_status,
+            p.approved_date,
+            p.process_instance_id,
+            p.create_user,
+            p.create_time,
+            p.update_user,
+            p.update_time
+        from purchase p
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 27 - 15
hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml

@@ -2,22 +2,34 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper">
     <select id="getPage" resultType="com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo">
-        select
-            sd.id,
-            sd.code,
-            sd.bussiness_id,
-            sd.subscribe_id,
-            sd.count,
-            sd.content,
-            sd.status,
-            sd.remark,
-            sd.is_delete,
-            sd.create_user,
-            sd.create_time,
-            sd.update_user,
-            sd.update_time
-        from subscribe_detail sd
+        SELECT
+            t1.*,
+            t2.`code` AS subscribeCode,
+            t2.subcribe_content AS subscribeContent,
+            t2.subcribe_time AS subcribeTime,
+            t2.subcribe_name AS subcribeName,
+            t2.id AS subcribeId
+        FROM
+            subscribe_detail t1
+        LEFT JOIN subscribe t2 ON t1.subscribe_id = t2.id
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getDetail" resultType="com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo">
+        SELECT
+            t1.*,
+            IFNULL( SUM( t2.count ), 0 ) AS purchaseCount
+        FROM
+            subscribe_detail t1
+        LEFT JOIN purchase_detail t2 ON t1.id = t2.subscribe_detail_id
+        <where>
+            <if test="ids neq null and ids.size() > 0">
+                <foreach collection="ids" item="id" open="t1.id IN (" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+            t1.id
+    </select>
 </mapper>

+ 1 - 4
hx-purchase/src/main/resources/mapper/subscribe/SubscribeMapper.xml

@@ -12,10 +12,7 @@
             s.subcribe_status,
             s.approved_date,
             s.process_instance_id,
-            s.process_instance_name,
-            s.process_instance_user_id,
-            s.process_instance_user_name,
-            s.is_delete,
+            s.del_flag,
             s.create_user,
             s.create_time,
             s.update_user,

+ 13 - 0
pom.xml

@@ -24,6 +24,7 @@
         <module>hx-wms</module>
         <module>hx-common</module>
         <module>hx-oa</module>
+        <module>hx-purchase</module>
     </modules>
 
     <properties>
@@ -113,6 +114,18 @@
                 <artifactId>hx-customer</artifactId>
                 <version>${hx.version}</version>
             </dependency>
+
+            <dependency>
+                <groupId>com.fjhx</groupId>
+                <artifactId>hx-purchase</artifactId>
+                <version>${hx.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.fjhx</groupId>
+                <artifactId>hx-account</artifactId>
+                <version>${hx.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません