Browse Source

杰生重构 批次

home 2 years ago
parent
commit
99d7c2933d
21 changed files with 306 additions and 172 deletions
  1. 18 9
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterBatch.java
  2. 3 3
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterTag.java
  3. 5 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterBatchVo.java
  4. 4 4
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterTagEx.java
  5. 4 4
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterTagVo.java
  6. 26 4
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterBatchController.java
  7. 15 15
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterTagController.java
  8. 2 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.xml
  9. 0 16
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/stock/StockTagMapper.java
  10. 5 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBatchMapper.java
  11. 11 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBatchMapper.xml
  12. 16 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterTagMapper.java
  13. 1 1
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterTagMapper.xml
  14. 13 13
      hx-service/storage-restructure/src/main/java/com/fjhx/service/apply/impl/ApplyPurchaseServiceImpl.java
  15. 3 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractServiceImpl.java
  16. 0 28
      hx-service/storage-restructure/src/main/java/com/fjhx/service/stock/StockTagService.java
  17. 0 54
      hx-service/storage-restructure/src/main/java/com/fjhx/service/stock/impl/StockTagServiceImpl.java
  18. 4 5
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterBatchService.java
  19. 28 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterTagService.java
  20. 94 16
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterBatchServiceImpl.java
  21. 54 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterTagServiceImpl.java

+ 18 - 9
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterBatch.java

@@ -1,16 +1,15 @@
 package com.fjhx.entity.water;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.fjhx.base.StorageBaseEntity;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.StorageBaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * <p>
  * 批次
@@ -50,19 +49,29 @@ public class WaterBatch extends StorageBaseEntity {
     private Long contractDetailsId;
 
     /**
+     * 标签个数
+     */
+    private Integer tagCount;
+
+    /**
+     * 标签物料米数统计
+     */
+    private BigDecimal tagQuantitySum;
+
+    /**
      * 合同批次出货状态 (0未出货,1已出货)
      */
-    private Integer shipStatus;
+    private Integer shipmentStatus;
 
     /**
      * 出货时间
      */
-    private Date shipTime;
+    private Date shipmentTime;
 
     /**
      * 出货方式 (0物流公司,1包车)
      */
-    private Integer shipOutWay;
+    private Integer shipmentWay;
 
     /**
      * 物流名称

+ 3 - 3
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/stock/StockTag.java → hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterTag.java

@@ -1,4 +1,4 @@
-package com.fjhx.entity.stock;
+package com.fjhx.entity.water;
 
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -17,11 +17,11 @@ import lombok.EqualsAndHashCode;
  * </p>
  *
  * @author ${author}
- * @since 2022-09-16
+ * @since 2022-09-21
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class StockTag extends StorageBaseEntity {
+public class WaterTag extends StorageBaseEntity {
 
 
     /**

+ 5 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterBatchVo.java

@@ -14,4 +14,9 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class WaterBatchVo extends WaterBatch {
 
+    /**
+     * 合同编码
+     */
+    private String contractCode;
+
 }

+ 4 - 4
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/stock/StockTagEx.java → hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterTagEx.java

@@ -1,6 +1,6 @@
-package com.fjhx.params.stock;
+package com.fjhx.params.water;
 
-import com.fjhx.entity.stock.StockTag;
+import com.fjhx.entity.water.WaterTag;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -8,10 +8,10 @@ import lombok.EqualsAndHashCode;
  * 标签
  *
  * @author ${author}
- * @since 2022-09-16
+ * @since 2022-09-21
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class StockTagEx extends StockTag {
+public class WaterTagEx extends WaterTag {
 
 }

+ 4 - 4
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/stock/StockTagVo.java → hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterTagVo.java

@@ -1,6 +1,6 @@
-package com.fjhx.params.stock;
+package com.fjhx.params.water;
 
-import com.fjhx.entity.stock.StockTag;
+import com.fjhx.entity.water.WaterTag;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -8,10 +8,10 @@ import lombok.EqualsAndHashCode;
  * 标签
  *
  * @author ${author}
- * @since 2022-09-16
+ * @since 2022-09-21
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class StockTagVo extends StockTag {
+public class WaterTagVo extends WaterTag {
 
 }

+ 26 - 4
hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterBatchController.java

@@ -1,10 +1,9 @@
 package com.fjhx.controller.water;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
 import com.fjhx.entity.water.WaterBatch;
 import com.fjhx.params.water.WaterBatchVo;
 import com.fjhx.service.water.WaterBatchService;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -28,17 +27,40 @@ public class WaterBatchController {
     @Autowired
     private WaterBatchService waterBatchService;
 
+    @PostMapping("/getDetailsByContract")
+    public R getByContract(@RequestBody WaterBatch waterBatch) {
+        Map<String, Object> result = waterBatchService.getDetailsByContract(waterBatch.getContractId());
+        return R.success(result);
+    }
+
     @PostMapping("/add")
-    public R add(@RequestBody WaterBatchVo waterBatchVo){
+    public R add(@RequestBody WaterBatchVo waterBatchVo) {
         waterBatchService.add(waterBatchVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody WaterBatchVo waterBatchVo){
+    public R delete(@RequestBody WaterBatchVo waterBatchVo) {
         waterBatchService.delete(waterBatchVo);
         return R.success();
     }
 
+    /**
+     * 出货
+     */
+    @PostMapping("/shipment")
+    public R shipment(WaterBatch waterBatch) {
+        waterBatchService.shipment(waterBatch);
+        return R.success();
+    }
+
+    /**
+     * 批次详情
+     */
+    @PostMapping("/details")
+    public R details(WaterBatch waterBatch) {
+        return R.success(waterBatchService.getById(waterBatch.getId()));
+    }
+
 }
 

+ 15 - 15
hx-service/storage-restructure/src/main/java/com/fjhx/controller/stock/StockTagController.java → hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterTagController.java

@@ -1,10 +1,10 @@
-package com.fjhx.controller.stock;
+package com.fjhx.controller.water;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springblade.core.tool.api.R;
-import com.fjhx.entity.stock.StockTag;
-import com.fjhx.params.stock.StockTagVo;
-import com.fjhx.service.stock.StockTagService;
+import com.fjhx.entity.water.WaterTag;
+import com.fjhx.params.water.WaterTagVo;
+import com.fjhx.service.water.WaterTagService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -19,36 +19,36 @@ import java.util.Map;
  * </p>
  *
  * @author ${author}
- * @since 2022-09-16
+ * @since 2022-09-21
  */
 @RestController
-@RequestMapping("/stockTag")
-public class StockTagController {
+@RequestMapping("/waterTag")
+public class WaterTagController {
 
     @Autowired
-    private StockTagService stockTagService;
+    private WaterTagService waterTagService;
 
     @PostMapping("/page")
     public R page(@RequestBody Map<String, String> condition){
-        Page<StockTag> result = stockTagService.getPage(condition);
+        Page<WaterTag> result = waterTagService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody StockTagVo stockTagVo){
-        stockTagService.add(stockTagVo);
+    public R add(@RequestBody WaterTagVo waterTagVo){
+        waterTagService.add(waterTagVo);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody StockTagVo stockTagVo){
-        stockTagService.edit(stockTagVo);
+    public R edit(@RequestBody WaterTagVo waterTagVo){
+        waterTagService.edit(waterTagVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody StockTagVo stockTagVo){
-        stockTagService.delete(stockTagVo);
+    public R delete(@RequestBody WaterTagVo waterTagVo){
+        waterTagService.delete(waterTagVo);
         return R.success();
     }
 

+ 2 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.xml

@@ -23,8 +23,10 @@
     <sql id="select">
         select cd.contract_id,
                cd.contract_code,
+               cd.id                                          contractDetailsId,
                cd.apply_purchase_id,
                cd.apply_purchase_code,
+               cd.apply_purchase_details_id,
                c.supplier_id,
                now()                                          signTime,
                adddate(now(), interval m.safety_warn_day day) deliverTime,

+ 0 - 16
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/stock/StockTagMapper.java

@@ -1,16 +0,0 @@
-package com.fjhx.mapper.stock;
-
-import com.fjhx.entity.stock.StockTag;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 标签 Mapper 接口
- * </p>
- *
- * @author ${author}
- * @since 2022-09-16
- */
-public interface StockTagMapper extends BaseMapper<StockTag> {
-
-}

+ 5 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBatchMapper.java

@@ -2,6 +2,9 @@ package com.fjhx.mapper.water;
 
 import com.fjhx.entity.water.WaterBatch;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +16,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface WaterBatchMapper extends BaseMapper<WaterBatch> {
 
+    Map<String, Object> getMaterialInfo(@Param("contractId") Long contractId);
+
 }

+ 11 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBatchMapper.xml

@@ -2,4 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mapper.water.WaterBatchMapper">
 
+    <select id="getMaterialInfo" resultType="java.util.Map">
+        select cd.quantity,
+               m.name materialName,
+               m.code materialCode,
+               m.spec materialSpec,
+               cd.price
+        from contract_details cd
+                 left join material m on cd.material_id = m.id
+        where cd.contract_id = #{contractId}
+    </select>
+
 </mapper>

+ 16 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterTagMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.water;
+
+import com.fjhx.entity.water.WaterTag;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 标签 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-21
+ */
+public interface WaterTagMapper extends BaseMapper<WaterTag> {
+
+}

+ 1 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/stock/StockTagMapper.xml → hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterTagMapper.xml

@@ -1,5 +1,5 @@
 <?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.mapper.stock.StockTagMapper">
+<mapper namespace="com.fjhx.mapper.water.WaterTagMapper">
 
 </mapper>

+ 13 - 13
hx-service/storage-restructure/src/main/java/com/fjhx/service/apply/impl/ApplyPurchaseServiceImpl.java

@@ -13,12 +13,12 @@ import com.fjhx.base.Condition;
 import com.fjhx.base.StorageBaseEntity;
 import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.apply.ApplyPurchase;
-import com.fjhx.entity.stock.StockTag;
 import com.fjhx.entity.water.WaterDetail;
+import com.fjhx.entity.water.WaterTag;
 import com.fjhx.mapper.apply.ApplyPurchaseMapper;
 import com.fjhx.service.apply.ApplyPurchaseService;
-import com.fjhx.service.stock.StockTagService;
 import com.fjhx.service.water.WaterDetailService;
+import com.fjhx.service.water.WaterTagService;
 import com.fjhx.utils.BigDecimalUtil;
 import com.fjhx.utils.UserClientUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +40,7 @@ import java.util.stream.Collectors;
 public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, ApplyPurchase> implements ApplyPurchaseService {
 
     @Autowired
-    private StockTagService stockTagService;
+    private WaterTagService waterTagService;
 
     @Autowired
     private WaterDetailService waterDetailService;
@@ -306,13 +306,13 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
      */
     private Map<Long, Long> getMaximumDetentionTime(Date date, List<Long> materialIdList) {
 
-        List<Map<String, Object>> list = stockTagService.listMaps(Wrappers.<StockTag>query()
+        List<Map<String, Object>> list = waterTagService.listMaps(Wrappers.<WaterTag>query()
                 .select("min(create_time) createTime")
                 .lambda()
-                .select(StockTag::getMaterialId)
-                .eq(StockTag::getInHouse, StatusConstant.YES)
-                .in(StockTag::getMaterialId, materialIdList)
-                .groupBy(StockTag::getMaterialId)
+                .select(WaterTag::getMaterialId)
+                .eq(WaterTag::getInHouse, StatusConstant.YES)
+                .in(WaterTag::getMaterialId, materialIdList)
+                .groupBy(WaterTag::getMaterialId)
         );
 
         return list.stream().collect(Collectors.toMap(
@@ -332,14 +332,14 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
     private Map<Long, BigDecimal> getMoreThanOneMonth(Date date, List<Long> materialIdList) {
 
 
-        List<Map<String, Object>> list = stockTagService.listMaps(Wrappers.<StockTag>query()
+        List<Map<String, Object>> list = waterTagService.listMaps(Wrappers.<WaterTag>query()
                 .select("sum(quantity) delayQuantity")
                 .lambda()
-                .select(StockTag::getMaterialId)
-                .eq(StockTag::getInHouse, StatusConstant.YES)
+                .select(WaterTag::getMaterialId)
+                .eq(WaterTag::getInHouse, StatusConstant.YES)
                 .le(StorageBaseEntity::getCreateTime, DateUtil.offsetDay(date, -30))
-                .in(StockTag::getMaterialId, materialIdList)
-                .groupBy(StockTag::getMaterialId)
+                .in(WaterTag::getMaterialId, materialIdList)
+                .groupBy(WaterTag::getMaterialId)
         );
 
         return list.stream().collect(Collectors.toMap(

+ 3 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractServiceImpl.java

@@ -237,6 +237,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         return codePrefix + codeSuffixStr;
     }
 
+    /**
+     * 查询条件
+     */
     private QueryWrapper<Object> getWrapper(Condition condition) {
         Integer flowStatus = condition.getFlowStatus();
         String keyword = condition.getKeyword();

+ 0 - 28
hx-service/storage-restructure/src/main/java/com/fjhx/service/stock/StockTagService.java

@@ -1,28 +0,0 @@
-package com.fjhx.service.stock;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.stock.StockTag;
-import com.fjhx.params.stock.StockTagVo;
-import com.fjhx.base.StorageBaseService;
-
-import java.util.Map;
-
-/**
- * <p>
- * 标签 服务类
- * </p>
- *
- * @author ${author}
- * @since 2022-09-16
- */
-public interface StockTagService extends StorageBaseService<StockTag> {
-
-    Page<StockTag> getPage(Map<String, String> condition);
-
-    void add(StockTagVo stockTagVo);
-
-    void edit(StockTagVo stockTagVo);
-
-    void delete(StockTagVo stockTagVo);
-
-}

+ 0 - 54
hx-service/storage-restructure/src/main/java/com/fjhx/service/stock/impl/StockTagServiceImpl.java

@@ -1,54 +0,0 @@
-package com.fjhx.service.stock.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
-import com.fjhx.entity.stock.StockTag;
-import com.fjhx.params.stock.StockTagVo;
-import com.fjhx.mapper.stock.StockTagMapper;
-import com.fjhx.service.stock.StockTagService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-import java.util.Map;
-
-/**
- * <p>
- * 标签 服务实现类
- * </p>
- *
- * @author ${author}
- * @since 2022-09-16
- */
-@Service
-public class StockTagServiceImpl extends ServiceImpl<StockTagMapper, StockTag> implements StockTagService {
-
-    @Override
-    public Page<StockTag> getPage(Map<String, String> condition) {
-
-        QueryWrapper<StockTag> wrapper = Wrappers.query();
-
-        WrapperUtil.init(condition, wrapper)
-                .createTimeDesc();
-
-        Page<StockTag> page = page(condition, wrapper);
-        return page;
-    }
-
-    @Override
-    public void add(StockTagVo stockTagVo) {
-        save(stockTagVo);
-    }
-
-    @Override
-    public void edit(StockTagVo stockTagVo) {
-        updateById(stockTagVo);
-    }
-
-    @Override
-    public void delete(StockTagVo stockTagVo) {
-        removeById(stockTagVo.getId());
-    }
-
-}

+ 4 - 5
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterBatchService.java

@@ -1,9 +1,8 @@
 package com.fjhx.service.water;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.StorageBaseService;
 import com.fjhx.entity.water.WaterBatch;
 import com.fjhx.params.water.WaterBatchVo;
-import com.fjhx.base.StorageBaseService;
 
 import java.util.Map;
 
@@ -17,12 +16,12 @@ import java.util.Map;
  */
 public interface WaterBatchService extends StorageBaseService<WaterBatch> {
 
-    Page<WaterBatch> getPage(Map<String, String> condition);
+    Map<String, Object> getDetailsByContract(Long contractId);
 
     void add(WaterBatchVo waterBatchVo);
 
-    void edit(WaterBatchVo waterBatchVo);
-
     void delete(WaterBatchVo waterBatchVo);
 
+    void shipment(WaterBatch waterBatch);
+
 }

+ 28 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterTagService.java

@@ -0,0 +1,28 @@
+package com.fjhx.service.water;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.water.WaterTag;
+import com.fjhx.params.water.WaterTagVo;
+import com.fjhx.base.StorageBaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 标签 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-21
+ */
+public interface WaterTagService extends StorageBaseService<WaterTag> {
+
+    Page<WaterTag> getPage(Map<String, String> condition);
+
+    void add(WaterTagVo waterTagVo);
+
+    void edit(WaterTagVo waterTagVo);
+
+    void delete(WaterTagVo waterTagVo);
+
+}

+ 94 - 16
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterBatchServiceImpl.java

@@ -1,16 +1,19 @@
 package com.fjhx.service.water.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.water.WaterBatch;
-import com.fjhx.params.water.WaterBatchVo;
 import com.fjhx.mapper.water.WaterBatchMapper;
+import com.fjhx.params.water.WaterBatchVo;
 import com.fjhx.service.water.WaterBatchService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.Assert;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -25,30 +28,105 @@ import java.util.Map;
 public class WaterBatchServiceImpl extends ServiceImpl<WaterBatchMapper, WaterBatch> implements WaterBatchService {
 
     @Override
-    public Page<WaterBatch> getPage(Map<String, String> condition) {
+    public Map<String, Object> getDetailsByContract(Long contractId) {
+        Map<String, Object> result = baseMapper.getMaterialInfo(contractId);
+
+        Assert.notEmpty(result, "没有找到合同信息");
+
+        List<WaterBatch> list = list(WaterBatch::getContractId, contractId);
 
-        QueryWrapper<WaterBatch> wrapper = Wrappers.query();
+        // 二维码个数
+        int tagTotal = 0;
+        // 生成总数量
+        BigDecimal quantityTotal = BigDecimal.ZERO;
+        // 已发货
+        BigDecimal shipped = BigDecimal.ZERO;
+        // 未发货
+        BigDecimal unshipped = BigDecimal.ZERO;
 
-        WrapperUtil.init(condition, wrapper)
-                .createTimeDesc();
+        for (WaterBatch waterBatch : list) {
+            tagTotal += waterBatch.getTagCount();
 
-        Page<WaterBatch> page = page(condition, wrapper);
-        return page;
+            BigDecimal tagQuantitySum = waterBatch.getTagQuantitySum();
+            quantityTotal = quantityTotal.add(tagQuantitySum);
+
+            if (StatusConstant.YES.equals(waterBatch.getShipmentStatus())) {
+                shipped = shipped.add(tagQuantitySum);
+            } else {
+                unshipped = unshipped.add(tagQuantitySum);
+            }
+        }
+
+        // 出货金额
+        BigDecimal amountMoney = shipped.multiply(Convert.toBigDecimal(result.get("price")));
+
+        result.put("tagTotal", tagTotal);
+        result.put("quantityTotal", quantityTotal);
+        result.put("shipped", shipped);
+        result.put("unshipped", unshipped);
+        result.put("amountMoney", amountMoney);
+        result.put("list", list);
+
+        return result;
     }
 
     @Override
-    public void add(WaterBatchVo waterBatchVo) {
+    public synchronized void add(WaterBatchVo waterBatchVo) {
+        String contractCode = waterBatchVo.getContractCode();
+        String code = getCode(contractCode);
+        waterBatchVo.setCode(code);
+
+        waterBatchVo.setTagCount(0);
+        waterBatchVo.setTagQuantitySum(BigDecimal.ZERO);
+        waterBatchVo.setShipmentStatus(StatusConstant.NO);
+
         save(waterBatchVo);
     }
 
     @Override
-    public void edit(WaterBatchVo waterBatchVo) {
-        updateById(waterBatchVo);
+    public void delete(WaterBatchVo waterBatchVo) {
+        Long id = waterBatchVo.getId();
+        WaterBatch waterBatch = getById(id);
+        Integer tagCount = waterBatch.getTagCount();
+        Assert.eqZero(tagCount, "存在标签的批次不允许删除");
+
+        removeById(id);
     }
 
     @Override
-    public void delete(WaterBatchVo waterBatchVo) {
-        removeById(waterBatchVo.getId());
+    public void shipment(WaterBatch waterBatch) {
+        Assert.notEmpty(waterBatch.getId(), "批次id不能为空");
+        Assert.notEmpty(waterBatch.getShipmentWay(), "出货方式不能为空");
+
+        waterBatch.setShipmentStatus(StatusConstant.YES);
+        waterBatch.setShipmentTime(new Date());
+        updateById(waterBatch);
+    }
+
+    private String getCode(String contractCode) {
+
+        Assert.notEmpty(contractCode, "合同编码不能为空");
+
+        String codePrefix = contractCode + "-";
+
+        WaterBatch waterBatch = getOne(Wrappers.<WaterBatch>lambdaQuery()
+                .likeRight(WaterBatch::getCode, codePrefix)
+                .orderByDesc(WaterBatch::getCode)
+                .last("limit 1")
+        );
+
+        if (waterBatch == null) {
+            return codePrefix + "001";
+        }
+
+        int codeSuffix = Convert.toInt(waterBatch.getCode().replace(codePrefix, "")) + 1;
+
+        if (codeSuffix < 10) {
+            return codePrefix + "00" + codeSuffix;
+        } else if (codeSuffix < 100) {
+            return codePrefix + "0" + codeSuffix;
+        }
+        return codePrefix + codeSuffix;
     }
 
 }

+ 54 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterTagServiceImpl.java

@@ -0,0 +1,54 @@
+package com.fjhx.service.water.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.utils.WrapperUtil;
+import com.fjhx.entity.water.WaterTag;
+import com.fjhx.params.water.WaterTagVo;
+import com.fjhx.mapper.water.WaterTagMapper;
+import com.fjhx.service.water.WaterTagService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 标签 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-21
+ */
+@Service
+public class WaterTagServiceImpl extends ServiceImpl<WaterTagMapper, WaterTag> implements WaterTagService {
+
+    @Override
+    public Page<WaterTag> getPage(Map<String, String> condition) {
+
+        QueryWrapper<WaterTag> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<WaterTag> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(WaterTagVo waterTagVo) {
+        save(waterTagVo);
+    }
+
+    @Override
+    public void edit(WaterTagVo waterTagVo) {
+        updateById(waterTagVo);
+    }
+
+    @Override
+    public void delete(WaterTagVo waterTagVo) {
+        removeById(waterTagVo.getId());
+    }
+
+}