瀏覽代碼

问题修改

zhs 2 年之前
父節點
當前提交
58cc313f5c

+ 49 - 0
src/main/java/com/tld/config/SaticScheduleTask.java

@@ -0,0 +1,49 @@
+package com.tld.config;
+
+import com.tld.model.ReturRemoval;
+import com.tld.service.AskGoodsService;
+import com.tld.util.SnowflakeUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.TaskScheduler;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 定时任务
+ */
+@Component
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+public class SaticScheduleTask {
+
+    @Autowired
+    private AskGoodsService askGoodsService;
+
+    //雪花算法
+    private SnowflakeUtil snowflakeUtil = new SnowflakeUtil(1, 1, 1);
+
+    /**
+     * 定时任务线程自定义
+     * @return
+     */
+    @Bean
+    public TaskScheduler taskScheduler() {
+        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
+        taskScheduler.setPoolSize(50);
+        return taskScheduler;
+    }
+
+    /**
+     * 批量回调 生产领料
+     */
+    @Scheduled(cron = "0 */30 * * * ?")
+    public void callback(){
+        askGoodsService.getCallback();
+    }
+}

+ 2 - 2
src/main/java/com/tld/controller/AskGoodsController.java

@@ -80,8 +80,8 @@ public class AskGoodsController {
      * 出库
      */
     @GetMapping("OutOfLibrary")
-    public Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId){
-        return askGoodsService.OutOfLibrary(uniqueCode, type, askGoodsId);
+    public Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId, String name){
+        return askGoodsService.OutOfLibrary(uniqueCode, type, askGoodsId, name);
     }
 
     /**

+ 2 - 0
src/main/java/com/tld/mapper/AskGoodsMapper.java

@@ -241,4 +241,6 @@ public interface AskGoodsMapper {
     String getMaterialCode(@Param("material") String material);
 
     void updErrorParking(Error error);
+
+    List<ReturRemoval> getCallback();
 }

+ 2 - 0
src/main/java/com/tld/mapper/WarehouseTransferMapper.java

@@ -46,4 +46,6 @@ public interface WarehouseTransferMapper {
     String getWarehouseTransferCodeType(String askGoodsWarehouseId);
 
     List<WarehouseTransfer> getWarehouseTransferCode(WarehouseTransfer warehouseTransfer);
+
+    String getStorageLocationWarehouse(String storageLocationCode);
 }

+ 4 - 0
src/main/java/com/tld/model/Notice.java

@@ -60,6 +60,10 @@ public class Notice implements Serializable {
      * wbs编号
      */
     private String wbsCode;
+    /**
+     * wbs名称
+     */
+    private String wbsName;
     /**
      * 计量单位
      */

+ 4 - 0
src/main/java/com/tld/model/ReturRemoval.java

@@ -96,6 +96,10 @@ public class ReturRemoval implements Serializable {
      * 分录单id
      */
     private String documentPointsId;
+    /**
+     * 制单人名称
+     */
+    private String name;
     /**
      * 退换货(0正常1退货2换货)
      */

+ 3 - 1
src/main/java/com/tld/service/AskGoodsService.java

@@ -3,6 +3,7 @@ package com.tld.service;
 import com.tld.model.AskGoods;
 import com.tld.model.MarketReturn;
 import com.tld.model.OutgoingReturn;
+import com.tld.model.ReturRemoval;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -20,7 +21,7 @@ public interface AskGoodsService {
 
     Map<String, Object> addAskGoodsVitrual(AskGoods askGoods);
 
-    Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId);
+    Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId, String name);
 
     void plugOutRemoval(String removalCode , String realName);
 
@@ -103,4 +104,5 @@ public interface AskGoodsService {
     void mergeGs();
 
     void jsonErrorParking();
+    void getCallback();
 }

+ 14 - 3
src/main/java/com/tld/service/impl/AskGoodsServiceImpl.java

@@ -239,7 +239,7 @@ public class AskGoodsServiceImpl implements AskGoodsService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId) {
+    public Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId, String name) {
         Map<String, Object> map = new HashMap<>();
         //redis并发锁
         RLock lock = redissonClient.getLock(uniqueCode);
@@ -286,7 +286,8 @@ public class AskGoodsServiceImpl implements AskGoodsService {
                         .setDocumentId(askGoods3.getAskGoodsId())
                         .setRemovalCode(removalCode)
                         .setSourceType(askGoods3.getSourceType())
-                        .setMoveType(askGoods3.getMoveType());
+                        .setMoveType(askGoods3.getMoveType())
+                        .setName(name);
                 askGoodsMapper.addReturnGsRemovalF(returRemoval1);//新增返回gs数据父表信息
                 map.put("data", askGoods3.getAskGoodsId());
 //            } else {
@@ -1944,6 +1945,16 @@ public class AskGoodsServiceImpl implements AskGoodsService {
         }
     }
 
+    @Override
+    public void getCallback() {
+        List<ReturRemoval> list = askGoodsMapper.getCallback();
+        if(list.size() != 0) {
+            for(ReturRemoval returRemoval : list){
+                plugOutRemoval(returRemoval.getDocumentId(), returRemoval.getName());
+            }
+        }
+    }
+
     @Override
     public void test() {
         AskGoods askGoods = new AskGoods();
@@ -1989,7 +2000,7 @@ public class AskGoodsServiceImpl implements AskGoodsService {
     public void testTwo() {
         List<Map<String, Object>> list1 = queryListMapper.getTestTwo();
         for(Map<String, Object> map : list1){
-            Map<String, Object> map1 = OutOfLibrary("1111", "非生产领料", map.get("ask_goods_id").toString());
+            Map<String, Object> map1 = OutOfLibrary("1111", "非生产领料", map.get("ask_goods_id").toString(), "李兆峰");
 //            System.out.println(map1.get("data"));
             if(map1.get("data") != null){
 //            System.out.println("-------------------------------------");

+ 5 - 0
src/main/java/com/tld/service/impl/DeliveryServiceImpl.java

@@ -317,6 +317,11 @@ public class DeliveryServiceImpl implements DeliveryService {
                 String allScanNum = deliveryMapper.getAllScanNumDelivery(askGoods); //虚拟表此物料占用数量
                 //剩余出库数量
                 Double num = Double.parseDouble(delivery.getGsDeliveryNum()) - Double.parseDouble(delivery.getOutNum()) - Double.parseDouble(scanNum);
+                if(Double.doubleToLongBits(Double.parseDouble(askGoods.getNum())) > Double.doubleToLongBits(num)){
+                    map.put("msg", "500");
+                    map.put("errMsg", "出库数量大于剩余需求数量,请修改!");
+                    return map;
+                }
                 if(Double.doubleToLongBits(Double.parseDouble(inventory.getAmount()) - Double.parseDouble(allScanNum) - num) >= 0){
                     askGoods.setNum(num.toString());
                 } else {

+ 46 - 40
src/main/java/com/tld/service/impl/WarehouseTransferServiceImpl.java

@@ -81,34 +81,37 @@ public class WarehouseTransferServiceImpl implements WarehouseTransferService {
                 askGoods.setStorageCode(warehouseTransferCode);
                 //查询物料信息
                 MaterialClass material = warehousingMapper.getMaterial(new Notice().setMaterialCode(askGoods.getWllbCode()));
-                Inventory inventory = new Inventory();
-                inventory = null;
+                Inventory inventory = null;
                 askGoods.setCompanyNumber(askGoods.getAccountSleeve());
                 askGoods.setMaterialId(material.getTldId());
-                if(material.getPartType().equals("原材料")) {
-                    inventory = askGoodsMapper.getInventory(askGoods);
-                } else if(material.getPartType().equals("产成品")) {
-                    inventory = deliveryMapper.getInventoryHalf(askGoods);
-                } else if(material.getPartType().equals("半成品")) {
-                    if(askGoodsMapper.getInventoryInfo(askGoods).size() != 0){
-                        inventory = askGoodsMapper.getInventoryInfo(askGoods).get(0);
+                //判断是否是三大仓库(半成品、产成品、原材料)之外的仓库 如果是则不需要查询库存
+                String warehouseType = warehouseTransferMapper.getStorageLocationWarehouse(askGoods.getStorageLocationCode());
+                if(!warehouseType.equals("10")) {
+                    if(material.getPartType().equals("原材料")) {
+                        inventory = askGoodsMapper.getInventory(askGoods);
+                    } else if(material.getPartType().equals("产成品")) {
+                        inventory = deliveryMapper.getInventoryHalf(askGoods);
+                    } else if(material.getPartType().equals("半成品")) {
+                        if(askGoodsMapper.getInventoryInfo(askGoods).size() != 0){
+                            inventory = askGoodsMapper.getInventoryInfo(askGoods).get(0);
+                        } else {
+                            inventory = null;
+                        }
+                    } else if (material.getPartType().equals("低值易耗品")){
+                        inventory = deliveryMapper.getInventoryHalf(askGoods);
+                    }
+                    if(inventory == null){
+                        map.put("msg", "500");
+                        map.put("errMsg", "库存不存在");
+                        return map;
+                    }
+                    //如果出库库存等于虚拟表库存则删除此库存
+                    if(Double.doubleToLongBits(Double.parseDouble(askGoods.getNum())) == Double.doubleToLongBits(Double.parseDouble(inventory.getAmount()))){
+                        askGoodsMapper.deleteInventory(inventory);
                     } else {
-                        inventory = null;
+                        inventory.setAmount(askGoods.getNum());
+                        askGoodsMapper.updateInventory(inventory);
                     }
-                } else if (material.getPartType().equals("低值易耗品")){
-                    inventory = deliveryMapper.getInventoryHalf(askGoods);
-                }
-                if(inventory == null){
-                    map.put("msg", "500");
-                    map.put("errMsg", "库存不存在");
-                    return map;
-                }
-                //如果出库库存等于虚拟表库存则删除此库存
-                if(Double.doubleToLongBits(Double.parseDouble(askGoods.getNum())) == Double.doubleToLongBits(Double.parseDouble(inventory.getAmount()))){
-                    askGoodsMapper.deleteInventory(inventory);
-                } else {
-                    inventory.setAmount(askGoods.getNum());
-                    askGoodsMapper.updateInventory(inventory);
                 }
                 String materialId = askGoodsMapper.getMaterialId(askGoods.getWllbCode());//查询物料id
                 WarehouseTransfer warehouseTransfer = warehouseTransferMapper.getWarehouseTransferDetailed(askGoodsId, materialId, askGoods.getEntryNumber());//查询移库申请内容
@@ -257,25 +260,28 @@ public class WarehouseTransferServiceImpl implements WarehouseTransferService {
                         .setCompanyNumber(warehouseTransfer.getAccountSleeve());
                 Inventory inventory = new Inventory();
                 String code = warehouseTransferMapper.getWarehouseTransferCodeType(warehouseTransfer.getAskGoodsWarehouseId());
-                if(material.getPartType().equals("原材料")){
-                    inventory = askGoodsMapper.getInventoryWarehousing(askGoods);
-                } else if(material.getPartType().equals("产成品")){
-                    if(code.equals("2")){
-                        askGoods.setSerial("");
+                //判断是否是三大仓库(半成品、产成品、原材料)之外的仓库 如果是则不需要查询库存
+                String warehouseType = warehouseTransferMapper.getStorageLocationWarehouse(askGoods.getStorageLocationCode());
+                if(!warehouseType.equals("10")) {
+                    if(material.getPartType().equals("原材料")){
+                        inventory = askGoodsMapper.getInventoryWarehousing(askGoods);
+                    } else if(material.getPartType().equals("产成品")){
+                        if(code.equals("2")){
+                            askGoods.setSerial("");
+                        }
+                        inventory = deliveryMapper.getInventoryHalf(askGoods);
+                    } else if(material.getPartType().equals("半成品")){
+                        inventory = askGoodsMapper.getInventoryWarehousing(askGoods);
+                    }
+                    //如果出库库存等于虚拟表库存则删除此库存
+                    if(Double.doubleToLongBits(Double.parseDouble(askGoods.getNum())) == Double.doubleToLongBits(Double.parseDouble(inventory.getAmount()))){
+                        askGoodsMapper.deleteInventory(inventory);
+                    } else {
+                        inventory.setAmount(askGoods.getNum());
+                        askGoodsMapper.updateInventory(inventory);
                     }
-                    inventory = deliveryMapper.getInventoryHalf(askGoods);
-                } else if(material.getPartType().equals("半成品")){
-                    inventory = askGoodsMapper.getInventoryWarehousing(askGoods);
-                }
-                //如果出库库存等于虚拟表库存则删除此库存
-                if(Double.doubleToLongBits(Double.parseDouble(askGoods.getNum())) == Double.doubleToLongBits(Double.parseDouble(inventory.getAmount()))){
-                    askGoodsMapper.deleteInventory(inventory);
-                } else {
-                    inventory.setAmount(askGoods.getNum());
-                    askGoodsMapper.updateInventory(inventory);
                 }
                 askGoodsMapper.addRemoval(askGoods);//插入出库流水
-
                 WarehouseTransfer warehouseTransfer1 = new WarehouseTransfer()
                         .setWarehouseTransferId(warehouseTransfer.getWarehouseTransferId()) //移库单id
                         .setEntryNumber(warehouseTransfer.getEntryNumber())//分录号

+ 15 - 9
src/main/resources/mapper/AskGoodsMapper.xml

@@ -90,7 +90,7 @@
                a.entry_number,
                e.wllb_class,
                a.wbs,
-               f.code as wbsCode
+               f.name as wbsCode
         FROM tld_ask_goods a
         JOIN tld_ask_goods_f b ON a.ask_goods_id = b.ask_goods_id
         LEFT JOIN tld_department c ON b.department = c.code
@@ -394,8 +394,8 @@
     </select>
     <!-- 新增返回gs数据父表信息 -->
     <insert id="addReturnGsRemovalF">
-        insert into tld_return_gs_removal(document_id, removal_code, source_type, move_type, scrq, delivery_type)
-        values (#{documentId}, #{removalCode}, #{sourceType}, #{moveType}, now(), #{deliveryType})
+        insert into tld_return_gs_removal(document_id, removal_code, source_type, move_type, scrq, delivery_type, name)
+        values (#{documentId}, #{removalCode}, #{sourceType}, #{moveType}, now(), #{deliveryType}, #{name})
     </insert>
     <!-- 添加 tld_access 记录-->
     <insert id="addAccess">
@@ -700,7 +700,7 @@
             e.name as department,
             a.type,
             a.wbs,
-            f.code as wbsCode,
+            f.name as wbsCode,
             a.entry_number,
             g.name as companyName,
             c.source_type,
@@ -1479,9 +1479,11 @@
     </select>
     <!--出库错误信息回调-->
     <select id="getOutgoingReturnError" resultType="com.tld.model.Error">
-        select id,url,error_info,data_val,scrq,type,transmission_type from tld_error
-        where transmission_type = '3'
+        select id,url,error_info,data_val,scrq,type,transmission_type from tld_error_error
+        where transmission_type = '1'
         and type = '出库回传'
+        and scrq <![CDATA[>=]]> '2023-05-13'
+        and error_info like '%message%'
     </select>
     <!--查询销售出库导入数据-->
     <select id="getMarketList" resultType="com.tld.model.MarketReturn">
@@ -1588,15 +1590,19 @@
     </select>
     <!--转JSON-->
     <select id="getJsonError" resultType="com.tld.model.Error">
-        select id,url,error_info,data_val,scrq,type,transmission_type from tld_error
-        where transmission_type = '1'
-        and type = '移库'
+        select id,url,error_info,data_val,scrq,type,transmission_type from tld_error_error
+        where type = '出库回传'
+        and scrq <![CDATA[>=]]> '2023-05-13'
     </select>
     <select id="getProductionReturnError" resultType="com.tld.model.Error">
         select id,url,error_info,data_val,scrq,type,transmission_type from tld_error
         where transmission_type = '3'
         and type = '生产收货'
     </select>
+    <!-- 查询生产领料回调信息 -->
+    <select id="getCallback" resultType="com.tld.model.ReturRemoval">
+        select document_id,name from tld_return_gs_removal where source_type = "8" and move_type = "207"
+    </select>
     <!--查询父表信息-->
     <select id="getMergeGsF" resultType="com.tld.model.ReturRemoval">
         select

+ 1 - 1
src/main/resources/mapper/DeliveryMapper.xml

@@ -44,7 +44,7 @@
             b.delivery_code,
             a.entry_number,
             a.material_id,
-            d.code as wbsCode,
+            d.name as wbsCode,
             d.name as wbsName,
             a.wbs,
             a.measurement_id,

+ 1 - 1
src/main/resources/mapper/InviteMapper.xml

@@ -75,7 +75,7 @@
             a.wbs,
             a.entry_number,
             a.wbs,
-            f.code as wbsCode
+            f.name as wbsCode
         FROM
             tld_invite a
             JOIN tld_invite_f b ON a.ask_goods_id = b.ask_goods_id

+ 6 - 2
src/main/resources/mapper/QueryListMappeer.xml

@@ -1011,11 +1011,13 @@
             c.name as materialName,
             c.code as materialCode,
             c.part_type,
-            k.name as companyName
+            k.name as companyName,
+            g.name as wbsCode
         from tld_notices a
         join tld_notices_f b on a.notice_id = b.notice_id
         join tld_material c on a.material_id = c.tld_id
         join tld_company k on b.company_number = k.code
+        left join tld_wbs g on a.wbs = g.tld_id
         <trim prefix="WHERE" prefixOverrides="and |or">
             <if test="type == '0'.toString() ">
                 IFNULL(a.warehousing_num, 0) <![CDATA[<]]> (a.num + 0)
@@ -1104,12 +1106,14 @@
             c.name as materialName,
             c.code as materialCode,
             c.part_type,
-            k.name as companyName
+            k.name as companyName,
+            g.name as wbsCode
         from tld_enquiry a
         join tld_enquiry_f b on a.ask_goods_id = b.ask_goods_id
         join tld_material c on a.material_id = c.tld_id
         join tld_company k on b.company_number = k.code
         join tld_department p on b.department = p.code
+        left join tld_wbs g on a.wbs = g.tld_id
         <trim prefix="WHERE" prefixOverrides="and |or">
             <if test="type == '0'.toString() ">
                 IFNULL(a.out_num, 0) <![CDATA[<]]> (a.num + 0)

+ 1 - 1
src/main/resources/mapper/ReceiveGoodsMapper.xml

@@ -394,7 +394,7 @@
             a.arrival_time,
             b.code as wllbCode,
             a.wbs,
-            j.code as wbsCode,
+            j.name as wbsCode,
             e.company_number as companyNumber,
             e.supplier_id as supplierId,
             p.name as compName

+ 10 - 1
src/main/resources/mapper/WarehouseTransferMapper.xml

@@ -26,12 +26,14 @@
             f.name as askGoodsWarehouseaName,
             e.name as supplyWarehouseName,
             ifnull(f.warehouse_type, 10) as askType,
-            ifnull(e.warehouse_type, 10) as suppType
+            ifnull(e.warehouse_type, 10) as suppType,
+            g.name as wbsCode
         from tld_warehouse_transfer a
         join tld_warehouse_transfer_f b on a.warehouse_transfer_id = b.warehouse_transfer_id
         join tld_material c on a.material_id = c.tld_id
         join tld_warehouse e on a.supply_warehouse_id = e.tld_id
         join tld_warehouse f on b.ask_goods_warehouse_id = f.tld_id
+        left join tld_wbs g on a.wbs = g.tld_id
         <trim prefix="WHERE" prefixOverrides="and |or">
             <if test="userId != null and userId != ''">
                 and c.code in (select material_id from tld_user_material where user_id = #{userId})
@@ -253,4 +255,11 @@
             JOIN tld_material c on a.material_id = c.tld_id
         WHERE c.code IN (select material_id from tld_user_material where user_id = #{userId}) and (a.num + 0) <![CDATA[>]]> (a.out_num + 0)
     </select>
+    <!-- 查询库位仓库是否是业务仓库 -->
+    <select id="getStorageLocationWarehouse" resultType="java.lang.String">
+        SELECT
+            ifnull( b.warehouse_type, "10" )
+        FROM tld_storage_location a
+        JOIN tld_warehouse b ON a.warehouse_where = b.tld_id WHERE a.storage_location_code = #{storageLocationCode}
+    </select>
 </mapper>

+ 1 - 1
src/main/resources/mapper/WarehousingMapper.xml

@@ -430,7 +430,7 @@
             a.production_code,
             a.material_id,
             a.wbs,
-            f.code as wbsCode,
+            f.name as wbsCode,
             a.measurement_id,
             a.num,
             a.type,