Ver Fonte

样品单

caozj há 2 anos atrás
pai
commit
3fd0c1ee99
48 ficheiros alterados com 1904 adições e 5 exclusões
  1. 5 0
      hx-admin/pom.xml
  2. 5 0
      hx-common/src/main/java/com/fjhx/common/constant/SourceConstant.java
  3. 26 0
      hx-ehsd/pom.xml
  4. 70 0
      hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleController.java
  5. 70 0
      hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleProductController.java
  6. 70 0
      hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleProjectController.java
  7. 70 0
      hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleShipmentController.java
  8. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleDto.java
  9. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProductDto.java
  10. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProductSelectDto.java
  11. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProjectDto.java
  12. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProjectSelectDto.java
  13. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleSelectDto.java
  14. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleShipmentDto.java
  15. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleShipmentSelectDto.java
  16. 244 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/Sample.java
  17. 83 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/SampleProduct.java
  18. 44 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/SampleProject.java
  19. 48 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/SampleShipment.java
  20. 52 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleProductVo.java
  21. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleProjectVo.java
  22. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleShipmentVo.java
  23. 17 0
      hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleVo.java
  24. 51 0
      hx-ehsd/src/main/java/com/fjhx/sale/enums/FlowStatusEnum.java
  25. 108 0
      hx-ehsd/src/main/java/com/fjhx/sale/flow/SampleFlow.java
  26. 26 0
      hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleMapper.java
  27. 26 0
      hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleProductMapper.java
  28. 26 0
      hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleProjectMapper.java
  29. 26 0
      hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleShipmentMapper.java
  30. 46 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleProductService.java
  31. 46 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleProjectService.java
  32. 46 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleService.java
  33. 46 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleShipmentService.java
  34. 92 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleProductServiceImpl.java
  35. 57 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleProjectServiceImpl.java
  36. 57 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleServiceImpl.java
  37. 57 0
      hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleShipmentServiceImpl.java
  38. 98 0
      hx-ehsd/src/main/java/com/fjhx/sale/util/code/CodeEnum.java
  39. 54 0
      hx-ehsd/src/main/resources/mapper/sample/SampleMapper.xml
  40. 20 0
      hx-ehsd/src/main/resources/mapper/sample/SampleProductMapper.xml
  41. 19 0
      hx-ehsd/src/main/resources/mapper/sample/SampleProjectMapper.xml
  42. 20 0
      hx-ehsd/src/main/resources/mapper/sample/SampleShipmentMapper.xml
  43. 1 2
      hx-sale/src/main/java/com/fjhx/sale/entity/claim/po/Claim.java
  44. 4 0
      hx-sale/src/main/java/com/fjhx/sale/entity/quotation/po/QuotationProduct.java
  45. 4 0
      hx-sale/src/main/java/com/fjhx/sale/entity/sale/po/SaleQuotation.java
  46. 0 3
      hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java
  47. 0 0
      hx-sale/src/main/resources/mapper/claim/ClaimContractMapper.xml
  48. 0 0
      hx-sale/src/main/resources/mapper/claim/ClaimMapper.xml

+ 5 - 0
hx-admin/pom.xml

@@ -84,6 +84,11 @@
             <artifactId>hx-dingding</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-ehsd</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

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

@@ -32,4 +32,9 @@ public interface SourceConstant {
     String VICTORIATOURIST = "victoriatourist";
     String KD100 = "kd100";
 
+    /**
+     * ehsd定制数据库
+     */
+    String EHSD = "ehsd";
+
 }

+ 26 - 0
hx-ehsd/pom.xml

@@ -12,5 +12,31 @@
 
     <artifactId>hx-ehsd</artifactId>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-base</artifactId>
+        </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-common</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-customer</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-account</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-purchase</artifactId>
+        </dependency>
+
+    </dependencies>
 </project>

+ 70 - 0
hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleController.java

@@ -0,0 +1,70 @@
+package com.fjhx.sale.controller.sample;
+
+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.sale.entity.sample.vo.SampleVo;
+import com.fjhx.sale.entity.sample.dto.SampleSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.sale.service.sample.SampleService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 样品单表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@RestController
+@RequestMapping("/sample")
+public class SampleController {
+
+    @Autowired
+    private SampleService sampleService;
+
+    /**
+     * 样品单表分页
+     */
+    @PostMapping("/page")
+    public Page<SampleVo> page(@RequestBody SampleSelectDto dto) {
+        return sampleService.getPage(dto);
+    }
+
+    /**
+     * 样品单表明细
+     */
+    @PostMapping("/detail")
+    public SampleVo detail(@RequestBody BaseSelectDto dto) {
+        return sampleService.detail(dto.getId());
+    }
+
+    /**
+     * 样品单表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody SampleDto sampleDto) {
+        sampleService.add(sampleDto);
+    }
+
+    /**
+     * 样品单表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody SampleDto sampleDto) {
+        sampleService.edit(sampleDto);
+    }
+
+    /**
+     * 样品单表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        sampleService.delete(dto.getId());
+    }
+
+}

+ 70 - 0
hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleProductController.java

@@ -0,0 +1,70 @@
+package com.fjhx.sale.controller.sample;
+
+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.sale.entity.sample.vo.SampleProductVo;
+import com.fjhx.sale.entity.sample.dto.SampleProductSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleProductDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.sale.service.sample.SampleProductService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 样品单-产品 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@RestController
+@RequestMapping("/sampleProduct")
+public class SampleProductController {
+
+    @Autowired
+    private SampleProductService sampleProductService;
+
+    /**
+     * 样品单-产品分页
+     */
+    @PostMapping("/page")
+    public Page<SampleProductVo> page(@RequestBody SampleProductSelectDto dto) {
+        return sampleProductService.getPage(dto);
+    }
+
+    /**
+     * 样品单-产品明细
+     */
+    @PostMapping("/detail")
+    public SampleProductVo detail(@RequestBody BaseSelectDto dto) {
+        return sampleProductService.detail(dto.getId());
+    }
+
+    /**
+     * 样品单-产品新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody SampleProductDto sampleProductDto) {
+        sampleProductService.add(sampleProductDto);
+    }
+
+    /**
+     * 样品单-产品编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody SampleProductDto sampleProductDto) {
+        sampleProductService.edit(sampleProductDto);
+    }
+
+    /**
+     * 样品单-产品删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        sampleProductService.delete(dto.getId());
+    }
+
+}

+ 70 - 0
hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleProjectController.java

@@ -0,0 +1,70 @@
+package com.fjhx.sale.controller.sample;
+
+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.sale.entity.sample.vo.SampleProjectVo;
+import com.fjhx.sale.entity.sample.dto.SampleProjectSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleProjectDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.sale.service.sample.SampleProjectService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 样品单-收费项目 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@RestController
+@RequestMapping("/sampleProject")
+public class SampleProjectController {
+
+    @Autowired
+    private SampleProjectService sampleProjectService;
+
+    /**
+     * 样品单-收费项目分页
+     */
+    @PostMapping("/page")
+    public Page<SampleProjectVo> page(@RequestBody SampleProjectSelectDto dto) {
+        return sampleProjectService.getPage(dto);
+    }
+
+    /**
+     * 样品单-收费项目明细
+     */
+    @PostMapping("/detail")
+    public SampleProjectVo detail(@RequestBody BaseSelectDto dto) {
+        return sampleProjectService.detail(dto.getId());
+    }
+
+    /**
+     * 样品单-收费项目新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody SampleProjectDto sampleProjectDto) {
+        sampleProjectService.add(sampleProjectDto);
+    }
+
+    /**
+     * 样品单-收费项目编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody SampleProjectDto sampleProjectDto) {
+        sampleProjectService.edit(sampleProjectDto);
+    }
+
+    /**
+     * 样品单-收费项目删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        sampleProjectService.delete(dto.getId());
+    }
+
+}

+ 70 - 0
hx-ehsd/src/main/java/com/fjhx/sale/controller/sample/SampleShipmentController.java

@@ -0,0 +1,70 @@
+package com.fjhx.sale.controller.sample;
+
+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.sale.entity.sample.vo.SampleShipmentVo;
+import com.fjhx.sale.entity.sample.dto.SampleShipmentSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleShipmentDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.sale.service.sample.SampleShipmentService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 样品单-出货计划 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@RestController
+@RequestMapping("/sampleShipment")
+public class SampleShipmentController {
+
+    @Autowired
+    private SampleShipmentService sampleShipmentService;
+
+    /**
+     * 样品单-出货计划分页
+     */
+    @PostMapping("/page")
+    public Page<SampleShipmentVo> page(@RequestBody SampleShipmentSelectDto dto) {
+        return sampleShipmentService.getPage(dto);
+    }
+
+    /**
+     * 样品单-出货计划明细
+     */
+    @PostMapping("/detail")
+    public SampleShipmentVo detail(@RequestBody BaseSelectDto dto) {
+        return sampleShipmentService.detail(dto.getId());
+    }
+
+    /**
+     * 样品单-出货计划新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody SampleShipmentDto sampleShipmentDto) {
+        sampleShipmentService.add(sampleShipmentDto);
+    }
+
+    /**
+     * 样品单-出货计划编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody SampleShipmentDto sampleShipmentDto) {
+        sampleShipmentService.edit(sampleShipmentDto);
+    }
+
+    /**
+     * 样品单-出货计划删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        sampleShipmentService.delete(dto.getId());
+    }
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.fjhx.sale.entity.sample.po.Sample;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单表新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleDto extends Sample {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProductDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.fjhx.sale.entity.sample.po.SampleProduct;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-产品新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleProductDto extends SampleProduct {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProductSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-产品列表查询入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleProductSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProjectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.fjhx.sale.entity.sample.po.SampleProject;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-收费项目新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleProjectDto extends SampleProject {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleProjectSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-收费项目列表查询入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleProjectSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单表列表查询入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleShipmentDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.fjhx.sale.entity.sample.po.SampleShipment;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-出货计划新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleShipmentDto extends SampleShipment {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/dto/SampleShipmentSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-出货计划列表查询入参实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleShipmentSelectDto extends BaseSelectDto {
+
+}

+ 244 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/Sample.java

@@ -0,0 +1,244 @@
+package com.fjhx.sale.entity.sample.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.Version;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 样品单表
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+@TableName("sample")
+public class Sample extends BasePo {
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 合同类型(1外销 2内销)
+     */
+    private Integer contractType;
+
+    /**
+     * 合同模版ID
+     */
+    private Long contractTemplateId;
+
+    /**
+     * 卖方公司ID
+     */
+    private Long sellCorporationId;
+
+    /**
+     * 卖方联系人名称
+     */
+    private String sellContactName;
+
+    /**
+     * 卖方联系人电话
+     */
+    private String sellContactNumber;
+
+    /**
+     * 卖方国家表id
+     */
+    private String sellCountryId;
+
+    /**
+     * 卖方省份id
+     */
+    private String sellProvinceId;
+
+    /**
+     * 卖方城市id
+     */
+    private String sellCityId;
+
+    /**
+     * 卖方详细地址
+     */
+    private String sellAddress;
+
+    /**
+     * 买方公司ID
+     */
+    private Long buyCorporationId;
+
+    /**
+     * 买方联系人名称
+     */
+    private String buyContactName;
+
+    /**
+     * 买方联系人电话
+     */
+    private String buyContactNumber;
+
+    /**
+     * 买方国家表id
+     */
+    private String buyCountryId;
+
+    /**
+     * 买方省份id
+     */
+    private String buyProvinceId;
+
+    /**
+     * 买方城市id
+     */
+    private String buyCityId;
+
+    /**
+     * 买方详细地址
+     */
+    private String buyAddress;
+
+    /**
+     * 买方邮编
+     */
+    private String buyPostalCode;
+
+    /**
+     * 合同审批状态 0草稿 10、审批中;20、驳回  30、审批通过   99终止
+     */
+    private Integer status;
+
+    /**
+     * 合同状态
+     */
+    private Integer contractStatus;
+
+    /**
+     * 到款状态 0未到款  10部分到款  20已到款
+     */
+    private Integer refundStatus;
+
+    /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+    /**
+     * 合同金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 付款方式(字典funds_payment_method
+     */
+    private String paymentMethod;
+
+    /**
+     * 贸易方式(字典trade_methods)
+     */
+    private String tradeMethods;
+
+    /**
+     * 预付比例
+     */
+    private String advanceRatio;
+
+    /**
+     * 运输方式(字典  shipping_method)
+     */
+    private String transportMethod;
+
+    /**
+     * 运输备注
+     */
+    private String transportRemark;
+
+    /**
+     * 收款账号ID
+     */
+    private Long shroffAccountId;
+
+    /**
+     * 质保期
+     */
+    private Integer warranty;
+
+    /**
+     * 审核通过时间
+     */
+    private Date approvedDate;
+
+    /**
+     * 流程KEY
+     */
+    private String processInstanceId;
+
+    /**
+     * 付款条件
+     */
+    private String remark;
+
+    /**
+     * 版本号
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Version
+    private Long version;
+
+    /**
+     * 交期
+     */
+    private String deliveryTime;
+
+    /**
+     * 是否结算 1已结算 0未结算
+     */
+    private Integer settlementStatus;
+
+    /**
+     * 汇率json
+     */
+    private String currencyRateJson;
+
+    /**
+     * 创建人名称
+     */
+    private String userName;
+
+    /**
+     * 尔弘时代JSON扩展字段
+     */
+    private String ehsdJson;
+
+
+    /**
+     * 样品单产品列表
+     */
+    @TableField(exist = false)
+    private List<SampleProduct> sampleProductList;
+
+    /**
+     * 样品单出货列表
+     */
+    @TableField(exist = false)
+    private List<SampleShipment> sampleShipmentList;
+
+    /**
+     * 样品单收费项目
+     */
+    @TableField(exist = false)
+    private List<SampleProject> sampleProjectList;
+
+}

+ 83 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/SampleProduct.java

@@ -0,0 +1,83 @@
+package com.fjhx.sale.entity.sample.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fjhx.file.entity.ObsFile;
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 样品单-产品
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+@TableName("sample_product")
+public class SampleProduct extends BasePo {
+
+    /**
+     * 样品单ID
+     */
+    private Long sampleId;
+
+    /**
+     * 商品ID
+     */
+    private Long productId;
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+
+    /**
+     * 商品型号
+     */
+    private String productModel;
+
+    /**
+     * 商品数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 消耗剩余数量
+     */
+    private BigDecimal expendQuantity;
+
+    /**
+     * 商品单价
+     */
+    private BigDecimal price;
+
+    /**
+     * 商品金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 尔弘时代扩展JSON
+     */
+    private String ehsdJson;
+
+    /**
+     * 附件列表
+     */
+    @TableField(exist = false)
+    private List<ObsFile> fileList;
+
+}

+ 44 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/SampleProject.java

@@ -0,0 +1,44 @@
+package com.fjhx.sale.entity.sample.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-05-05
+ */
+@Getter
+@Setter
+@TableName("sample_project")
+public class SampleProject extends BasePo {
+
+    /**
+     * 样品单ID
+     */
+    private Long sampleId;
+
+    /**
+     * 收费项目
+
+     */
+    private String payName;
+
+    /**
+     * 金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 48 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/po/SampleShipment.java

@@ -0,0 +1,48 @@
+package com.fjhx.sale.entity.sample.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-05-05
+ */
+@Getter
+@Setter
+@TableName("sample_shipment")
+public class SampleShipment extends BasePo {
+
+    /**
+     * 样品单ID
+     */
+    private Long sampleId;
+
+    /**
+     * 商品ID
+     */
+    private Long productId;
+
+    /**
+     * 出货日期
+     */
+    private Date shipmentTime;
+
+    /**
+     * 出货数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 52 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleProductVo.java

@@ -0,0 +1,52 @@
+package com.fjhx.sale.entity.sample.vo;
+
+import com.fjhx.sale.entity.sample.po.SampleProduct;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-产品列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleProductVo extends SampleProduct {
+
+    /**
+     * 所属分类
+     */
+    private String productCategory;
+
+    /**
+     * 货品编码
+     */
+    private String productCode;
+
+    /**
+     * 货品名称
+     */
+    private String productName;
+
+    /**
+     * 单位
+     */
+    private String productUnit;
+
+    /**
+     * 货品规格型号
+     */
+    private String productSpec;
+
+    /**
+     * 货品类型
+     */
+    private String productType;
+
+    /**
+     * 所属分类id
+     */
+    private Long productCategoryId;
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleProjectVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.vo;
+
+import com.fjhx.sale.entity.sample.po.SampleProject;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-收费项目列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleProjectVo extends SampleProject {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleShipmentVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.vo;
+
+import com.fjhx.sale.entity.sample.po.SampleShipment;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单-出货计划列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleShipmentVo extends SampleShipment {
+
+}

+ 17 - 0
hx-ehsd/src/main/java/com/fjhx/sale/entity/sample/vo/SampleVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.sample.vo;
+
+import com.fjhx.sale.entity.sample.po.Sample;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 样品单表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Getter
+@Setter
+public class SampleVo extends Sample {
+
+}

+ 51 - 0
hx-ehsd/src/main/java/com/fjhx/sale/enums/FlowStatusEnum.java

@@ -0,0 +1,51 @@
+package com.fjhx.sale.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 流程审批状态枚举
+ */
+public enum FlowStatusEnum {
+    DRAFT(0, "草稿"),
+    UNDER_REVIEW(10, "审批中"),
+    REJECT(20, "驳回"),
+    PASS(30,"通过"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    FlowStatusEnum(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 (FlowStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 108 - 0
hx-ehsd/src/main/java/com/fjhx/sale/flow/SampleFlow.java

@@ -0,0 +1,108 @@
+package com.fjhx.sale.flow;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.sale.entity.sample.po.Sample;
+import com.fjhx.sale.entity.sample.po.SampleProduct;
+import com.fjhx.sale.entity.sample.po.SampleProject;
+import com.fjhx.sale.entity.sample.po.SampleShipment;
+import com.fjhx.sale.enums.FlowStatusEnum;
+import com.fjhx.sale.service.sample.SampleProductService;
+import com.fjhx.sale.service.sample.SampleProjectService;
+import com.fjhx.sale.service.sample.SampleService;
+import com.fjhx.sale.service.sample.SampleShipmentService;
+import com.fjhx.sale.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 SampleFlow extends FlowDelegate {
+
+
+    @Override
+    public String getFlowKey() {
+        return "sample_flow";
+    }
+
+
+
+    /**
+     * 发起流程
+     * @param flowId 流程ID
+     * @param submitData 采购付款数据
+     * @return
+     */
+    @Override
+    @DSTransactional
+    public Long start(Long flowId, JSONObject submitData) {
+        SampleService sampleService = SpringUtil.getBean(SampleService.class);
+        SampleProductService sampleProductService = SpringUtil.getBean(SampleProductService.class);
+        SampleProjectService sampleProjectService = SpringUtil.getBean(SampleProjectService.class);
+        SampleShipmentService sampleShipmentService = SpringUtil.getBean(SampleShipmentService.class);
+        Sample sample = submitData.toJavaObject(Sample.class);
+        sample.setCode(CodeEnum.SAMPLE.getCode());
+        sample.setStatus(FlowStatusEnum.UNDER_REVIEW.getKey());
+        sampleService.save(sample);
+        List<SampleProduct> sampleProductList = sample.getSampleProductList();
+        if(CollectionUtils.isNotEmpty(sampleProductList)){//保存样品单产品
+            for(SampleProduct c : sampleProductList){
+                c.setId(IdWorker.getId());
+                c.setSampleId(sample.getId());
+                c.setExpendQuantity(c.getQuantity());
+                ObsFileUtil.saveFile(c.getFileList(),c.getId());
+            }
+            sampleProductService.saveBatch(sampleProductList);
+        }
+        List<SampleProject> sampleProjectList = sample.getSampleProjectList();
+        if(CollectionUtils.isNotEmpty(sampleProjectList)){//保存收费项目
+            for(SampleProject c : sampleProjectList){
+                c.setSampleId(sample.getId());
+            }
+            sampleProjectService.saveBatch(sampleProjectList);
+        }
+        List<SampleShipment> sampleShipmentList = sample.getSampleShipmentList();
+        if(CollectionUtils.isNotEmpty(sampleShipmentList)){//保存自定义出货
+            for(SampleShipment c : sampleShipmentList){
+                c.setSampleId(sample.getId());
+            }
+            sampleShipmentService.saveBatch(sampleShipmentList);
+        }
+        return sample.getId();
+    }
+
+    /**
+     * 结束流程
+     * @param flowId 流程ID
+     * @param businessId 业务ID
+     * @param submitData 数据
+     */
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        SampleService sampleService = SpringUtil.getBean(SampleService.class);
+        //通过业务ID查询合同数据
+        Sample sample = sampleService.getById(businessId);
+        if(ObjectUtils.isEmpty(sample)){
+            throw new ServiceException("样品单不存在");
+        }
+        //修改采购状态为审批通过
+        sample.setStatus(FlowStatusEnum.PASS.getKey());
+        sample.setApprovedDate(new Date());
+        sampleService.updateById(sample);
+    }
+}

+ 26 - 0
hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.sale.mapper.sample;
+
+import com.fjhx.sale.entity.sample.po.Sample;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 样品单表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleMapper extends BaseMapper<Sample> {
+
+    /**
+     * 样品单表分页
+     */
+    Page<SampleVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Sample> wrapper);
+
+}

+ 26 - 0
hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleProductMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.sale.mapper.sample;
+
+import com.fjhx.sale.entity.sample.po.SampleProduct;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleProductVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 样品单-产品 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleProductMapper extends BaseMapper<SampleProduct> {
+
+    /**
+     * 样品单-产品分页
+     */
+    Page<SampleProductVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SampleProduct> wrapper);
+
+}

+ 26 - 0
hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleProjectMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.sale.mapper.sample;
+
+import com.fjhx.sale.entity.sample.po.SampleProject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleProjectVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 样品单-收费项目 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleProjectMapper extends BaseMapper<SampleProject> {
+
+    /**
+     * 样品单-收费项目分页
+     */
+    Page<SampleProjectVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SampleProject> wrapper);
+
+}

+ 26 - 0
hx-ehsd/src/main/java/com/fjhx/sale/mapper/sample/SampleShipmentMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.sale.mapper.sample;
+
+import com.fjhx.sale.entity.sample.po.SampleShipment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleShipmentVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 样品单-出货计划 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleShipmentMapper extends BaseMapper<SampleShipment> {
+
+    /**
+     * 样品单-出货计划分页
+     */
+    Page<SampleShipmentVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SampleShipment> wrapper);
+
+}

+ 46 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleProductService.java

@@ -0,0 +1,46 @@
+package com.fjhx.sale.service.sample;
+
+import com.fjhx.sale.entity.sample.po.SampleProduct;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleProductVo;
+import com.fjhx.sale.entity.sample.dto.SampleProductSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleProductDto;
+
+
+/**
+ * <p>
+ * 样品单-产品 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleProductService extends BaseService<SampleProduct> {
+
+    /**
+     * 样品单-产品分页
+     */
+    Page<SampleProductVo> getPage(SampleProductSelectDto dto);
+
+    /**
+     * 样品单-产品明细
+     */
+    SampleProductVo detail(Long id);
+
+    /**
+     * 样品单-产品新增
+     */
+    void add(SampleProductDto sampleProductDto);
+
+    /**
+     * 样品单-产品编辑
+     */
+    void edit(SampleProductDto sampleProductDto);
+
+    /**
+     * 样品单-产品删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleProjectService.java

@@ -0,0 +1,46 @@
+package com.fjhx.sale.service.sample;
+
+import com.fjhx.sale.entity.sample.po.SampleProject;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleProjectVo;
+import com.fjhx.sale.entity.sample.dto.SampleProjectSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleProjectDto;
+
+
+/**
+ * <p>
+ * 样品单-收费项目 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleProjectService extends BaseService<SampleProject> {
+
+    /**
+     * 样品单-收费项目分页
+     */
+    Page<SampleProjectVo> getPage(SampleProjectSelectDto dto);
+
+    /**
+     * 样品单-收费项目明细
+     */
+    SampleProjectVo detail(Long id);
+
+    /**
+     * 样品单-收费项目新增
+     */
+    void add(SampleProjectDto sampleProjectDto);
+
+    /**
+     * 样品单-收费项目编辑
+     */
+    void edit(SampleProjectDto sampleProjectDto);
+
+    /**
+     * 样品单-收费项目删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleService.java

@@ -0,0 +1,46 @@
+package com.fjhx.sale.service.sample;
+
+import com.fjhx.sale.entity.sample.po.Sample;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleVo;
+import com.fjhx.sale.entity.sample.dto.SampleSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleDto;
+
+
+/**
+ * <p>
+ * 样品单表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleService extends BaseService<Sample> {
+
+    /**
+     * 样品单表分页
+     */
+    Page<SampleVo> getPage(SampleSelectDto dto);
+
+    /**
+     * 样品单表明细
+     */
+    SampleVo detail(Long id);
+
+    /**
+     * 样品单表新增
+     */
+    void add(SampleDto sampleDto);
+
+    /**
+     * 样品单表编辑
+     */
+    void edit(SampleDto sampleDto);
+
+    /**
+     * 样品单表删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/SampleShipmentService.java

@@ -0,0 +1,46 @@
+package com.fjhx.sale.service.sample;
+
+import com.fjhx.sale.entity.sample.po.SampleShipment;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleShipmentVo;
+import com.fjhx.sale.entity.sample.dto.SampleShipmentSelectDto;
+import com.fjhx.sale.entity.sample.dto.SampleShipmentDto;
+
+
+/**
+ * <p>
+ * 样品单-出货计划 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+public interface SampleShipmentService extends BaseService<SampleShipment> {
+
+    /**
+     * 样品单-出货计划分页
+     */
+    Page<SampleShipmentVo> getPage(SampleShipmentSelectDto dto);
+
+    /**
+     * 样品单-出货计划明细
+     */
+    SampleShipmentVo detail(Long id);
+
+    /**
+     * 样品单-出货计划新增
+     */
+    void add(SampleShipmentDto sampleShipmentDto);
+
+    /**
+     * 样品单-出货计划编辑
+     */
+    void edit(SampleShipmentDto sampleShipmentDto);
+
+    /**
+     * 样品单-出货计划删除
+     */
+    void delete(Long id);
+
+}

+ 92 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleProductServiceImpl.java

@@ -0,0 +1,92 @@
+package com.fjhx.sale.service.sample.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.fjhx.item.service.product.ProductClassifyService;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.sale.entity.sample.po.SampleProduct;
+import com.fjhx.sale.mapper.sample.SampleProductMapper;
+import com.fjhx.sale.service.sample.SampleProductService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.wrapper.SqlField;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleProductVo;
+import com.fjhx.sale.entity.sample.dto.SampleProductSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.sale.entity.sample.dto.SampleProductDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 样品单-产品 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Service
+public class SampleProductServiceImpl extends ServiceImpl<SampleProductMapper, SampleProduct> implements SampleProductService {
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    @Autowired
+    private ProductClassifyService productClassifyService;
+
+    @Override
+    public Page<SampleProductVo> getPage(SampleProductSelectDto dto) {
+        IWrapper<SampleProduct> wrapper = getWrapper();
+        wrapper.orderByDesc("t1", SampleProduct::getCreateTime);
+        wrapper.gt("t1",SampleProduct::getExpendQuantity, BigDecimal.ZERO);
+        if(StringUtils.isNotEmpty(dto.getKeyword())){
+            wrapper.keyword(dto.getKeyword(),new SqlField("t2.`code`"),new SqlField("t2.`user_name`"));
+        }
+        Page<SampleProductVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<SampleProductVo> list = page.getRecords();
+        if(CollectionUtils.isNotEmpty(list)){
+            // 赋值产品属性
+            productInfoService.attributeAssign(list, SampleProductVo::getProductId, (item, product) -> {
+                item.setProductCode(product.getCode());
+                item.setProductUnit(product.getUnit());
+                item.setProductType(product.getType());
+                item.setProductName(product.getName());
+                item.setProductSpec(product.getSpec());
+                item.setProductCategoryId(product.getProductClassifyId());
+            });
+            // 赋值产品分类名称
+            productClassifyService.attributeAssign(list, SampleProductVo::getProductCategoryId, (item, productClassify) -> {
+                item.setProductCategory(productClassify.getName());
+            });
+        }
+        return page;
+    }
+
+    @Override
+    public SampleProductVo detail(Long id) {
+        SampleProduct SampleProduct = this.getById(id);
+        SampleProductVo result = BeanUtil.toBean(SampleProduct, SampleProductVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(SampleProductDto sampleProductDto) {
+        this.save(sampleProductDto);
+    }
+
+    @Override
+    public void edit(SampleProductDto sampleProductDto) {
+        this.updateById(sampleProductDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 57 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleProjectServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.sale.service.sample.impl;
+
+import com.fjhx.sale.entity.sample.po.SampleProject;
+import com.fjhx.sale.mapper.sample.SampleProjectMapper;
+import com.fjhx.sale.service.sample.SampleProjectService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleProjectVo;
+import com.fjhx.sale.entity.sample.dto.SampleProjectSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.sale.entity.sample.dto.SampleProjectDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 样品单-收费项目 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Service
+public class SampleProjectServiceImpl extends ServiceImpl<SampleProjectMapper, SampleProject> implements SampleProjectService {
+
+    @Override
+    public Page<SampleProjectVo> getPage(SampleProjectSelectDto dto) {
+        IWrapper<SampleProject> wrapper = getWrapper();
+        wrapper.orderByDesc("sp", SampleProject::getId);
+        Page<SampleProjectVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public SampleProjectVo detail(Long id) {
+        SampleProject SampleProject = this.getById(id);
+        SampleProjectVo result = BeanUtil.toBean(SampleProject, SampleProjectVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(SampleProjectDto sampleProjectDto) {
+        this.save(sampleProjectDto);
+    }
+
+    @Override
+    public void edit(SampleProjectDto sampleProjectDto) {
+        this.updateById(sampleProjectDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 57 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.sale.service.sample.impl;
+
+import com.fjhx.sale.entity.sample.po.Sample;
+import com.fjhx.sale.mapper.sample.SampleMapper;
+import com.fjhx.sale.service.sample.SampleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleVo;
+import com.fjhx.sale.entity.sample.dto.SampleSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.sale.entity.sample.dto.SampleDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 样品单表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Service
+public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> implements SampleService {
+
+    @Override
+    public Page<SampleVo> getPage(SampleSelectDto dto) {
+        IWrapper<Sample> wrapper = getWrapper();
+        wrapper.orderByDesc("s", Sample::getId);
+        Page<SampleVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public SampleVo detail(Long id) {
+        Sample Sample = this.getById(id);
+        SampleVo result = BeanUtil.toBean(Sample, SampleVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(SampleDto sampleDto) {
+        this.save(sampleDto);
+    }
+
+    @Override
+    public void edit(SampleDto sampleDto) {
+        this.updateById(sampleDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 57 - 0
hx-ehsd/src/main/java/com/fjhx/sale/service/sample/impl/SampleShipmentServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.sale.service.sample.impl;
+
+import com.fjhx.sale.entity.sample.po.SampleShipment;
+import com.fjhx.sale.mapper.sample.SampleShipmentMapper;
+import com.fjhx.sale.service.sample.SampleShipmentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.sample.vo.SampleShipmentVo;
+import com.fjhx.sale.entity.sample.dto.SampleShipmentSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.sale.entity.sample.dto.SampleShipmentDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 样品单-出货计划 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-05
+ */
+@Service
+public class SampleShipmentServiceImpl extends ServiceImpl<SampleShipmentMapper, SampleShipment> implements SampleShipmentService {
+
+    @Override
+    public Page<SampleShipmentVo> getPage(SampleShipmentSelectDto dto) {
+        IWrapper<SampleShipment> wrapper = getWrapper();
+        wrapper.orderByDesc("ss", SampleShipment::getId);
+        Page<SampleShipmentVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public SampleShipmentVo detail(Long id) {
+        SampleShipment SampleShipment = this.getById(id);
+        SampleShipmentVo result = BeanUtil.toBean(SampleShipment, SampleShipmentVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(SampleShipmentDto sampleShipmentDto) {
+        this.save(sampleShipmentDto);
+    }
+
+    @Override
+    public void edit(SampleShipmentDto sampleShipmentDto) {
+        this.updateById(sampleShipmentDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 98 - 0
hx-ehsd/src/main/java/com/fjhx/sale/util/code/CodeEnum.java

@@ -0,0 +1,98 @@
+package com.fjhx.sale.util.code;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.sale.service.sample.SampleService;
+import com.obs.services.internal.ServiceException;
+import lombok.Getter;
+
+import java.util.Date;
+import java.util.Map;
+
+@Getter
+public enum CodeEnum {
+
+    //样品单
+    SAMPLE("SC-", "yyMM-", "code", 3, SampleService.class),
+    ;
+
+    CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {
+        this.prefix = prefix;
+        this.dateFormat = dateFormat;
+        this.length = length;
+        this.codeFieldName = codeFieldName;
+        this.service = SpringUtil.getBean(serviceCls);
+    }
+
+    // 编码前缀
+    private final String prefix;
+    // 编码加日期规则
+    private final String dateFormat;
+    // 长度
+    private final Integer length;
+    // 编码字段名
+    private final String codeFieldName;
+    // service
+    private final IService<?> service;
+
+    /**
+     * 获取键值对
+     */
+    public String getCode() {
+        String itemPrefix;
+
+        if (ObjectUtil.isNotEmpty(dateFormat)) {
+            Date date = new Date();
+            String format = DateUtil.format(date, dateFormat);
+            itemPrefix = prefix + format;
+        } else {
+            itemPrefix = prefix;
+        }
+
+        Object obj = service.query()
+                .likeRight(codeFieldName, itemPrefix)
+                .orderByDesc(codeFieldName)
+                .last("limit 1")
+                .one();
+
+        if (obj == null) {
+            return itemPrefix + autoGenericCode(length, 0);
+        }
+
+        Map<String, Object> map = Convert.toMap(String.class, Object.class, obj);
+
+        String code = Convert.toStr(map.get(CharSequenceUtil.toCamelCase(codeFieldName)));
+        Integer codeNum = Convert.toInt(code.substring(itemPrefix.length()));
+        if (ObjectUtil.isEmpty(codeNum)) {
+            throw new ServiceException("自定义编码与系统编码生成规则冲突,暂时无法生成编码,请联系管理员");
+        }
+
+        return itemPrefix + autoGenericCode(length, codeNum);
+    }
+
+    /**
+     * 获取键值对
+     */
+    public String getCode(String code) {
+        if (ObjectUtil.isNotEmpty(code)) {
+            Long count = service.query().eq(codeFieldName, code).count();
+            if (count != 0) {
+                throw new ServiceException("编码已存在");
+            }
+            return code;
+        } else {
+            return getCode();
+        }
+    }
+    /**
+     * 不够位数的在前面补0,保留num的长度位数字
+     */
+    private static String autoGenericCode(int length, Integer codeNum) {
+        return String.format("%0" + length + "d", codeNum + 1);
+    }
+
+}

+ 54 - 0
hx-ehsd/src/main/resources/mapper/sample/SampleMapper.xml

@@ -0,0 +1,54 @@
+<?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.sale.mapper.sample.SampleMapper">
+    <select id="getPage" resultType="com.fjhx.sale.entity.sample.vo.SampleVo">
+        select
+            s.id,
+            s.code,
+            s.contract_type,
+            s.contract_template_id,
+            s.sell_corporation_id,
+            s.sell_contact_name,
+            s.sell_contact_number,
+            s.sell_country_id,
+            s.sell_province_id,
+            s.sell_city_id,
+            s.sell_address,
+            s.buy_corporation_id,
+            s.buy_contact_name,
+            s.buy_contact_number,
+            s.buy_country_id,
+            s.buy_province_id,
+            s.buy_city_id,
+            s.buy_address,
+            s.buy_postal_code,
+            s.status,
+            s.contract_status,
+            s.refund_status,
+            s.currency,
+            s.amount,
+            s.payment_method,
+            s.trade_methods,
+            s.advance_ratio,
+            s.transport_method,
+            s.transport_remark,
+            s.shroff_account_id,
+            s.warranty,
+            s.approved_date,
+            s.process_instance_id,
+            s.remark,
+            s.version,
+            s.delivery_time,
+            s.settlement_status,
+            s.currency_rate_json,
+            s.create_user,
+            s.user_name,
+            s.ehsd_json,
+            s.create_time,
+            s.update_user,
+            s.update_time
+        from sample s
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 20 - 0
hx-ehsd/src/main/resources/mapper/sample/SampleProductMapper.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.sale.mapper.sample.SampleProductMapper">
+    <select id="getPage" resultType="com.fjhx.sale.entity.sample.vo.SampleProductVo">
+        SELECT
+            t1.id,
+            t1.sample_id,
+            t1.product_id,
+            t2.`code` AS contractCode,
+            t2.user_name AS userName,
+            t2.version AS contractVersion,
+            t1.expend_quantity expendQuantity,
+            ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
+        FROM
+            sample_product t1
+            LEFT JOIN sample t2 ON t1.sample_id = t2.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 19 - 0
hx-ehsd/src/main/resources/mapper/sample/SampleProjectMapper.xml

@@ -0,0 +1,19 @@
+<?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.sale.mapper.sample.SampleProjectMapper">
+    <select id="getPage" resultType="com.fjhx.sale.entity.sample.vo.SampleProjectVo">
+        select
+            sp.id,
+            sp.contract_id,
+            sp.pay_name,
+            sp.amount,
+            sp.remark,
+            sp.create_user,
+            sp.create_time,
+            sp.update_user,
+            sp.update_time
+        from sample_project sp
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 20 - 0
hx-ehsd/src/main/resources/mapper/sample/SampleShipmentMapper.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.sale.mapper.sample.SampleShipmentMapper">
+    <select id="getPage" resultType="com.fjhx.sale.entity.sample.vo.SampleShipmentVo">
+        select
+            ss.id,
+            ss.contract_id,
+            ss.product_id,
+            ss.shipment_time,
+            ss.quantity,
+            ss.remark,
+            ss.create_user,
+            ss.create_time,
+            ss.update_user,
+            ss.update_time
+        from sample_shipment ss
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 1 - 2
hx-sale/src/main/java/com/fjhx/sale/entity/claim/po/Claim.java

@@ -2,7 +2,6 @@ package com.fjhx.sale.entity.claim.po;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.fjhx.file.entity.FileInfo;
 import com.fjhx.file.entity.ObsFile;
 import com.ruoyi.common.core.domain.BasePo;
 import java.math.BigDecimal;
@@ -22,7 +21,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("claim")
+@TableName("mapper/claim")
 public class Claim extends BasePo {
 
     /**

+ 4 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/quotation/po/QuotationProduct.java

@@ -60,4 +60,8 @@ public class QuotationProduct extends BasePo {
      */
     private String remark;
 
+    /**
+     * 尔弘时代扩展json字段
+     */
+    private String ehsdJson;
 }

+ 4 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/sale/po/SaleQuotation.java

@@ -160,4 +160,8 @@ public class SaleQuotation extends BasePo {
      */
     private String remark;
 
+    /**
+     * 尔弘时代扩展json字段
+     */
+    private String ehsdJson;
 }

+ 0 - 3
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java

@@ -44,9 +44,6 @@ import java.util.stream.Collectors;
 public class PurchaseFlowByWdly extends FlowDelegate {
 
     @Autowired
-    private PurchaseFlow purchaseFlow;
-
-    @Autowired
     private PurchaseService purchaseService;
 
     @Autowired

+ 0 - 0
hx-sale/src/main/resources/claim/ClaimContractMapper.xml → hx-sale/src/main/resources/mapper/claim/ClaimContractMapper.xml


+ 0 - 0
hx-sale/src/main/resources/claim/ClaimMapper.xml → hx-sale/src/main/resources/mapper/claim/ClaimMapper.xml