home 2 年之前
父节点
当前提交
338c98a23d

+ 12 - 2
hx-service/storage/src/main/java/com/fjhx/applet/controller/MaterialReceiveController.java

@@ -22,8 +22,8 @@ public class MaterialReceiveController {
      * 手持机出库提交
      */
     @PostMapping("/submit")
-    public R submit() {
-        materialReceiveService.submit();
+    public R submit(@RequestBody Map<String, String> condition) {
+        materialReceiveService.submit(condition.get("checkUserId"));
         return R.success();
     }
 
@@ -39,5 +39,15 @@ public class MaterialReceiveController {
         return R.success();
     }
 
+    @PostMapping("flowDetails")
+    public R flowDetails(@RequestBody Map<String, String> condition) {
+        return R.success(materialReceiveService.flowDetails(condition));
+    }
+
+    @PostMapping("handleFlow")
+    public R handleFlow(@RequestBody Map<String, String> condition) {
+        materialReceiveService.handleFlow(condition);
+        return R.success();
+    }
 
 }

+ 22 - 1
hx-service/storage/src/main/java/com/fjhx/applet/mapper/MaterialReceiveMapper.java

@@ -11,10 +11,31 @@ public interface MaterialReceiveMapper extends BaseMapper<BaseEntity> {
 
     List<Map<String, Object>> selectWaterDetail();
 
-    void updateReceive(@Param("idJoin") String idJoin, @Param("status") Integer status);
+    void updateReceive(@Param("idList") List<String> idList,
+                       @Param("ApproveBillState") Integer ApproveBillState,
+                       @Param("StockChangeType") Integer StockChangeType,
+                       @Param("PickingStatus") Integer PickingStatus,
+                       @Param("FlowLinkId") String FlowLinkId
+    );
 
     List<Map<String, Object>> getList(@Param("jobNo") String jobNo);
 
     Integer countNum(@Param("account") String account);
 
+    void insertFlowApplyCheck(@Param("id") String id,
+                              @Param("flowId") String flowId,
+                              @Param("nodeId") String nodeId,
+                              @Param("preNodeId") String preNodeId,
+                              @Param("nextNodeId") String nextNodeId,
+                              @Param("checkUserId") String checkUserId,
+                              @Param("checkState") String checkState,
+                              @Param("suggestions") String suggestions,
+                              @Param("linkId") String linkId,
+                              @Param("approvalItem") String approvalItem
+    );
+
+    List<Map<String, Object>> flowDetails(@Param("linkId") String linkId);
+
+    void updatePickingStatus(@Param("flowLinkId") String flowLinkId, @Param("checkState") String checkState);
+
 }

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

@@ -2,27 +2,50 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.applet.mapper.MaterialReceiveMapper">
 
-
     <select id="selectWaterDetail" resultType="java.util.Map">
         select swd.ID              id,
                swd.StockChangeType stockChangeType,
                aa.AccountNo        account,
                swd.WaterId         waterId,
                aa.ID               userId
-        from stock_waterdetial swd
+        from stock_waterdetial_copy1 swd
                  left join acc_account aa on swd.OperUserId = aa.ID
         where swd.InOutDevice = 1
-          and swd.material_receive = 0
+          and swd.ApproveBillState = 0
           and swd.StockChangeType in (29, 30)
     </select>
 
     <update id="updateReceive">
-        update stock_waterdetial
-        set material_receive = #{status}
-        <if test="status = 3">
-            ,StockChangeType = if(StockChangeType = 29,23,20)
-        </if>
-        where id in ${idJoin}
+        update stock_waterdetial_copy1
+        <set>
+            <if test="ApproveBillState neq null">
+                ApproveBillState = #{ApproveBillState}
+            </if>
+            <if test="StockChangeType neq null">
+                ,StockChangeType = #{StockChangeType}
+            </if>
+            <if test="PickingStatus neq null">
+                ,PickingStatus = #{PickingStatus}
+            </if>
+            <if test="FlowLinkId neq null">
+                ,FlowLinkId = #{FlowLinkId}
+            </if>
+        </set>
+        where id in
+        <foreach item="idList" collection="list" separator="," open="(" close=")">
+            #{idList}
+        </foreach>
+    </update>
+
+    <update id="updatePickingStatus">
+        update stock_waterdetial_copy1
+        <set>
+            ApproveBillState = #{checkState}
+            <if test="ApproveBillState eq '2' ">
+                ,PickingStatus = '2'
+            </if>
+        </set>
+        where flowLinkId = #{flowLinkId}
     </update>
 
     <select id="getList" resultType="java.util.Map">
@@ -32,19 +55,51 @@
                m.Name          materialName,
                m.Code          materialCode,
                uu.RealName     realName
-        from stock_waterdetial swd
+        from stock_waterdetial_copy1 swd
                  left join material m on swd.MaterialCode = m.code
                  left join u_user uu on swd.OperUserId = uu.ID
-        where swd.material_receive = 2
+        where swd.PickingStatus = 2
           and uu.JobNo = #{jobNo}
     </select>
 
     <select id="countNum" resultType="java.lang.Integer">
         select count(0)
-        from stock_waterdetial swd
+        from stock_waterdetial_copy1 swd
                  inner join acc_account aa on swd.OperUserId = aa.ID
-        where swd.material_receive = 2
+        where swd.PickingStatus = 2
           and aa.AccountNo = #{account}
     </select>
 
+    <select id="flowDetails" resultType="java.util.Map">
+        select m.Name          materialName,
+               m.Code          materialCode,
+               swd.CreatedTime createTime,
+               swd.ChangeNum   changeNum,
+               sw.Remark       remark,
+               uu.RealName     realName
+        from stock_waterdetial_copy1 swd
+                 left join material m on swd.MaterialCode = m.code
+                 left join stock_water sw on swd.WaterId = sw.ID
+                 left join u_user uu on swd.OperUserId = uu.ID
+        where swd.FlowLinkId = #{linkId}
+    </select>
+
+    <insert id="insertFlowApplyCheck">
+        insert into flow_applycheck(id, IsDelete, CreatedTime, UpdatedTime, FlowId, NodeId, PreNodeId, NextNodeId,
+                                    CheckUserId, CheckState, Suggestions, LinkId, ApprovalItem)
+        values (#{id},
+                0,
+                now(),
+                now(),
+                #{flowId},
+                #{nodeId},
+                #{preNodeId},
+                #{nextNodeId},
+                #{checkUserId},
+                #{checkState},
+                #{suggestions},
+                #{linkId},
+                #{approvalItem})
+    </insert>
+
 </mapper>

+ 5 - 1
hx-service/storage/src/main/java/com/fjhx/applet/service/MaterialReceiveService.java

@@ -8,10 +8,14 @@ import java.util.Map;
 
 public interface MaterialReceiveService extends BaseService<BaseEntity> {
 
-    void submit();
+    void submit(String checkUserId);
 
     List<Map<String, Object>> getList(String jobNo);
 
     void operation(Map<String, Object> condition);
 
+    List<Map<String, Object>> flowDetails(Map<String, String> condition);
+
+    void handleFlow(Map<String, String> condition);
+
 }

+ 65 - 32
hx-service/storage/src/main/java/com/fjhx/applet/service/impl/MaterialReceiveServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.applet.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.applet.mapper.MaterialReceiveMapper;
 import com.fjhx.applet.service.MaterialReceiveService;
@@ -12,7 +13,9 @@ import org.springblade.system.user.feign.IUserClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -23,7 +26,7 @@ public class MaterialReceiveServiceImpl extends ServiceImpl<MaterialReceiveMappe
     private IUserClient userClient;
 
     @Override
-    public synchronized void submit() {
+    public synchronized void submit(String checkUserId) {
 
         List<Map<String, Object>> list = baseMapper.selectWaterDetail();
 
@@ -33,44 +36,40 @@ public class MaterialReceiveServiceImpl extends ServiceImpl<MaterialReceiveMappe
         // 补出库处理
         List<Map<String, Object>> outList = stockChangeType.get(29);
         if (outList != null) {
-            StringJoiner outJoiner = new StringJoiner(",", "(", ")");
-            HashSet<String> waterIdSet = new HashSet<>();
-
-            for (Map<String, Object> map : outList) {
-                outJoiner.add(map.get("id").toString());
-                waterIdSet.add(map.get("waterId").toString() + "," + map.get("userId").toString());
-            }
-
-            // TODO 发起审批流
-            if (waterIdSet.size() > 0) {
-                String uuid = UUID.randomUUID().toString();
-
-
-            }
 
+            // 流程关联id
+            String flowLinkId = list.get(0).get("id").toString();
+
+            // 发起审批流
+            baseMapper.insertFlowApplyCheck(
+                    IdWorker.getIdStr(),
+                    "202208240000000000000000001",
+                    "20220824000000000000000000101",
+                    null,
+                    "20220824000000000000000000102",
+                    checkUserId,
+                    "0",
+                    null,
+                    flowLinkId,
+                    "物料接收"
+            );
 
             // 物料接收待审批
-            baseMapper.updateReceive(outJoiner.toString(), 1);
+            List<String> idList = outList.stream().map(item -> item.get("id").toString()).collect(Collectors.toList());
+            baseMapper.updateReceive(idList, 0, 23, 1, flowLinkId);
         }
 
         // 出库处理
         List<Map<String, Object>> repairList = stockChangeType.get(30);
         if (repairList != null) {
-            StringJoiner repairJoiner = new StringJoiner(",", "(", ")");
-            HashSet<String> accountSet = new HashSet<>();
-            for (Map<String, Object> map : repairList) {
-                repairJoiner.add(map.get("id").toString());
-                accountSet.add(map.get("account").toString());
-            }
-
-            // 物料接收待确认
-            baseMapper.updateReceive(repairJoiner.toString(), 2);
 
             // 获取openId
-            Map<String, String> accountMap = userClient.getOpenidByAccount(new ArrayList<>(accountSet));
-            for (String account : accountSet) {
+            List<String> accountList = repairList.stream()
+                    .map(item -> item.get("account").toString()).distinct().collect(Collectors.toList());
+            Map<String, String> accountMap = userClient.getOpenidByAccount(accountList);
+            // 发送小程序推送
+            for (String account : accountList) {
                 String openId = accountMap.get(account);
-                // 发送消息
                 if (ObjectUtil.isNotEmpty(openId)) {
                     Integer num = baseMapper.countNum(account);
                     WxAppletUtil.UniformSendEntity uniformSendEntity = new WxAppletUtil.UniformSendEntity();
@@ -84,6 +83,8 @@ public class MaterialReceiveServiceImpl extends ServiceImpl<MaterialReceiveMappe
                 }
             }
 
+            List<String> idList = repairList.stream().map(item -> item.get("id").toString()).collect(Collectors.toList());
+            baseMapper.updateReceive(idList, null, 20, 2, null);
         }
     }
 
@@ -101,10 +102,42 @@ public class MaterialReceiveServiceImpl extends ServiceImpl<MaterialReceiveMappe
         Assert.notEmpty(idList, "id列表不能为空");
         Assert.notEmpty(operation, "操作类型不能为空");
 
-        StringJoiner idJoiner = new StringJoiner(",", "(", ")");
-        idList.forEach(idJoiner::add);
+        baseMapper.updateReceive(idList, null, null, operation, null);
+    }
+
+    @Override
+    public List<Map<String, Object>> flowDetails(Map<String, String> condition) {
+        String flowLinkId = condition.get("flowLinkId");
+        return baseMapper.flowDetails(flowLinkId);
+    }
+
+    @Override
+    public void handleFlow(Map<String, String> condition) {
+        // 操作人id
+        String checkUserId = condition.get("checkUserId");
+        // 流程关联id
+        String flowLinkId = condition.get("flowLinkId");
+        // 2=审批通过,3=审批驳回
+        String checkState = condition.get("checkState");
+        // 审批意见
+        String suggestions = condition.get("suggestions");
+
+        // 发起审批流
+        baseMapper.insertFlowApplyCheck(
+                IdWorker.getIdStr(),
+                "202208240000000000000000001",
+                "20220824000000000000000000102",
+                "20220824000000000000000000101",
+                null,
+                checkUserId,
+                checkState,
+                suggestions,
+                flowLinkId,
+                "物料接收"
+        );
+
+        baseMapper.updatePickingStatus(flowLinkId, checkState);
 
-        baseMapper.updateReceive(idJoiner.toString(), operation);
     }
 
 }