home преди 2 години
родител
ревизия
1902bb1954

+ 8 - 0
bladex/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -54,6 +54,7 @@ public interface IUserClient {
     String UPDATE_USER_BY_ID = API_PREFIX + "/user-update-by-id";
     String GET_USER_INFO_BY_APPLET_OPEN_ID = API_PREFIX + "/get-user-info-by-id";
     String GET_TENANT_USER_NUM = API_PREFIX + "/get-tenant-user-num";
+    String GET_OPENID_BY_ACCOUNT = API_PREFIX + "/get-openid-by-account";
 
 
     /**
@@ -161,4 +162,11 @@ public interface IUserClient {
     @GetMapping(GET_TENANT_USER_NUM)
     Map<String, Long> getTenantUserNum(@RequestParam("tenantIdList") List<String> tenantIdList);
 
+    /**
+     * 根据jobNo获取openId
+     */
+    @GetMapping(GET_OPENID_BY_ACCOUNT)
+    Map<String, String> getOpenidByAccount(@RequestParam("account") List<String> account);
+
+
 }

+ 6 - 0
bladex/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -118,4 +118,10 @@ public class UserClient implements IUserClient {
         return service.getTenantUserNum(tenantIdList);
     }
 
+    @GetMapping(GET_OPENID_BY_ACCOUNT)
+    @Override
+    public Map<String, String> getOpenidByAccount(List<String> account) {
+        return service.getOpenidByAccount(account);
+    }
+
 }

+ 2 - 0
bladex/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java

@@ -213,4 +213,6 @@ public interface IUserService extends BaseService<User> {
 
     Map<String, Long> getTenantUserNum(List<String> tenantIdList);
 
+    Map<String, String> getOpenidByAccount(List<String> account);
+
 }

+ 12 - 0
bladex/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -33,6 +33,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.BladeTenantProperties;
+import org.springblade.core.tenant.mp.TenantEntity;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.jackson.JsonUtil;
@@ -465,4 +466,15 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         );
     }
 
+    @Override
+    public Map<String, String> getOpenidByAccount(List<String> account) {
+        List<User> list = list(Wrappers.<User>lambdaQuery()
+                .select(User::getAppletOpenId, User::getAccount)
+                .eq(TenantEntity::getTenantId, AuthUtil.getTenantId())
+                .in(User::getAccount, account)
+        );
+
+        return list.stream().collect(Collectors.toMap(User::getAccount, User::getAppletOpenId));
+    }
+
 }

+ 5 - 0
hx-service/storage/pom.xml

@@ -33,6 +33,11 @@
             <artifactId>aliyun-sdk-oss</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-user-api</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

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

@@ -15,4 +15,6 @@ public interface MaterialReceiveMapper extends BaseMapper<BaseEntity> {
 
     List<Map<String, Object>> getList(@Param("jobNo") String jobNo);
 
+    Integer countNum(@Param("account") String account);
+
 }

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

@@ -6,17 +6,22 @@
     <select id="selectWaterDetail" resultType="java.util.Map">
         select swd.ID              id,
                swd.StockChangeType stockChangeType,
-               uu.JobNo            jobNo
+               aa.AccountNo        account,
+               swd.WaterId         waterId,
+               aa.ID               userId
         from stock_waterdetial swd
-                 left join u_user uu on swd.OperUserId = uu.ID
+                 left join acc_account aa on swd.OperUserId = aa.ID
         where swd.InOutDevice = 1
           and swd.material_receive = 0
-          and (swd.StockChangeType = 20 or (swd.StockChangeType = 23 and uu.RoleKey in ('sewing', 'crop')))
+          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>
 
@@ -34,4 +39,12 @@
           and uu.JobNo = #{jobNo}
     </select>
 
+    <select id="countNum" resultType="java.lang.Integer">
+        select count(0)
+        from stock_waterdetial swd
+                 inner join acc_account aa on swd.OperUserId = aa.ID
+        where swd.material_receive = 2
+          and aa.AccountNo = #{account}
+    </select>
+
 </mapper>

+ 53 - 12
hx-service/storage/src/main/java/com/fjhx/applet/service/impl/MaterialReceiveServiceImpl.java

@@ -1,49 +1,90 @@
 package com.fjhx.applet.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.applet.mapper.MaterialReceiveMapper;
 import com.fjhx.applet.service.MaterialReceiveService;
 import com.fjhx.base.BaseEntity;
 import com.fjhx.utils.Assert;
+import com.fjhx.utils.WxAppletUtil;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Map;
-import java.util.StringJoiner;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
 public class MaterialReceiveServiceImpl extends ServiceImpl<MaterialReceiveMapper, BaseEntity> implements MaterialReceiveService {
 
+
+    @Autowired
+    private IUserClient userClient;
+
     @Override
     public synchronized void submit() {
 
         List<Map<String, Object>> list = baseMapper.selectWaterDetail();
 
-
         Map<Integer, List<Map<String, Object>>> stockChangeType =
                 list.stream().collect(Collectors.groupingBy(item -> (Integer) item.get("stockChangeType")));
 
-        StringJoiner outJoiner = new StringJoiner(",", "(", ")");
-        // 出库处理
-        List<Map<String, Object>> outList = stockChangeType.get(20);
+        // 补出库处理
+        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) {
-                // TODO 发起审批流
                 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();
+
+
+
+            }
+
+
+            // 物料接收待审批
             baseMapper.updateReceive(outJoiner.toString(), 1);
         }
 
-        // 补出库处理
-        StringJoiner repairJoiner = new StringJoiner(",", "(", ")");
-        List<Map<String, Object>> repairList = stockChangeType.get(23);
+        // 出库处理
+        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) {
-                // TODO 发送消息
                 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) {
+                String openId = accountMap.get(account);
+                // 发送消息
+                if (ObjectUtil.isNotEmpty(openId)) {
+                    Integer num = baseMapper.countNum(account);
+                    WxAppletUtil.UniformSendEntity uniformSendEntity = new WxAppletUtil.UniformSendEntity();
+                    uniformSendEntity.setTouser(openId);
+                    uniformSendEntity.setTemplate_id("Tt0C6SOrtd2QXIdLqrm0CNdarUE4LG_lNJblUnkqTPM");
+                    uniformSendEntity.setPage("pages/user/login");
+                    uniformSendEntity.addData("thing1", "智能仓储");
+                    uniformSendEntity.addData("thing2", "您有" + num + "条待接收物料");
+                    uniformSendEntity.addData("time3", DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm"));
+                    WxAppletUtil.sendMessage(uniformSendEntity);
+                }
+            }
+
         }
     }