Browse Source

杰生重构

home 2 years ago
parent
commit
a7b2d02693
30 changed files with 912 additions and 73 deletions
  1. 4 1
      hx-common/code-generator/src/main/java/com/fjhx/modular/StorageRestructure.java
  2. 18 9
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/v3/V3Plan.java
  3. 62 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterBack.java
  4. 66 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterBackDetails.java
  5. 22 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterBackAddVo.java
  6. 17 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterBackDetailsEx.java
  7. 17 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterBackDetailsVo.java
  8. 17 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterBackEx.java
  9. 25 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterBackVo.java
  10. 29 0
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/task/ScheduleTaskController.java
  11. 23 23
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/v3/V3PlanController.java
  12. 78 0
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterBackController.java
  13. 32 0
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterBackDetailsController.java
  14. 8 0
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterDetailController.java
  15. 16 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBackDetailsMapper.java
  16. 5 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBackDetailsMapper.xml
  17. 16 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBackMapper.java
  18. 5 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBackMapper.xml
  19. 3 1
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterDetailMapper.java
  20. 7 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterDetailMapper.xml
  21. 3 13
      hx-service/storage-restructure/src/main/java/com/fjhx/service/v3/V3PlanService.java
  22. 71 24
      hx-service/storage-restructure/src/main/java/com/fjhx/service/v3/impl/V3PlanServiceImpl.java
  23. 29 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterBackDetailsService.java
  24. 48 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterBackService.java
  25. 6 1
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterDetailService.java
  26. 54 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterBackDetailsServiceImpl.java
  27. 165 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterBackServiceImpl.java
  28. 17 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterDetailServiceImpl.java
  29. 48 0
      hx-service/storage-restructure/src/main/java/com/fjhx/utils/GetV3DateUtil.java
  30. 1 1
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockDetailServiceImpl.java

+ 4 - 1
hx-common/code-generator/src/main/java/com/fjhx/modular/StorageRestructure.java

@@ -12,13 +12,16 @@ public class StorageRestructure {
         CodeGenerator.MODULAR_NAME = "storage-restructure";
 
         // 需要生成的表名称,多表用,隔开
-        CodeGenerator.INCLUDE = "v3_plan";
+        CodeGenerator.INCLUDE = "water_back_details";
 
         // mysql连接
         CodeGenerator.MYSQL_URL = "36.134.91.96:17330";
         CodeGenerator.USER_NAME = "fjhx2012mysql";
         CodeGenerator.PASSWORD = "3PN-Mzn#vnP&q6d";
 
+        CodeGenerator.BASE_ENTITY_PATH = "com.fjhx.base.StorageBaseEntity";
+        CodeGenerator.BASE_SERVICE_PATH = "com.fjhx.base.StorageBaseService";
+
         CodeGenerator.execute();
     }
 

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

@@ -1,26 +1,31 @@
 package com.fjhx.entity.v3;
 
-import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.fjhx.base.BaseEntity;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author ${author}
  * @since 2022-10-26
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
-public class V3Plan extends BaseEntity {
+public class V3Plan implements Serializable {
 
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
 
     /**
      * 排班物料
@@ -30,7 +35,7 @@ public class V3Plan extends BaseEntity {
     /**
      * 排班日期
      */
-    private Date planTime;
+    private Date planDate;
 
     /**
      * 领料面积
@@ -42,5 +47,9 @@ public class V3Plan extends BaseEntity {
      */
     private Long jobNo;
 
+    /**
+     * 创建时间
+     */
+    private Date createTime;
 
 }

+ 62 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterBack.java

@@ -0,0 +1,62 @@
+package com.fjhx.entity.water;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.fjhx.base.StorageBaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 退料
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WaterBack extends StorageBaseEntity {
+
+
+    /**
+     * 操作数量
+     */
+    private Integer number;
+
+    /**
+     * 操作米数
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 0 未复核 1已复核
+     */
+    private Integer status;
+
+    /**
+     * 复核人id
+     */
+    private Long checkerId;
+
+    /**
+     * 复核时间
+     */
+    private Date checkerTime;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+    private String oldId;
+
+
+}

+ 66 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterBackDetails.java

@@ -0,0 +1,66 @@
+package com.fjhx.entity.water;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.fjhx.base.StorageBaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 退料明细
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WaterBackDetails extends StorageBaseEntity {
+
+
+    /**
+     * 退仓面料id
+     */
+    private Long waterBackId;
+
+    /**
+     * 物料id
+     */
+    private Long materialId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 原数量(复核之前米数)
+     */
+    private BigDecimal oldQuantity;
+
+    /**
+     * rfid
+     */
+    private String rfid;
+
+    /**
+     * 0 未复核 1已复核
+     */
+    private Integer status;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+    private String oldId;
+
+
+}

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

@@ -0,0 +1,22 @@
+package com.fjhx.params.water;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class WaterBackAddVo {
+
+    /**
+     * 物料id
+     */
+    private Long materialId;
+
+    /**
+     * 数量
+     */
+    private List<BigDecimal> quantityList;
+
+
+}

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

@@ -0,0 +1,17 @@
+package com.fjhx.params.water;
+
+import com.fjhx.entity.water.WaterBackDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 退料明细
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WaterBackDetailsEx extends WaterBackDetails {
+
+}

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

@@ -0,0 +1,17 @@
+package com.fjhx.params.water;
+
+import com.fjhx.entity.water.WaterBackDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 退料明细
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WaterBackDetailsVo extends WaterBackDetails {
+
+}

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

@@ -0,0 +1,17 @@
+package com.fjhx.params.water;
+
+import com.fjhx.entity.water.WaterBack;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 退料
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WaterBackEx extends WaterBack {
+
+}

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

@@ -0,0 +1,25 @@
+package com.fjhx.params.water;
+
+import com.fjhx.entity.water.WaterBack;
+import com.fjhx.entity.water.WaterBackDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 退料
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WaterBackVo extends WaterBack {
+
+    /**
+     * 退料明细
+     */
+    private List<WaterBackDetails> waterBackDetailsList;
+
+}

+ 29 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/task/ScheduleTaskController.java

@@ -0,0 +1,29 @@
+package com.fjhx.controller.task;
+
+import com.fjhx.service.v3.V3PlanService;
+import org.springblade.core.launch.BladeApplication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+@Configuration
+@EnableScheduling
+public class ScheduleTaskController {
+
+    @Autowired
+    private V3PlanService v3PlanService;
+
+    /**
+     * 获取排班面积
+     */
+//    @Scheduled(cron = "0 0/5 * * * ?")
+    @Scheduled(cron = "0 10 10 * * ?")
+    private void statisticsOfFabricUtilizationRate() {
+//        if (BladeApplication.isLocalDev()) {
+//            return;
+//        }
+        v3PlanService.statisticsOfFabricUtilizationRate(26);
+    }
+
+}

+ 23 - 23
hx-service/storage-restructure/src/main/java/com/fjhx/controller/v3/V3PlanController.java

@@ -28,29 +28,29 @@ public class V3PlanController {
     @Autowired
     private V3PlanService v3PlanService;
 
-    @PostMapping("/page")
-    public R page(@RequestBody Map<String, String> condition){
-        Page<V3Plan> result = v3PlanService.getPage(condition);
-        return R.success(result);
-    }
-
-    @PostMapping("/add")
-    public R add(@RequestBody V3PlanVo v3PlanVo){
-        v3PlanService.add(v3PlanVo);
-        return R.success();
-    }
-
-    @PostMapping("/edit")
-    public R edit(@RequestBody V3PlanVo v3PlanVo){
-        v3PlanService.edit(v3PlanVo);
-        return R.success();
-    }
-
-    @PostMapping("/delete")
-    public R delete(@RequestBody V3PlanVo v3PlanVo){
-        v3PlanService.delete(v3PlanVo);
-        return R.success();
-    }
+//    @PostMapping("/page")
+//    public R page(@RequestBody Map<String, String> condition){
+//        Page<V3Plan> result = v3PlanService.getPage(condition);
+//        return R.success(result);
+//    }
+//
+//    @PostMapping("/add")
+//    public R add(@RequestBody V3PlanVo v3PlanVo){
+//        v3PlanService.add(v3PlanVo);
+//        return R.success();
+//    }
+//
+//    @PostMapping("/edit")
+//    public R edit(@RequestBody V3PlanVo v3PlanVo){
+//        v3PlanService.edit(v3PlanVo);
+//        return R.success();
+//    }
+//
+//    @PostMapping("/delete")
+//    public R delete(@RequestBody V3PlanVo v3PlanVo){
+//        v3PlanService.delete(v3PlanVo);
+//        return R.success();
+//    }
 
 }
 

+ 78 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterBackController.java

@@ -0,0 +1,78 @@
+package com.fjhx.controller.water;
+
+import com.fjhx.entity.water.WaterBack;
+import com.fjhx.params.water.WaterBackAddVo;
+import com.fjhx.params.water.WaterBackVo;
+import com.fjhx.service.water.WaterBackService;
+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.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 退料 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@RestController
+@RequestMapping("/waterBack")
+public class WaterBackController {
+
+    @Autowired
+    private WaterBackService waterBackService;
+
+    /**
+     * 添加退货
+     */
+    @PostMapping("/add")
+    public R add(@RequestBody List<WaterBackAddVo> waterBackAddVoList) {
+        waterBackService.add(waterBackAddVoList);
+        return R.success();
+    }
+
+    /**
+     * 待复核列表
+     */
+    @PostMapping("/toBeReviewedList")
+    public R toBeReviewedList() {
+        List<Map<String, Object>> result = waterBackService.toBeReviewedList();
+        return R.success(result);
+    }
+
+    /**
+     * 明细
+     */
+    @PostMapping("/details")
+    public R details(@RequestBody WaterBack waterBack) {
+        List<Map<String, Object>> result = waterBackService.details(waterBack.getId());
+        return R.success(result);
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/delete")
+    public R delete(@RequestBody WaterBack waterBack) {
+        waterBackService.delete(waterBack.getId());
+        return R.success();
+    }
+
+    /**
+     * 提交
+     */
+    @PostMapping("/submit")
+    public R submit(@RequestBody WaterBackVo waterBackVo) {
+        waterBackService.submit(waterBackVo);
+        return R.success();
+    }
+
+}
+

+ 32 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterBackDetailsController.java

@@ -0,0 +1,32 @@
+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.WaterBackDetails;
+import com.fjhx.params.water.WaterBackDetailsVo;
+import com.fjhx.service.water.WaterBackDetailsService;
+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-10-27
+ */
+@RestController
+@RequestMapping("/waterBackDetails")
+public class WaterBackDetailsController {
+
+    @Autowired
+    private WaterBackDetailsService waterBackDetailsService;
+
+}
+

+ 8 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterDetailController.java

@@ -37,6 +37,14 @@ public class WaterDetailController {
         return R.success(result);
     }
 
+    /**
+     * 获取今日领料
+     */
+    @PostMapping("/getPickingToday")
+    public R getPickingToday() {
+        List<Map<String, Object>> result = waterDetailService.getPickingToday();
+        return R.success(result);
+    }
 
 }
 

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

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.water;
+
+import com.fjhx.entity.water.WaterBackDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 退料明细 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+public interface WaterBackDetailsMapper extends BaseMapper<WaterBackDetails> {
+
+}

+ 5 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBackDetailsMapper.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.mapper.water.WaterBackDetailsMapper">
+
+</mapper>

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

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.water;
+
+import com.fjhx.entity.water.WaterBack;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 退料 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+public interface WaterBackMapper extends BaseMapper<WaterBack> {
+
+}

+ 5 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterBackMapper.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.mapper.water.WaterBackMapper">
+
+</mapper>

+ 3 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/water/WaterDetailMapper.java

@@ -1,9 +1,9 @@
 package com.fjhx.mapper.water;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.water.WaterDetail;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -27,4 +27,6 @@ public interface WaterDetailMapper extends BaseMapper<WaterDetail> {
 
     Page<Map<String, Object>> pickingPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
 
+    List<Map<String, Object>> getPickingToday(@Param("ew") QueryWrapper<Object> wrapper);
+
 }

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

@@ -47,4 +47,11 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getPickingToday" resultType="java.util.Map">
+        select distinct m.id, m.name
+        from water_detail wd
+                 left join material m on m.id = wd.material_id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 3 - 13
hx-service/storage-restructure/src/main/java/com/fjhx/service/v3/V3PlanService.java

@@ -1,15 +1,11 @@
 package com.fjhx.service.v3;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.v3.V3Plan;
-import com.fjhx.params.v3.V3PlanVo;
 import com.fjhx.base.BaseService;
-
-import java.util.Map;
+import com.fjhx.entity.v3.V3Plan;
 
 /**
  * <p>
- *  服务类
+ * 服务类
  * </p>
  *
  * @author ${author}
@@ -17,12 +13,6 @@ import java.util.Map;
  */
 public interface V3PlanService extends BaseService<V3Plan> {
 
-    Page<V3Plan> getPage(Map<String, String> condition);
-
-    void add(V3PlanVo v3PlanVo);
-
-    void edit(V3PlanVo v3PlanVo);
-
-    void delete(V3PlanVo v3PlanVo);
+    void statisticsOfFabricUtilizationRate(int offset);
 
 }

+ 71 - 24
hx-service/storage-restructure/src/main/java/com/fjhx/service/v3/impl/V3PlanServiceImpl.java

@@ -1,21 +1,25 @@
 package com.fjhx.service.v3.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 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.entity.v3.V3Plan;
-import com.fjhx.params.v3.V3PlanVo;
 import com.fjhx.mapper.v3.V3PlanMapper;
 import com.fjhx.service.v3.V3PlanService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.GetV3DateUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author ${author}
@@ -24,31 +28,74 @@ import java.util.Map;
 @Service
 public class V3PlanServiceImpl extends ServiceImpl<V3PlanMapper, V3Plan> implements V3PlanService {
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public Page<V3Plan> getPage(Map<String, String> condition) {
+    public void statisticsOfFabricUtilizationRate(int offset) {
 
-        QueryWrapper<V3Plan> wrapper = Wrappers.query();
+        Date date = new Date();
 
-        WrapperUtil.init(condition, wrapper)
-                .createTimeDesc();
+        DateTime beginDate = DateUtil.beginOfDay(DateUtil.offsetDay(date, -offset));
+        DateTime endDate = DateUtil.endOfDay(date);
 
-        Page<V3Plan> page = page(condition, wrapper);
-        return page;
-    }
+        JSONArray planData = GetV3DateUtil.getPlanData(beginDate, endDate);
+        remove(Wrappers.<V3Plan>lambdaQuery().between(V3Plan::getPlanDate, beginDate, endDate));
 
-    @Override
-    public void add(V3PlanVo v3PlanVo) {
-        save(v3PlanVo);
-    }
+        Map<String, V3Plan> V3PlanMap = new HashMap<>();
+
+        for (Object planDatum : planData) {
+            JSONObject item = (JSONObject) planDatum;
+
+            // 喷印人员工号
+            Long distributor = item.getLong("distributor");
+            // 打纸人员工号
+            Long paperMan = item.getLong("paperMan");
+            // 排班面积
+            BigDecimal planTotalSquare = item.getBigDecimal("plantotalsquare");
+            // 物料名称
+            String material = item.getString("material");
+            // 排班时间
+            Date planDate = item.getDate("planDate");
+
+            // 喷印人员工号添加排班记录
+            addOrEditV3PlanMap(V3PlanMap, distributor, planTotalSquare, planDate, material, date);
+
+            // 打纸人员工号添加排班记录
+            addOrEditV3PlanMap(V3PlanMap, paperMan, planTotalSquare, planDate, "热转印纸", date);
+
+        }
+
+        List<V3Plan> v3PlanList = V3PlanMap.values().stream()
+                .sorted(Comparator.comparing(V3Plan::getPlanDate, Comparator.reverseOrder()))
+                .collect(Collectors.toList());
+
+        // 更新排班
+        saveBatch(v3PlanList);
 
-    @Override
-    public void edit(V3PlanVo v3PlanVo) {
-        updateById(v3PlanVo);
     }
 
-    @Override
-    public void delete(V3PlanVo v3PlanVo) {
-        removeById(v3PlanVo.getId());
+    /**
+     * 更新排班数据
+     */
+    private void addOrEditV3PlanMap(Map<String, V3Plan> flagMap, Long jobNo, BigDecimal planTotalSquare, Date planDate, String material, Date date) {
+        if (Objects.equals(jobNo, 0L)) {
+            return;
+        }
+
+        String key = jobNo + material + planDate;
+        V3Plan v3Plan = flagMap.get(key);
+
+        if (v3Plan == null) {
+            v3Plan = new V3Plan();
+            v3Plan.setPlanMaterial(material.trim());
+            v3Plan.setPlanDate(planDate);
+            v3Plan.setArea(planTotalSquare);
+            v3Plan.setJobNo(jobNo);
+            v3Plan.setCreateTime(date);
+
+            flagMap.put(key, v3Plan);
+        } else {
+            v3Plan.setArea(v3Plan.getArea().add(planTotalSquare));
+        }
     }
 
 }

+ 29 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterBackDetailsService.java

@@ -0,0 +1,29 @@
+package com.fjhx.service.water;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.StorageBaseService;
+import com.fjhx.entity.water.WaterBackDetails;
+import com.fjhx.params.water.WaterBackDetailsVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 退料明细 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+public interface WaterBackDetailsService extends StorageBaseService<WaterBackDetails> {
+
+    Page<WaterBackDetails> getPage(Map<String, String> condition);
+
+    void add(WaterBackDetailsVo waterBackDetailsVo);
+
+    void edit(WaterBackDetailsVo waterBackDetailsVo);
+
+    void delete(WaterBackDetailsVo waterBackDetailsVo);
+
+}

+ 48 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterBackService.java

@@ -0,0 +1,48 @@
+package com.fjhx.service.water;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.base.StorageBaseService;
+import com.fjhx.entity.water.WaterBack;
+import com.fjhx.params.water.WaterBackAddVo;
+import com.fjhx.params.water.WaterBackVo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 退料 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+public interface WaterBackService extends StorageBaseService<WaterBack> {
+
+    /**
+     * 添加退货列表
+     */
+    void add(List<WaterBackAddVo> waterBackAddVoList);
+
+    /**
+     * 待复核列表
+     */
+    List<Map<String, Object>> toBeReviewedList();
+
+    /**
+     * 明细
+     */
+    List<Map<String, Object>> details(Long waterBackId);
+
+    /**
+     * 删除
+     */
+    void delete(Long waterBackId);
+
+    /**
+     * 提交
+     */
+    void submit(WaterBackVo waterBackVo);
+
+}

+ 6 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterDetailService.java

@@ -2,9 +2,9 @@ package com.fjhx.service.water;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.Condition;
+import com.fjhx.base.StorageBaseService;
 import com.fjhx.entity.water.WaterDetail;
 import com.fjhx.entity.water.WaterTag;
-import com.fjhx.base.StorageBaseService;
 import com.fjhx.params.water.WaterVo;
 
 import java.util.List;
@@ -43,4 +43,9 @@ public interface WaterDetailService extends StorageBaseService<WaterDetail> {
      */
     Page<Map<String, Object>> pickingPage(Condition condition);
 
+    /**
+     * 今日领料
+     */
+    List<Map<String, Object>> getPickingToday();
+
 }

+ 54 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterBackDetailsServiceImpl.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.WaterBackDetails;
+import com.fjhx.params.water.WaterBackDetailsVo;
+import com.fjhx.mapper.water.WaterBackDetailsMapper;
+import com.fjhx.service.water.WaterBackDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 退料明细 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Service
+public class WaterBackDetailsServiceImpl extends ServiceImpl<WaterBackDetailsMapper, WaterBackDetails> implements WaterBackDetailsService {
+
+    @Override
+    public Page<WaterBackDetails> getPage(Map<String, String> condition) {
+
+        QueryWrapper<WaterBackDetails> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<WaterBackDetails> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(WaterBackDetailsVo waterBackDetailsVo) {
+        save(waterBackDetailsVo);
+    }
+
+    @Override
+    public void edit(WaterBackDetailsVo waterBackDetailsVo) {
+        updateById(waterBackDetailsVo);
+    }
+
+    @Override
+    public void delete(WaterBackDetailsVo waterBackDetailsVo) {
+        removeById(waterBackDetailsVo.getId());
+    }
+
+}

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

@@ -0,0 +1,165 @@
+package com.fjhx.service.water.impl;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.StorageBaseEntity;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.material.Material;
+import com.fjhx.entity.water.WaterBack;
+import com.fjhx.entity.water.WaterBackDetails;
+import com.fjhx.mapper.water.WaterBackMapper;
+import com.fjhx.params.water.WaterBackAddVo;
+import com.fjhx.params.water.WaterBackVo;
+import com.fjhx.service.material.MaterialService;
+import com.fjhx.service.water.WaterBackDetailsService;
+import com.fjhx.service.water.WaterBackService;
+import com.fjhx.utils.UserClientUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+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.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 退料 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-10-27
+ */
+@Service
+public class WaterBackServiceImpl extends ServiceImpl<WaterBackMapper, WaterBack> implements WaterBackService {
+
+    @Autowired
+    private WaterBackDetailsService waterBackDetailsService;
+
+    @Autowired
+    private MaterialService materialService;
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(List<WaterBackAddVo> waterBackAddVoList) {
+        WaterBack waterBack = new WaterBack();
+        waterBack.setNumber(
+                waterBackAddVoList.stream().map(item -> item.getQuantityList().size()).reduce(0, Integer::sum));
+        waterBack.setQuantity(waterBackAddVoList.stream()
+                .map(item -> item.getQuantityList().stream().reduce(BigDecimal.ZERO, BigDecimal::add))
+                .reduce(BigDecimal.ZERO, BigDecimal::add));
+        waterBack.setStatus(StatusConstant.NO);
+        save(waterBack);
+
+
+        List<WaterBackDetails> waterBackDetailsList = new ArrayList<>();
+        for (WaterBackAddVo waterBackAddVo : waterBackAddVoList) {
+            Long materialId = waterBackAddVo.getMaterialId();
+            List<BigDecimal> quantityList = waterBackAddVo.getQuantityList();
+
+            for (BigDecimal quantity : quantityList) {
+                WaterBackDetails waterBackDetails = new WaterBackDetails();
+                waterBackDetails.setWaterBackId(waterBack.getId());
+                waterBackDetails.setMaterialId(materialId);
+                waterBackDetails.setQuantity(quantity);
+                waterBackDetails.setOldQuantity(quantity);
+                waterBackDetails.setStatus(StatusConstant.NO);
+                waterBackDetailsList.add(waterBackDetails);
+            }
+        }
+        waterBackDetailsService.saveBatch(waterBackDetailsList);
+
+    }
+
+    @Override
+    public List<Map<String, Object>> toBeReviewedList() {
+        List<Map<String, Object>> list = listMaps(Wrappers.<WaterBack>lambdaQuery()
+                .eq(WaterBack::getStatus, StatusConstant.NO));
+
+        Map<Long, String> userNameMap = UserClientUtil.getUserNameMapFunctionLong(list,
+                item -> Convert.toLong(item.get("createUser")));
+
+        for (Map<String, Object> map : list) {
+            map.put("createUserName", userNameMap.get(Convert.toLong(map.get("createUser"))));
+        }
+
+        return list;
+    }
+
+    @Override
+    public List<Map<String, Object>> details(Long waterBackId) {
+        List<WaterBackDetails> list = waterBackDetailsService.list(WaterBackDetails::getWaterBackId, waterBackId);
+        if (list.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        Map<Long, Map<String, Object>> collect = list.stream().collect(Collectors.toMap(
+                WaterBackDetails::getMaterialId,
+                item -> {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("id", waterBackId);
+                    map.put("materialId", item.getMaterialId());
+                    map.put("list", Collections.singletonList(item));
+                    return map;
+                },
+                (v1, v2) -> {
+                    List<WaterBackDetails> item1List = new ArrayList<>((List<WaterBackDetails>) v1.get("list"));
+                    List<WaterBackDetails> item2List = new ArrayList<>((List<WaterBackDetails>) v2.get("list"));
+                    item1List.addAll(item2List);
+
+                    v1.put("list", item1List);
+                    return v1;
+                }
+        ));
+
+        // 查询物料名称
+        Map<Long, String> materialNameMap = materialService.listByIds(collect.keySet()).stream()
+                .collect(Collectors.toMap(StorageBaseEntity::getId, Material::getName));
+
+        List<Map<String, Object>> result = new ArrayList<>(collect.values());
+
+        // 赋值物料名称
+        for (Map<String, Object> map : result) {
+            map.put("materialName", materialNameMap.get(Convert.toLong(map.get("materialId"))));
+        }
+
+        return result;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(Long waterBackId) {
+        removeById(waterBackId);
+        waterBackDetailsService.remove(WaterBackDetails::getWaterBackId, waterBackId);
+    }
+
+    @Override
+    public void submit(WaterBackVo waterBackVo) {
+        Long waterBackId = waterBackVo.getId();
+        waterBackVo.setStatus(StatusConstant.YES);
+        waterBackVo.setCheckerId(AuthUtil.getUserId());
+        waterBackVo.setCheckerTime(new Date());
+        updateById(waterBackVo);
+
+        List<WaterBackDetails> waterBackDetailsList = waterBackVo.getWaterBackDetailsList();
+
+        for (WaterBackDetails waterBackDetails : waterBackDetailsList) {
+            waterBackDetails.setStatus(StatusConstant.YES);
+            if (ObjectUtil.isEmpty(waterBackDetails.getId())) {
+                waterBackDetails.setWaterBackId(waterBackId);
+                waterBackDetails.setOldQuantity(BigDecimal.ZERO);
+            }
+        }
+        waterBackDetailsService.saveOrUpdateBatch(waterBackDetailsList);
+
+        List<Long> waterBackIdList = waterBackDetailsList.stream().map(StorageBaseEntity::getId).collect(Collectors.toList());
+
+        waterBackDetailsService.remove(Wrappers.<WaterBackDetails>lambdaQuery()
+                .eq(WaterBackDetails::getWaterBackId, waterBackId)
+                .notIn(StorageBaseEntity::getId, waterBackIdList));
+    }
+
+}

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

@@ -1,6 +1,7 @@
 package com.fjhx.service.water.impl;
 
 import cn.hutool.core.convert.Convert;
+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;
@@ -17,6 +18,7 @@ import com.fjhx.mapper.water.WaterDetailMapper;
 import com.fjhx.params.water.WaterVo;
 import com.fjhx.service.water.WaterDetailService;
 import com.fjhx.utils.UserClientUtil;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -253,6 +255,21 @@ public class WaterDetailServiceImpl extends ServiceImpl<WaterDetailMapper, Water
         return page;
     }
 
+    @Override
+    public List<Map<String, Object>> getPickingToday() {
+        Long userId = AuthUtil.getUserId();
+        Date date = new Date();
+        Date beginTime = DateUtil.beginOfDay(date);
+        Date endTime = DateUtil.endOfDay(date);
+
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        wrapper.eq("wd.oper_user_id", userId);
+        wrapper.eq("wd.del_flag", StatusConstant.NOT_DELETED);
+        wrapper.between("wd.create_time", beginTime, endTime);
+
+        return baseMapper.getPickingToday(wrapper);
+    }
+
     private QueryWrapper<Object> getPickingWrapper(Condition condition) {
         Date beginTime = condition.getBeginTime();
         Date endTime = condition.getEndTime();

+ 48 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/utils/GetV3DateUtil.java

@@ -0,0 +1,48 @@
+package com.fjhx.utils;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Date;
+
+public class GetV3DateUtil {
+
+    private static final String URL_PREFIX = "http://mes.cfmfactory.com:8087/";
+    private static final RestTemplate restTemplate = new RestTemplate();
+
+    /**
+     * 获取token
+     */
+    public static String getToken() {
+        String url = URL_PREFIX + "portal/getAccessTokenAction.do?AppId=1&AppSecret=a2b1c2d3";
+        String result = restTemplate.getForEntity(url, String.class).getBody();
+        if (ObjectUtil.isEmpty(result)) {
+            return "";
+        }
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        return jsonObject.getString("token");
+    }
+
+    /**
+     * 获取排班数据
+     */
+    public static JSONArray getPlanData(Date beginDate, Date endDate) {
+        // 请求v3接口获取token
+        String token = getToken();
+
+        String beginDateStr = DateUtil.format(beginDate, "yyyy-MM-dd HH:mm:ss");
+        String endDateStr = DateUtil.format(endDate, "yyyy-MM-dd HH:mm:ss");
+
+        String url = URL_PREFIX + "MesWeb/planPersonOutAction.do?action=list&beginDate="
+                + beginDateStr + "&endDate=" + endDateStr + "&access_token=" + token;
+
+        JSONObject result = JSONObject.parseObject(restTemplate.getForEntity(url, String.class).getBody());
+
+        // 接收到的消息
+        return result.getJSONArray("items");
+    }
+
+}

+ 1 - 1
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockDetailServiceImpl.java

@@ -548,7 +548,7 @@ public class StockDetailServiceImpl extends ServiceImpl<StockDetailMapper, Stock
         // 排班面积
         BigDecimal planArea = list.stream()
                 .map(item -> BigDecimalUtil.init(item.get("quantity"))
-                        .multiply(codeWidthMap.get(item.get("code").toString()))
+                        .multiply(ObjectUtil.defaultIfNull(codeWidthMap.get(item.get("code").toString()), BigDecimal.ZERO))
                         .divide(100, 2)
                         .getValue())
                 .reduce(BigDecimal.ZERO, BigDecimal::add);