home пре 2 година
родитељ
комит
c4828e4047
30 измењених фајлова са 1159 додато и 3 уклоњено
  1. 0 1
      hx-common/service-flow/src/main/java/com/fjhx/service/example/impl/ExampleInfoServiceImpl.java
  2. 66 0
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBack.java
  3. 71 0
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBackCorrect.java
  4. 55 0
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBackDetails.java
  5. 21 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/BackDetail.java
  6. 27 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/CheckDetailsInfo.java
  7. 27 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/CheckDetailsVo.java
  8. 17 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackCorrectEx.java
  9. 17 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackCorrectVo.java
  10. 17 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackDetailsEx.java
  11. 17 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackDetailsVo.java
  12. 17 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackEx.java
  13. 17 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackVo.java
  14. 21 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/SubmitBackVo.java
  15. 2 2
      hx-service/storage/src/main/java/com/fjhx/applet/mapper/MaterialReceiveMapper.xml
  16. 106 0
      hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackController.java
  17. 30 0
      hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackCorrectController.java
  18. 56 0
      hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackDetailsController.java
  19. 20 0
      hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackCorrectMapper.java
  20. 5 0
      hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackCorrectMapper.xml
  21. 16 0
      hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackDetailsMapper.java
  22. 5 0
      hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackDetailsMapper.xml
  23. 31 0
      hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackMapper.java
  24. 47 0
      hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackMapper.xml
  25. 29 0
      hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackCorrectService.java
  26. 28 0
      hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackDetailsService.java
  27. 44 0
      hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackService.java
  28. 58 0
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackCorrectServiceImpl.java
  29. 54 0
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackDetailsServiceImpl.java
  30. 238 0
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackServiceImpl.java

+ 0 - 1
hx-common/service-flow/src/main/java/com/fjhx/service/example/impl/ExampleInfoServiceImpl.java

@@ -62,7 +62,6 @@ public class ExampleInfoServiceImpl extends ServiceImpl<ExampleInfoMapper, Examp
         List<Long> userId = result.stream().map(item -> (Long) item.get("userId")).collect(Collectors.toList());
         Map<Long, Map<String, Object>> userNameAndPost = UserClientUtil.getUserNameAndPostByUserId(userId);
 
-
         // 查询所有节点
         List<ProcessNode> processNodeList = processNodeService.list(ProcessNode::getProcessTenantId, exampleInfo.getProcessTenantId());
 

+ 66 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBack.java

@@ -0,0 +1,66 @@
+package com.fjhx.entity.stock;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 退仓面料
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Data
+public class StockBack implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 操作人id
+     */
+    private String operatorId;
+
+    /**
+     * 操作时间
+     */
+    private Date operationTime;
+
+    /**
+     * 操作数量
+     */
+    private Integer operationNum;
+
+    /**
+     * 操作米数
+     */
+    private BigDecimal operationMeters;
+
+    /**
+     * 0 未复核 1已复核
+     */
+    private Integer status;
+
+    /**
+     * 复核人id
+     */
+    private String checkerId;
+
+    /**
+     * 复核时间
+     */
+    private Date checkerTime;
+
+
+}

+ 71 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBackCorrect.java

@@ -0,0 +1,71 @@
+package com.fjhx.entity.stock;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-01
+ */
+@Data
+public class StockBackCorrect implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 修正时间
+     */
+    private Date correctTime;
+
+    /**
+     * 人员id
+     */
+    private String userId;
+
+    /**
+     * 物料id
+     */
+    private String materialId;
+
+    /**
+     * 供应商id
+     */
+    private String supplierId;
+
+    /**
+     * 修正面积
+     */
+    private BigDecimal correctArea;
+
+    /**
+     * 修正原因
+     */
+    private Integer correctReason;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+
+}

+ 55 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBackDetails.java

@@ -0,0 +1,55 @@
+package com.fjhx.entity.stock;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Data
+public class StockBackDetails implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 退仓面料id
+     */
+    private Long stockBackId;
+
+    /**
+     * 物料id
+     */
+    private String materialId;
+
+    /**
+     * 米数
+     */
+    private BigDecimal materialMeters;
+
+    /**
+     * 原米数(复核之前米数)
+     */
+    private BigDecimal oldMaterialMeters;
+
+    /**
+     * 二维码
+     */
+    private String qrcode;
+
+
+}

+ 21 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/BackDetail.java

@@ -0,0 +1,21 @@
+package com.fjhx.params.stock;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class BackDetail {
+
+    /**
+     * 物料id
+     */
+    private String materialId;
+
+    /**
+     * 米数
+     */
+    private List<BigDecimal> materialMetersList;
+
+}

+ 27 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/CheckDetailsInfo.java

@@ -0,0 +1,27 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockBackDetails;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CheckDetailsInfo {
+
+    /**
+     * 物料id
+     */
+    private String materialId;
+
+    /**
+     * 物料名称
+     */
+    private String materialName;
+
+    /**
+     * 退仓面料详情
+     */
+    private List<StockBackDetails> stockBackDetailsList;
+
+
+}

+ 27 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/CheckDetailsVo.java

@@ -0,0 +1,27 @@
+package com.fjhx.params.stock;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CheckDetailsVo {
+
+    /**
+     * 退仓面料id
+     */
+    private Long stockBackId;
+
+    /**
+     * 复核人id
+     */
+    private String checkerId;
+
+    /**
+     * 退仓面料信息
+     */
+    private List<CheckDetailsInfo> checkDetailsInfoList;
+
+}
+
+

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackCorrectEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockBackCorrect;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-09-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockBackCorrectEx extends StockBackCorrect {
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackCorrectVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockBackCorrect;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-09-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockBackCorrectVo extends StockBackCorrect {
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackDetailsEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockBackDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockBackDetailsEx extends StockBackDetails {
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackDetailsVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockBackDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockBackDetailsVo extends StockBackDetails {
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockBack;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 退仓面料
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockBackEx extends StockBack {
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StockBackVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockBack;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 退仓面料
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockBackVo extends StockBack {
+
+}

+ 21 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/SubmitBackVo.java

@@ -0,0 +1,21 @@
+package com.fjhx.params.stock;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SubmitBackVo {
+
+    /**
+     * 操作人id
+     */
+    private String operatorId;
+
+    /**
+     * 退回物料详情
+     */
+    private List<BackDetail> backDetailList;
+
+}
+

+ 2 - 2
hx-service/storage/src/main/java/com/fjhx/applet/mapper/MaterialReceiveMapper.xml

@@ -32,8 +32,8 @@
             </if>
         </set>
         where id in
-        <foreach item="idList" collection="list" separator="," open="(" close=")">
-            #{idList}
+        <foreach item="item" collection="idList" separator="," open="(" close=")">
+            #{item}
         </foreach>
     </update>
 

+ 106 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackController.java

@@ -0,0 +1,106 @@
+package com.fjhx.stock.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.entity.stock.StockBackCorrect;
+import com.fjhx.entity.stock.StockBackDetails;
+import com.fjhx.params.stock.CheckDetailsVo;
+import com.fjhx.params.stock.SubmitBackVo;
+import com.fjhx.stock.service.StockBackCorrectService;
+import com.fjhx.stock.service.StockBackService;
+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;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 退仓面料 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@RestController
+@RequestMapping("/stockBack")
+public class StockBackController {
+
+    @Autowired
+    private StockBackService stockBackService;
+
+    @Autowired
+    private StockBackCorrectService stockBackCorrectService;
+
+    /**
+     * 获取今日领料
+     */
+    @PostMapping("/getPickingToday")
+    public R getPickingToday(@RequestBody Map<String, String> condition) {
+        List<Map<String, Object>> result = stockBackService.getPickingToday(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 提交退料
+     */
+    @PostMapping("/submitBack")
+    public R submitBack(@RequestBody SubmitBackVo submitBackVo) {
+        stockBackService.submitBack(submitBackVo);
+        return R.success();
+    }
+
+    /**
+     * 退仓复核列表
+     */
+    @PostMapping("/checkList")
+    public R checkList() {
+        List<Map<String, Object>> result = stockBackService.checkList();
+        return R.success(result);
+    }
+
+    /**
+     * 退仓复核详情
+     */
+    @PostMapping("/checkDetails")
+    public R checkDetails(@RequestBody Map<String, Long> condition) {
+        Long stockBackId = condition.get("stockBackId");
+        CheckDetailsVo result = stockBackService.checkDetails(stockBackId);
+        return R.success(result);
+    }
+
+    /**
+     * 提交退仓复核信息
+     */
+    @PostMapping("/submitCheck")
+    public R submitCheckDetails(@RequestBody CheckDetailsVo checkDetailsVo) {
+        List<StockBackDetails> stockBackDetailsList = stockBackService.submitCheckDetails(checkDetailsVo);
+        return R.success(stockBackDetailsList);
+    }
+
+    /**
+     * 面料修正提交
+     */
+    @PostMapping("/correctSave")
+    public R correctSave(@RequestBody StockBackCorrect stockBackCorrect) {
+        stockBackCorrect.setCreateTime(new Date());
+        stockBackCorrectService.update(stockBackCorrect, Wrappers.<StockBackCorrect>lambdaUpdate().eq(StockBackCorrect::getId, stockBackCorrect.getId()));
+        return R.success();
+    }
+
+    /**
+     * 面料使用率用户统计
+     */
+    @PostMapping("/userStatistics")
+    public R userStatistics(@RequestBody Map<String, String> condition) {
+        Map<Integer, List<Map<String, Object>>> result = stockBackService.userStatistics(condition);
+        return R.success(result);
+    }
+
+
+}
+

+ 30 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackCorrectController.java

@@ -0,0 +1,30 @@
+package com.fjhx.stock.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.stock.StockBackCorrect;
+import com.fjhx.params.stock.StockBackCorrectVo;
+import com.fjhx.stock.service.StockBackCorrectService;
+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;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-01
+ */
+@RestController
+@RequestMapping("/stockBackCorrect")
+public class StockBackCorrectController {
+
+
+}
+

+ 56 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackDetailsController.java

@@ -0,0 +1,56 @@
+package com.fjhx.stock.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.stock.StockBackDetails;
+import com.fjhx.params.stock.StockBackDetailsVo;
+import com.fjhx.stock.service.StockBackDetailsService;
+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;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@RestController
+@RequestMapping("/stockBackDetails")
+public class StockBackDetailsController {
+
+    @Autowired
+    private StockBackDetailsService stockBackDetailsService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, String> condition){
+        Page<StockBackDetails> result = stockBackDetailsService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody StockBackDetailsVo stockBackDetailsVo){
+        stockBackDetailsService.add(stockBackDetailsVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody StockBackDetailsVo stockBackDetailsVo){
+        stockBackDetailsService.edit(stockBackDetailsVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody StockBackDetailsVo stockBackDetailsVo){
+        stockBackDetailsService.delete(stockBackDetailsVo);
+        return R.success();
+    }
+
+}
+

+ 20 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackCorrectMapper.java

@@ -0,0 +1,20 @@
+package com.fjhx.stock.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.entity.stock.StockBackCorrect;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-01
+ */
+public interface StockBackCorrectMapper extends BaseMapper<StockBackCorrect> {
+
+}

+ 5 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackCorrectMapper.xml

@@ -0,0 +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.stock.mapper.StockBackCorrectMapper">
+
+</mapper>

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

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

+ 5 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackDetailsMapper.xml

@@ -0,0 +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.stock.mapper.StockBackDetailsMapper">
+
+</mapper>

+ 31 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackMapper.java

@@ -0,0 +1,31 @@
+package com.fjhx.stock.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.entity.stock.StockBack;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tenant.annotation.TenantIgnore;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 退仓面料 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+public interface StockBackMapper extends BaseMapper<StockBack> {
+
+    @TenantIgnore
+    List<Map<String, Object>> getPickingToday(@Param("ew") QueryWrapper<Object> wrapper);
+
+    @TenantIgnore
+    List<Map<String, Object>> checkList();
+
+    @TenantIgnore
+    List<Map<String, Object>> userStatistics(@Param("ew") QueryWrapper<Object> wrapper);
+
+}

+ 47 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackMapper.xml

@@ -0,0 +1,47 @@
+<?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.stock.mapper.StockBackMapper">
+
+    <select id="getPickingToday" resultType="java.util.Map">
+        select m.ID   materialId,
+               m.code materialCode,
+               m.name materialName
+        from stock_waterdetial swd
+                 left join material m on m.Code = swd.MaterialCode
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="checkList" resultType="java.util.Map">
+        select sb.id               stockBackId,
+               sb.operation_num    operationNum,
+               sb.operation_meters operationMeters,
+               sb.operation_time   operationTime,
+               uu.RealName         realName
+        from stock_back sb
+                 left join u_user uu on sb.operator_id = uu.ID
+        where sb.status = 0
+    </select>
+
+    <select id="userStatistics" resultType="java.util.Map">
+        select distinct t.jobNo,
+                        m.TechnologyType technologyType,
+                        uu.RealName      realName
+        from ((select ss.printer       jobNo,
+                      ss.material_code materialCode
+               from stock_scheduling ss
+                   ${ew.customSqlSegment}
+              )
+              union all
+              (
+                  select ss.paper_man  jobNo,
+                         ss.paper_code materialCode
+                  from stock_scheduling ss
+                      ${ew.customSqlSegment}
+              )) t
+                 left join material m on m.code = t.materialCode
+                 left join u_user uu on t.jobNo = uu.JobNo
+        where m.TechnologyType in (0, 1, 2)
+    </select>
+
+
+</mapper>

+ 29 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackCorrectService.java

@@ -0,0 +1,29 @@
+package com.fjhx.stock.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.stock.StockBackCorrect;
+import com.fjhx.params.stock.StockBackCorrectVo;
+import com.fjhx.base.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-01
+ */
+public interface StockBackCorrectService extends BaseService<StockBackCorrect> {
+
+    Page<StockBackCorrect> getPage(Map<String, String> condition);
+
+    void add(StockBackCorrectVo stockBackCorrectVo);
+
+    void edit(StockBackCorrectVo stockBackCorrectVo);
+
+    void delete(StockBackCorrectVo stockBackCorrectVo);
+
+}

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

@@ -0,0 +1,28 @@
+package com.fjhx.stock.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.stock.StockBackDetails;
+import com.fjhx.params.stock.StockBackDetailsVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+public interface StockBackDetailsService extends BaseService<StockBackDetails> {
+
+    Page<StockBackDetails> getPage(Map<String, String> condition);
+
+    void add(StockBackDetailsVo stockBackDetailsVo);
+
+    void edit(StockBackDetailsVo stockBackDetailsVo);
+
+    void delete(StockBackDetailsVo stockBackDetailsVo);
+
+}

+ 44 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackService.java

@@ -0,0 +1,44 @@
+package com.fjhx.stock.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.entity.stock.StockBack;
+import com.fjhx.entity.stock.StockBackDetails;
+import com.fjhx.params.stock.CheckDetailsVo;
+import com.fjhx.params.stock.StockBackVo;
+import com.fjhx.params.stock.SubmitBackVo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 退仓面料 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+public interface StockBackService extends BaseService<StockBack> {
+
+    Page<StockBack> getPage(Map<String, String> condition);
+
+    void add(StockBackVo stockBackVo);
+
+    void edit(StockBackVo stockBackVo);
+
+    void delete(StockBackVo stockBackVo);
+
+    List<Map<String, Object>> getPickingToday(Map<String, String> condition);
+
+    void submitBack(SubmitBackVo submitBackVo);
+
+    List<Map<String, Object>> checkList();
+
+    CheckDetailsVo checkDetails(Long stockBackId);
+
+    List<StockBackDetails> submitCheckDetails(CheckDetailsVo checkDetailsVo);
+
+    Map<Integer, List<Map<String, Object>>> userStatistics(Map<String, String> condition);
+
+}

+ 58 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackCorrectServiceImpl.java

@@ -0,0 +1,58 @@
+package com.fjhx.stock.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.entity.stock.StockBackCorrect;
+import com.fjhx.params.stock.StockBackCorrectVo;
+import com.fjhx.stock.mapper.StockBackCorrectMapper;
+import com.fjhx.stock.service.StockBackCorrectService;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.WrapperUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-09-01
+ */
+@Service
+public class StockBackCorrectServiceImpl extends ServiceImpl<StockBackCorrectMapper, StockBackCorrect> implements StockBackCorrectService {
+
+    @Override
+    public Page<StockBackCorrect> getPage(Map<String, String> condition) {
+
+        QueryWrapper<StockBackCorrect> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<StockBackCorrect> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(StockBackCorrectVo stockBackCorrectVo) {
+        save(stockBackCorrectVo);
+    }
+
+    @Override
+    public void edit(StockBackCorrectVo stockBackCorrectVo) {
+        updateById(stockBackCorrectVo);
+    }
+
+    @Override
+    public void delete(StockBackCorrectVo stockBackCorrectVo) {
+        removeById(stockBackCorrectVo.getId());
+    }
+
+
+}

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

@@ -0,0 +1,54 @@
+package com.fjhx.stock.service.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.StockBackDetails;
+import com.fjhx.params.stock.StockBackDetailsVo;
+import com.fjhx.stock.mapper.StockBackDetailsMapper;
+import com.fjhx.stock.service.StockBackDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Service
+public class StockBackDetailsServiceImpl extends ServiceImpl<StockBackDetailsMapper, StockBackDetails> implements StockBackDetailsService {
+
+    @Override
+    public Page<StockBackDetails> getPage(Map<String, String> condition) {
+
+        QueryWrapper<StockBackDetails> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<StockBackDetails> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(StockBackDetailsVo stockBackDetailsVo) {
+        save(stockBackDetailsVo);
+    }
+
+    @Override
+    public void edit(StockBackDetailsVo stockBackDetailsVo) {
+        updateById(stockBackDetailsVo);
+    }
+
+    @Override
+    public void delete(StockBackDetailsVo stockBackDetailsVo) {
+        removeById(stockBackDetailsVo.getId());
+    }
+
+}

+ 238 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackServiceImpl.java

@@ -0,0 +1,238 @@
+package com.fjhx.stock.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.BasicEntity;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.material.Material;
+import com.fjhx.entity.stock.StockBack;
+import com.fjhx.entity.stock.StockBackDetails;
+import com.fjhx.material.service.MaterialService;
+import com.fjhx.params.stock.*;
+import com.fjhx.stock.mapper.StockBackMapper;
+import com.fjhx.stock.service.StockBackDetailsService;
+import com.fjhx.stock.service.StockBackService;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.WrapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 退仓面料 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-31
+ */
+@Service
+public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack> implements StockBackService {
+
+    @Autowired
+    private StockBackDetailsService stockBackDetailsService;
+
+    @Autowired
+    private MaterialService materialService;
+
+    @Override
+    public Page<StockBack> getPage(Map<String, String> condition) {
+
+        QueryWrapper<StockBack> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<StockBack> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(StockBackVo stockBackVo) {
+        save(stockBackVo);
+    }
+
+    @Override
+    public void edit(StockBackVo stockBackVo) {
+        updateById(stockBackVo);
+    }
+
+    @Override
+    public void delete(StockBackVo stockBackVo) {
+        removeById(stockBackVo.getId());
+    }
+
+    @Override
+    public List<Map<String, Object>> getPickingToday(Map<String, String> condition) {
+        String userId = condition.get("userId");
+        Assert.notEmpty(userId, "用户id不能为空");
+
+        Date date = new Date();
+
+        QueryWrapper<Object> wrapper = Wrappers.query()
+                .eq("swd.OperUserId", userId)
+                .in("swd.StockChangeType", 20, 23)
+                .between("swd.CreatedTime", DateUtil.beginOfDay(date), DateUtil.endOfDay(date))
+                .groupBy("m.id");
+
+        return baseMapper.getPickingToday(wrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void submitBack(SubmitBackVo submitBackVo) {
+
+        List<BackDetail> backDetailList = submitBackVo.getBackDetailList();
+        String operatorId = submitBackVo.getOperatorId();
+        Date date = new Date();
+
+        List<StockBackDetails> stockBackDetailsList = new ArrayList<>();
+
+        for (BackDetail backDetail : backDetailList) {
+            List<BigDecimal> materialMetersList = backDetail.getMaterialMetersList();
+            String materialId = backDetail.getMaterialId();
+
+            // 面料退仓
+            StockBack stockBack = new StockBack();
+            stockBack.setOperatorId(operatorId);
+            stockBack.setCheckerTime(date);
+            stockBack.setOperationNum(materialMetersList.size());
+            stockBack.setOperationMeters(materialMetersList.stream().reduce(BigDecimal.ZERO, BigDecimal::add));
+            stockBack.setStatus(StatusConstant.No);
+            save(stockBack);
+
+            // 退仓详情
+            for (BigDecimal materialMeters : materialMetersList) {
+                StockBackDetails stockBackDetails = new StockBackDetails();
+                stockBackDetails.setStockBackId(stockBack.getId());
+                stockBackDetails.setMaterialId(materialId);
+                stockBackDetails.setMaterialMeters(materialMeters);
+                stockBackDetails.setOldMaterialMeters(materialMeters);
+                stockBackDetailsList.add(stockBackDetails);
+            }
+
+        }
+
+        stockBackDetailsService.saveBatch(stockBackDetailsList);
+
+    }
+
+    @Override
+    public List<Map<String, Object>> checkList() {
+        return baseMapper.checkList();
+    }
+
+    @Override
+    public CheckDetailsVo checkDetails(Long stockBackId) {
+
+        CheckDetailsVo checkDetailsVo = new CheckDetailsVo();
+        checkDetailsVo.setStockBackId(stockBackId);
+
+        List<StockBackDetails> list = stockBackDetailsService.list(StockBackDetails::getStockBackId, stockBackId);
+        Map<String, List<StockBackDetails>> collect = list.stream().collect(Collectors.groupingBy(StockBackDetails::getMaterialId));
+
+        // 通过物料id货物物料名称
+        Map<String, String> materialMap = materialService.listByIds(collect.keySet())
+                .stream().collect(Collectors.toMap(BasicEntity::getId, Material::getName));
+
+        // 退仓面料信息
+        List<CheckDetailsInfo> checkDetailsInfoList = new ArrayList<>();
+
+        collect.forEach((k, v) -> {
+            CheckDetailsInfo checkDetailsInfo = new CheckDetailsInfo();
+            checkDetailsInfo.setMaterialId(k);
+            checkDetailsInfo.setMaterialName(materialMap.get(k));
+            checkDetailsInfo.setStockBackDetailsList(v);
+            checkDetailsInfoList.add(checkDetailsInfo);
+        });
+
+
+        checkDetailsVo.setCheckDetailsInfoList(checkDetailsInfoList);
+
+        return checkDetailsVo;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<StockBackDetails> submitCheckDetails(CheckDetailsVo checkDetailsVo) {
+
+        Long stockBackId = checkDetailsVo.getStockBackId();
+        String checkerId = checkDetailsVo.getCheckerId();
+
+        List<CheckDetailsInfo> checkDetailsInfoList = checkDetailsVo.getCheckDetailsInfoList();
+
+        List<StockBackDetails> stockBackDetails = new ArrayList<>();
+
+        // 循环退仓面料信息
+        for (CheckDetailsInfo checkDetailsInfo : checkDetailsInfoList) {
+            String materialId = checkDetailsInfo.getMaterialId();
+            List<StockBackDetails> stockBackDetailsList = checkDetailsInfo.getStockBackDetailsList();
+
+            // 循环得到具体某一卷物料
+            for (StockBackDetails backDetails : stockBackDetailsList) {
+                // id为空表示新增,赋值信息
+                if (ObjectUtil.isEmpty(backDetails.getId())) {
+                    backDetails.setStockBackId(stockBackId);
+                    backDetails.setMaterialId(materialId);
+                    backDetails.setOldMaterialMeters(BigDecimal.ZERO);
+                }
+            }
+            stockBackDetails.addAll(stockBackDetailsList);
+        }
+
+        // 新增或编辑
+        stockBackDetailsService.saveOrUpdateBatch(stockBackDetails);
+
+        // 后端存在,前端没传入的数据代表已被删除,把米数改为0
+        stockBackDetailsService.update(Wrappers.<StockBackDetails>lambdaUpdate()
+                .eq(StockBackDetails::getStockBackId, stockBackId)
+                .notIn(StockBackDetails::getId, stockBackDetails.stream().map(StockBackDetails::getId).collect(Collectors.toList()))
+                .set(StockBackDetails::getMaterialMeters, BigDecimal.ZERO)
+        );
+
+        // 修改退仓复核信息
+        update(Wrappers.<StockBack>lambdaUpdate()
+                .eq(StockBack::getId, stockBackId)
+                .set(StockBack::getCheckerId, checkerId)
+                .set(StockBack::getCheckerTime, new Date())
+                .set(StockBack::getStatus, StatusConstant.YES)
+        );
+
+        return stockBackDetails;
+    }
+
+    @Override
+    public Map<Integer, List<Map<String, Object>>> userStatistics(Map<String, String> condition) {
+
+        QueryWrapper<Object> wrapper = createWrapper(condition);
+
+        List<Map<String, Object>> result = baseMapper.userStatistics(wrapper);
+
+        return result.stream().collect(Collectors.groupingBy(item -> (Integer) item.get("technologyType")));
+    }
+
+
+    private QueryWrapper<Object> createWrapper(Map<String, String> condition) {
+        String beginTime = condition.get("beginTime");
+        Assert.notEmpty(beginTime, "开始时间不能为空");
+
+        String endTime = condition.get("endTime");
+        Assert.notEmpty(endTime, "结束时间不能为空");
+
+        return Wrappers.query().between("ss.create_time",
+                DateUtil.beginOfDay(DateUtil.parse(beginTime)),
+                DateUtil.endOfDay(DateUtil.parse(endTime)));
+    }
+
+}