Jelajahi Sumber

杰生重构

home 2 tahun lalu
induk
melakukan
37ddff75e0

+ 5 - 6
hx-common/service-flow/src/main/java/com/fjhx/controller/example/ExampleInfoController.java

@@ -1,6 +1,5 @@
 package com.fjhx.controller.example;
 
-import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.example.ExampleInfo;
 import com.fjhx.service.example.ExampleInfoService;
@@ -69,9 +68,9 @@ public class ExampleInfoController {
      * 撤回
      */
     @PostMapping("/withdraw")
-    public R withdraw(Map<String, String> condition) {
-        Long withdrawExampleInfoId = Convert.toLong(condition.get("withdrawExampleInfoId"));
-        Long withdrawExampleDetailsId = Convert.toLong(condition.get("withdrawExampleDetailsId"));
+    public R withdraw(Map<String, Long> condition) {
+        Long withdrawExampleInfoId = condition.get("withdrawExampleInfoId");
+        Long withdrawExampleDetailsId = condition.get("withdrawExampleDetailsId");
         exampleInfoService.withdraw(withdrawExampleInfoId, withdrawExampleDetailsId);
         return R.success();
     }
@@ -80,8 +79,8 @@ public class ExampleInfoController {
      * 撤销
      */
     @PostMapping("/revoke")
-    public R revoke(Map<String, String> condition) {
-        Long withdrawExampleInfoId = Convert.toLong(condition.get("withdrawExampleInfoId"));
+    public R revoke(Map<String, Long> condition) {
+        Long withdrawExampleInfoId = condition.get("withdrawExampleInfoId");
         exampleInfoService.revoke(withdrawExampleInfoId);
         return R.success();
     }

+ 9 - 2
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockCorrect.java

@@ -1,5 +1,6 @@
 package com.fjhx.entity.stock;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import java.util.Date;
@@ -18,9 +19,15 @@ import lombok.EqualsAndHashCode;
  * @since 2022-11-09
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
-public class StockCorrect extends BaseEntity {
+public class StockCorrect implements Serializable {
 
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
 
     /**
      * 修正日期

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

@@ -4,9 +4,9 @@ import com.fjhx.entity.stock.StockBackDetails;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.Date;
+
 /**
- * 
- *
  * @author ${author}
  * @since 2022-08-31
  */
@@ -14,4 +14,9 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class StockBackDetailsVo extends StockBackDetails {
 
+    /**
+     * 操作时间
+     */
+    private Date operationTime;
+
 }

+ 35 - 0
hx-service/ding/pom.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>hx-service</artifactId>
+        <groupId>com.fjhx</groupId>
+        <version>3.2.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ding</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dingtalk</artifactId>
+            <version>1.4.69</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.taobao</groupId>
+            <artifactId>taobao-sdk</artifactId>
+            <version>20201116</version>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 78 - 0
hx-service/ding/src/main/java/com/fjhx/utils/DingUtil.java

@@ -0,0 +1,78 @@
+package com.fjhx.utils;
+
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiServiceGetCorpTokenRequest;
+import com.dingtalk.api.request.OapiV2DepartmentGetRequest;
+import com.dingtalk.api.request.OapiV2DepartmentListsubRequest;
+import com.dingtalk.api.request.OapiV2UserGetRequest;
+import com.dingtalk.api.response.OapiServiceGetCorpTokenResponse;
+import com.dingtalk.api.response.OapiV2DepartmentGetResponse;
+import com.dingtalk.api.response.OapiV2DepartmentListsubResponse;
+import com.dingtalk.api.response.OapiV2UserGetResponse;
+import com.taobao.api.ApiException;
+
+import java.util.List;
+
+public class DingUtil {
+
+    private static final String accessKey = "suitepgu4shlatgllyiqp";
+    private static final String accessSecret = "52-_2aKc3WGd8qVX5FRFmR6MnkeAOi6seUKYxjMWBCeiXZJ0l01_YaDfABIP-hmk";
+
+    public static void main(String[] args) throws ApiException {
+        OapiServiceGetCorpTokenResponse corpToken = getCorpToken("ding53d823e205604918a39a90f97fcb1e09",
+                "R9lsfWBExszmJuiJwF8gd3LQ31YUnUaPRQ0L0W4CsslEsyM1L5GVfLXPJExnhbqRsLntMnFp7KYCha9msIjRCY");
+
+        if (corpToken.getErrcode().equals(0L)) {
+            String accessToken = corpToken.getAccessToken();
+            getDeptList(accessToken, 1L);
+
+        }
+    }
+
+    /**
+     * 获取token
+     */
+    public static OapiServiceGetCorpTokenResponse getCorpToken(String authCorpid, String suiteTicket) throws ApiException {
+
+        DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_corp_token");
+        OapiServiceGetCorpTokenRequest req = new OapiServiceGetCorpTokenRequest();
+        req.setAuthCorpid(authCorpid);
+
+        return client.execute(req, accessKey, accessSecret, suiteTicket);
+    }
+
+    public static void getDeptList(String accessToken, Long deptId) throws ApiException {
+        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub");
+        OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
+        req.setDeptId(deptId);
+        OapiV2DepartmentListsubResponse rsp = client.execute(req, accessToken);
+
+        List<OapiV2DepartmentListsubResponse.DeptBaseResponse> result = rsp.getResult();
+
+        for (OapiV2DepartmentListsubResponse.DeptBaseResponse deptBaseResponse : result) {
+            getDeptList(accessToken, deptBaseResponse.getDeptId());
+
+            getDeptDetails(accessToken,deptBaseResponse.getDeptId());
+        }
+
+    }
+
+    public static void getDeptDetails(String accessToken, Long deptId) throws ApiException {
+        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/get");
+        OapiV2DepartmentGetRequest req = new OapiV2DepartmentGetRequest();
+        req.setDeptId(deptId);
+        OapiV2DepartmentGetResponse rsp = client.execute(req, accessToken);
+        System.out.println(rsp.getBody());
+    }
+
+
+    public static void getUser(String accessToken, String userId) throws ApiException {
+        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
+        OapiV2UserGetRequest req = new OapiV2UserGetRequest();
+        req.setUserid(userId);
+        OapiV2UserGetResponse rsp = client.execute(req, accessToken);
+        System.out.println(rsp.getBody());
+    }
+
+}

+ 1 - 0
hx-service/pom.xml

@@ -30,6 +30,7 @@
         <module>foreign-trade-superman</module>
         <module>crm</module>
         <module>dev-ops</module>
+        <module>ding</module>
     </modules>
 
     <dependencyManagement>

+ 27 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/check/CheckController.java

@@ -169,5 +169,32 @@ public class CheckController {
         return R.success(result);
     }
 
+    /**
+     * 库存管理盘点记录 异常物料分页
+     */
+    @PostMapping("errorMaterialTagPage")
+    public R errorMaterialTagPage(@RequestBody Condition condition) {
+        Page<Map<String, Object>> result = checkInfoService.errorMaterialTagPage(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 盘点结果统计
+     */
+    @PostMapping("checkResultStatistics")
+    public R checkResultStatistics(@RequestBody Condition condition) {
+        Map<String, Object> result = checkInfoService.checkResultStatistics(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 查看物料分页
+     */
+    @PostMapping("materialDetailPage")
+    public R materialDetailPage(@RequestBody Condition condition) {
+        Page<Map<String, Object>> result = checkInfoService.materialDetailPage(condition);
+        return R.success(result);
+    }
+
 }
 

+ 7 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/check/CheckInfoMapper.java

@@ -1,9 +1,9 @@
 package com.fjhx.mapper.check;
 
 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.check.CheckInfo;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -39,4 +39,10 @@ public interface CheckInfoMapper extends BaseMapper<CheckInfo> {
 
     Page<Map<String, Object>> errorMaterialPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
 
+    Page<Map<String, Object>> errorMaterialTagPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
+
+    Page<Map<String, Object>> materialDetailPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
+
+    Map<String, Object> checkResultStatistics(@Param("ew") QueryWrapper<Object> wrapper);
+
 }

+ 49 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/check/CheckInfoMapper.xml

@@ -162,4 +162,53 @@
         where cd2.check_result = 0
     </select>
 
+    <select id="errorMaterialTagPage" resultType="java.util.Map">
+        select sh.name                                                    houseName,
+               m.code                                                     materialCode,
+               m.name                                                     materialName,
+               m.purpose,
+               ct.rfid_code,
+               ct.quantity,
+               ct.tag_status,
+               ct.handle_type,
+               if(ct.handle_type = 11, ct.quantity * m.price,
+                  if(ct.handle_type = 21, - ct.quantity * m.price, null)) money,
+               ci.create_time,
+               ci.oper_user_id
+        from check_detail cd
+                 left join check_info ci on cd.check_id = ci.id
+                 left join check_tag ct on cd.id = ct.check_detail_id
+                 left join material m on cd.material_id = m.id
+                 left join stock_house sh on cd.stock_house_id = sh.id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="materialDetailPage" resultType="java.util.Map">
+        select m.id   materialId,
+               m.technology_type,
+               m.purpose,
+               m.code materialCode,
+               m.name materialName,
+               cd.stock_count,
+               cd.scan_count,
+               cd.check_count,
+               cd.hand_count,
+               cd.check_result,
+               ci.create_time,
+               ci.oper_user_id,
+               cd.id
+        from check_info ci
+                 left join check_detail cd on cd.check_id = ci.id
+                 left join material m on cd.material_id = m.id
+            ${ew.customSqlSegment}
+    </select>
+    <select id="checkResultStatistics" resultType="java.util.Map">
+        select ifnull(sum(if(cd.check_result = 1, 1, 0)), 0) normalCount,
+               ifnull(sum(if(cd.check_result = 0, 1, 0)), 0) errorCount
+        from check_info ci
+                 left join check_detail cd on cd.check_id = ci.id
+                 left join material m on cd.material_id = m.id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 15 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/check/CheckInfoService.java

@@ -101,4 +101,19 @@ public interface CheckInfoService extends StorageBaseService<CheckInfo> {
      */
     Page<Map<String, Object>> errorMaterialPage(Condition condition);
 
+    /**
+     * 异常物料标签分页
+     */
+    Page<Map<String, Object>> errorMaterialTagPage(Condition condition);
+
+    /**
+     * 盘点结果统计
+     */
+    Map<String, Object> checkResultStatistics(Condition condition);
+
+    /**
+     * 查看物料分页
+     */
+    Page<Map<String, Object>> materialDetailPage(Condition condition);
+
 }

+ 51 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/service/check/impl/CheckInfoServiceImpl.java

@@ -24,6 +24,7 @@ import com.fjhx.service.check.CheckInfoService;
 import com.fjhx.service.check.CheckTagService;
 import com.fjhx.service.stock.StockService;
 import com.fjhx.service.water.WaterTagService;
+import com.fjhx.utils.Assert;
 import com.fjhx.utils.UserClientUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.ThreadUtil;
@@ -360,13 +361,62 @@ public class CheckInfoServiceImpl extends ServiceImpl<CheckInfoMapper, CheckInfo
                 .between(ObjectUtil.isAllNotEmpty(beginTime, endTime), "ci.create_time", beginTime, endTime)
                 .eq(ObjectUtil.isNotEmpty(technologyType), "m.technology_type", technologyType)
                 .eq(ObjectUtil.isNotEmpty(purpose), "m.purpose", purpose)
-                .groupBy("cd.id");
+                .groupBy("m.id");
 
         Page<Map<String, Object>> page = baseMapper.errorMaterialPage(condition.getPage(), wrapper);
         UserClientUtil.setUserName(page.getRecords(), "operUserId", "operUserName");
         return page;
     }
 
+    @Override
+    public Page<Map<String, Object>> errorMaterialTagPage(Condition condition) {
+        Long id = condition.getLong("id");
+
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        wrapper.eq("cd.id", id);
+
+        Page<Map<String, Object>> page = baseMapper.errorMaterialTagPage(condition.getPage(), wrapper);
+        UserClientUtil.setUserName(page.getRecords(), "operUserId", "operUserName");
+        return page;
+    }
+
+    @Override
+    public Map<String, Object> checkResultStatistics(Condition condition) {
+        Long checkInfoId = condition.getLong("checkInfoId");
+        Integer technologyType = condition.getInt("technologyType");
+        String purpose = condition.getStr("purpose");
+
+        Assert.notEmpty(checkInfoId, "盘点id不能为空");
+
+        QueryWrapper<Object> wrapper = Wrappers.query()
+                .eq("ci.id", checkInfoId)
+                .eq(ObjectUtil.isNotEmpty(technologyType), "m.technology_type", technologyType)
+                .eq(ObjectUtil.isNotEmpty(purpose), "m.purpose", purpose);
+
+
+        return baseMapper.checkResultStatistics(wrapper);
+    }
+
+    @Override
+    public Page<Map<String, Object>> materialDetailPage(Condition condition) {
+        Long checkInfoId = condition.getLong("checkInfoId");
+        Integer technologyType = condition.getInt("technologyType");
+        String purpose = condition.getStr("purpose");
+        Integer checkResult = condition.getInt("checkResult");
+
+        Assert.notEmpty(checkInfoId, "盘点id不能为空");
+
+        QueryWrapper<Object> wrapper = Wrappers.query()
+                .eq("ci.id", checkInfoId)
+                .eq(ObjectUtil.isNotEmpty(technologyType), "m.technology_type", technologyType)
+                .eq(ObjectUtil.isNotEmpty(purpose), "m.purpose", purpose)
+                .eq(ObjectUtil.isNotEmpty(checkResult), "cd.check_result", checkResult);
+
+        Page<Map<String, Object>> page = baseMapper.materialDetailPage(condition.getPage(), wrapper);
+        UserClientUtil.setUserName(page.getRecords(), "operUserId", "operUserName");
+        return page;
+    }
+
     /**
      * 获取在库标签
      */

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

@@ -1,12 +1,16 @@
 package com.fjhx.stock.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.stock.StockBack;
 import com.fjhx.entity.stock.StockBackCorrect;
 import com.fjhx.entity.stock.StockBackDetails;
 import com.fjhx.params.stock.CheckDetailsVo;
 import com.fjhx.params.stock.StatisticsResult;
+import com.fjhx.params.stock.StockBackDetailsVo;
 import com.fjhx.params.stock.SubmitBackVo;
 import com.fjhx.stock.service.StockBackCorrectService;
+import com.fjhx.stock.service.StockBackDetailsService;
 import com.fjhx.stock.service.StockBackService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +39,9 @@ public class StockBackController {
     private StockBackService stockBackService;
 
     @Autowired
+    private StockBackDetailsService stockBackDetailsService;
+
+    @Autowired
     private StockBackCorrectService stockBackCorrectService;
 
     /**
@@ -167,6 +174,21 @@ public class StockBackController {
         return R.success(result);
     }
 
+    @PostMapping("/edit")
+    public R edit(@RequestBody StockBackDetailsVo stockBackDetails) {
+        stockBackDetailsService.updateById(stockBackDetails);
+
+        if (stockBackDetails.getOperationTime() != null) {
+            StockBackDetails byId = stockBackDetailsService.getById(stockBackDetails.getId());
+            Long stockBackId = byId.getStockBackId();
+            stockBackService.update(Wrappers.<StockBack>lambdaUpdate()
+                    .eq(StockBack::getId, stockBackId)
+                    .set(StockBack::getOperationTime, stockBackDetails.getOperationTime())
+            );
+        }
+
+        return R.success();
+    }
 
 }
 

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

@@ -259,7 +259,9 @@
                sb.operation_time                     time,
                m.Name                                materialName,
                sbd.material_meters                   meters,
-               (m.Width * sbd.material_meters / 100) area
+               (m.Width * sbd.material_meters / 100) area,
+               sb.status,
+               sbd.id
         from stock_back sb
                  inner join stock_back_details sbd on sb.id = sbd.stock_back_id
                  inner join material m on sbd.material_id = m.ID