Browse Source

问题修改

xiaochen 2 years ago
parent
commit
8fb5742445

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

@@ -1,12 +1,22 @@
 package com.tld.controller;
 
-import com.tld.model.AskGoods;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.tld.excel.ExcelUtils;
+import com.tld.mapper.WarehousingMapper;
+import com.tld.model.*;
 import com.tld.service.AskGoodsService;
+import com.tld.service.QueryListService;
 import com.tld.util.PassToken;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -226,13 +236,124 @@ public class AskGoodsController {
     public void test04(){
         askGoodsService.test04();
     }
+    /**
+     * 出库回传数据导入
+     * @param file 文件流
+     * @return 返回结果
+     * @throws Exception 返回异常
+     */
+    @PostMapping("/import")
+    public Map<String, Object> importExcel(@RequestPart("file") MultipartFile file) throws Exception{
+        Map<String, Object> map = new HashMap<>();
+        JSONArray array = ExcelUtils.readMultipartFile(file);
+        List<OutgoingReturn> list = new LinkedList<>();
+        for(int i = 0; i < array.size(); i++){
+            JSONObject jsonObject = array.getJSONObject(i);
+            OutgoingReturn outgoingReturn = new OutgoingReturn()
+                    .setAskId(jsonObject.get("要货申请ID").toString())
+                    .setAskCode(jsonObject.get("要货申请单号").toString())
+                    .setEntryNumber(jsonObject.get("要货申请分录ID").toString())
+                    .setAmount(jsonObject.get("数量").toString())
+                    .setAmountNum(jsonObject.get("已发数量").toString())
+                    .setAmountNumber(jsonObject.get("取消数量").toString())
+                    .setMoveType(jsonObject.get("类型").toString())
+                    .setMaterialId(jsonObject.get("物料ID").toString())
+                    .setInventoryOrganization(jsonObject.get("库存组织ID").toString())
+                    .setWarehouse(jsonObject.get("仓库ID").toString())
+                    .setWbs(jsonObject.get("WBSID").toString());
+            list.add(outgoingReturn);
+        }
+        askGoodsService.importExcel(list);
+        map.put("msg", "200");
+        map.put("data", array.size());
+        return map;
+    }
 
     /**
-     * 合并库存
+     * 存入GS返回数据/出库回传
      * */
     @GetMapping("merge")
     @PassToken
     public void merge(){
         askGoodsService.merge();
     }
+
+    /**
+     * 出库回传跑数据
+     * */
+    @GetMapping("outgoingReturn")
+    @PassToken
+    public void outgoingReturn(){
+        askGoodsService.outgoingReturn();
+    }
+
+    /**
+     * 存入GS返回数据/入库回传
+     * */
+    @GetMapping("returnInStorage")
+    @PassToken
+    public void returnInStorage(){
+        askGoodsService.returnInStorage();
+    }
+
+    /**
+     * 出库错误信息回调
+     * */
+    @GetMapping("outgoingReturnError")
+    @PassToken
+    public void outgoingReturnError(){
+        askGoodsService.outgoingReturnError();
+    }
+
+    /**
+     * 销售出库导入数据
+     * @param file 文件流
+     * @return 返回结果
+     * @throws Exception 返回异常
+     */
+    @PostMapping("/marketImport")
+    public Map<String, Object> marketImport(@RequestPart("file") MultipartFile file) throws Exception{
+        Map<String, Object> map = new HashMap<>();
+        JSONArray array = ExcelUtils.readMultipartFile(file);
+        List<MarketReturn> list = new LinkedList<>();
+        for(int i = 0; i < array.size(); i++){
+            JSONObject jsonObject = array.getJSONObject(i);
+            MarketReturn marketReturn = new MarketReturn()
+                    .setOrderNumber(jsonObject.get("订单号").toString())
+                    .setOrderOfficer(jsonObject.get("订单人员").toString())
+                    .setSupplierName(jsonObject.get("供应商").toString())
+                    .setMaterialCode(jsonObject.get("物料号").toString())
+                    .setMaterialName(jsonObject.get("物料描述").toString())
+                    .setNum(jsonObject.get("数量").toString())
+                    .setArrivalTime(jsonObject.get("到货时间").toString())
+                    .setArrivalType(jsonObject.get("到货方式").toString())
+                    .setCompany(jsonObject.get("公司").toString())
+                    .setRemark(jsonObject.get("备注").toString())
+                    .setDeliveryOrder(jsonObject.get("销售交货单").toString());
+            list.add(marketReturn);
+        }
+        askGoodsService.marketImport(list);
+        map.put("msg", "200");
+        map.put("data", array.size());
+        return map;
+    }
+
+    /**
+     * 存入GS返回数据/销售出库
+     * */
+    @GetMapping("market")
+    @PassToken
+    public void market(){
+        askGoodsService.market();
+    }
+
+    /**
+     * 销售发货跑数据
+     * */
+    @GetMapping("marketReturn")
+    @PassToken
+    public void marketReturn(){
+        askGoodsService.marketReturn();
+    }
+
 }

+ 27 - 1
src/main/java/com/tld/mapper/AskGoodsMapper.java

@@ -1,6 +1,7 @@
 package com.tld.mapper;
 
 import com.tld.model.*;
+import com.tld.model.Error;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -182,5 +183,30 @@ public interface AskGoodsMapper {
 
     List<Map<String, Object>> test04();
 
-    List<Inventory> getInventoryList();
+    void importExcel(List<OutgoingReturn> list);
+
+    List<OutgoingReturn> getOutgoingReturnList();
+
+    String getLocationCode(@Param("warehouse") String warehouse);
+
+    List<ReturRemoval> getOutgoingReturn();
+
+    List<ReceiveGoods> getReturnInStorageF();
+
+    List<ReceiveGoods> getReturnInStorageZ(@Param("orderCode") String orderCode);
+
+    String getMaterialPartType(@Param("materialId") String materialId);
+
+    void addReturnWarehousing(ReturnWarehousing returnWarehousing);
+
+    List<Error> getOutgoingReturnError();
+
+    void marketImport(List<MarketReturn> list);
+
+
+    List<MarketReturn> getMarketList();
+
+    Delivery getDeliveryF(@Param("deliveryOrder") String deliveryOrder);
+
+    List<Delivery> getDeliveryZ(@Param("deliveryId") String deliveryId, @Param("materialId") String materialId);
 }

+ 68 - 0
src/main/java/com/tld/model/MarketReturn.java

@@ -0,0 +1,68 @@
+package com.tld.model;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @program: tld-consumer-9560
+ * @description: 销售出库导入数据
+ * @author: XiaoChen
+ * @create: 2023-05-13 11:28
+ **/
+@Data
+@Accessors(chain = true)
+@SuppressWarnings("serial")
+public class MarketReturn {
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 订单号
+     */
+    private String orderNumber;
+    /**
+     * 订单人员
+     */
+    private String orderOfficer;
+    /**
+     * 供应商
+     */
+    private String supplierName;
+    /**
+     * 物料编号
+     */
+    private String materialCode;
+    /**
+     * 物料描述
+     */
+    private String materialName;
+    /**
+     * 数量
+     */
+    private String num;
+    /**
+     * 到货时间
+     */
+    private String arrivalTime;
+    /**
+     * 到货方式
+     */
+    private String arrivalType;
+    /**
+     * 公司
+     */
+    private String company;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 销售交货单
+     */
+    private String deliveryOrder;
+    /**
+     * 是否出库
+     */
+    private String deliveryOrNot;
+}

+ 64 - 0
src/main/java/com/tld/model/OutgoingReturn.java

@@ -0,0 +1,64 @@
+package com.tld.model;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @program: tld-consumer-9560
+ * @description: 出库回传导入数据
+ * @author: XiaoChen
+ * @create: 2023-05-12 16:00
+ **/
+@Data
+@Accessors(chain = true)
+@SuppressWarnings("serial")
+public class OutgoingReturn {
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 要货申请ID
+     */
+    private String askId;
+    /**
+     * 要货申请单号
+     */
+    private String askCode;
+    /**
+     * 分录号
+     */
+    private String entryNumber;
+    /**
+     * 数量
+     */
+    private String amount;
+    /**
+     * 已发数量
+     */
+    private String amountNum;
+    /**
+     * 取消数量
+     */
+    private String amountNumber;
+    /**
+     * 移动类型
+     */
+    private String moveType;
+    /**
+     * 物料id
+     */
+    private String materialId;
+    /**
+     * 库存组织ID
+     */
+    private String inventoryOrganization;
+    /**
+     * 仓库ID
+     */
+    private String warehouse;
+    /**
+     * WBSID
+     */
+    private String wbs;
+}

+ 16 - 0
src/main/java/com/tld/service/AskGoodsService.java

@@ -1,6 +1,8 @@
 package com.tld.service;
 
 import com.tld.model.AskGoods;
+import com.tld.model.MarketReturn;
+import com.tld.model.OutgoingReturn;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -69,4 +71,18 @@ public interface AskGoodsService {
     void merge();
 
     void test04();
+
+    void importExcel(List<OutgoingReturn> list);
+
+    void outgoingReturn();
+
+    void returnInStorage();
+
+    void outgoingReturnError();
+
+    void marketImport(List<MarketReturn> list);
+
+    void market();
+
+    void marketReturn();
 }

+ 160 - 7
src/main/java/com/tld/service/impl/AskGoodsServiceImpl.java

@@ -9,6 +9,7 @@ import com.tld.mapper.*;
 import com.tld.model.*;
 import com.tld.model.Error;
 import com.tld.service.AskGoodsService;
+import com.tld.service.QueryListService;
 import com.tld.service.WarehousingService;
 import com.tld.util.DateUtil;
 import com.tld.util.HttpClientUtil;
@@ -46,6 +47,9 @@ public class AskGoodsServiceImpl implements AskGoodsService {
     @Autowired
     private QueryListMapper queryListMapper;
 
+    @Autowired
+    private QueryListService queryListService;
+
 
     /**
     * @Description: 要货申请单(生产领用申请)
@@ -1563,19 +1567,35 @@ public class AskGoodsServiceImpl implements AskGoodsService {
     }
 
     /**
-     * 合并库
+     * 存入GS返回数据
      * */
     @Override
     public void merge() {
         //查询库存
-        List<Inventory> list = askGoodsMapper.getInventoryList();
+        List<OutgoingReturn> list = askGoodsMapper.getOutgoingReturnList();
         //根据 库位编号 物料id wbs 所属公司 判断是否相同
-        for (int i = 0; i < list.size(); i++) {
-
+        for (OutgoingReturn outgoingReturn : list) {
+            System.out.println("数量为:"+Double.parseDouble(outgoingReturn.getAmount()));
+            System.out.println("已发数量为:"+Double.parseDouble(outgoingReturn.getAmountNum()));
+            System.out.println("取消数量为:"+Double.parseDouble(outgoingReturn.getAmountNumber()));
+            ReturRemoval returRemoval = new ReturRemoval()
+                    .setDocumentId(outgoingReturn.getAskId())//单据id1
+                    .setRemovalCode(outgoingReturn.getAskId().substring(outgoingReturn.getAskId().length()-6)+outgoingReturn.getEntryNumber())//出库单编号1
+                    .setSourceType("8")//来源类型1
+                    .setMoveType(outgoingReturn.getMoveType())//移动类型1
+
+                    .setMaterialId(outgoingReturn.getMaterialId())//物料id
+                    .setWbs(outgoingReturn.getWbs())//wbs
+                    .setNum( String.valueOf(Double.parseDouble(outgoingReturn.getAmount()) - Double.parseDouble(outgoingReturn.getAmountNum()) - Double.parseDouble(outgoingReturn.getAmountNumber()))  )//数量-已发数量-取消数量 = 未发数量
+                    .setEntryNumber(outgoingReturn.getEntryNumber())//分录号
+                    .setDocumentPointsId("   ")//分录单id
+                    .setStorageLocationCode(askGoodsMapper.getLocationCode(outgoingReturn.getWarehouse()));//库存编号
+
+            //添加父表信息
+            askGoodsMapper.addReturnGsRemovalF(returRemoval);
+            //添加子表信息
+            askGoodsMapper.addReturnGsRemoval(returRemoval);
         }
-        //数量相加
-        //改变第一个数量
-        //删除多余的数据
     }
 
     /**
@@ -1591,6 +1611,139 @@ public class AskGoodsServiceImpl implements AskGoodsService {
         }
     }
 
+    /**
+     * 出库回传数据导入
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void importExcel(List<OutgoingReturn> list) {
+        askGoodsMapper.importExcel(list);
+    }
+
+    /**
+     * 出库回传跑数据
+     * */
+    @Override
+    public void outgoingReturn() {
+        //查询单据id
+        List<ReturRemoval> list = askGoodsMapper.getOutgoingReturn();
+        for (ReturRemoval returRemoval : list) {
+            plugOutRemoval(returRemoval.getDocumentId(),"李兆峰");
+        }
+    }
+
+    /**
+     * 存入GS返回数据/入库回传
+     * */
+    @Override
+    public void returnInStorage() {
+        List<ReceiveGoods> list = askGoodsMapper.getReturnInStorageF();//查询父表信息
+        for (ReceiveGoods receiveGoods : list) {
+            List<ReceiveGoods> list1 = askGoodsMapper.getReturnInStorageZ(receiveGoods.getOrderCode());//查询子表信息
+            for (ReceiveGoods goods : list1) {
+                //存入GS返回数据
+                String LocationCode = null ;
+                String  PartType = askGoodsMapper.getMaterialPartType(goods.getMaterialId());//查询物料类型
+                if (PartType.equals("半成品")){
+                    LocationCode = "XNKW001" ;
+                }else if (PartType.equals("原材料")){
+                    LocationCode = "D2-3-2" ;
+                }else {
+                    LocationCode = "D2-3-2" ;
+                }
+                ReturnWarehousing returnWarehousing = new ReturnWarehousing()
+                        .setStorageCode("TK"+receiveGoods.getSupplierId())
+                        .setSourceType(receiveGoods.getSourceType())
+                        .setMoveType(receiveGoods.getMoveType())
+                        .setEntryNumber(goods.getEntryNumber())
+                        .setWbs(goods.getWbs())
+                        .setMaterialId(goods.getMaterialId())
+                        .setWarehousingNum(goods.getQualifiedNum())
+                        .setReceiveGoodsId(goods.getEntryNumber())
+                        .setScrq(goods.getArrivalTime())
+                        .setOrderNumber(receiveGoods.getOrderNumber())
+                        .setStorageLocationCode(LocationCode);
+                System.out.println("封装的数据:"+returnWarehousing.toString());
+                System.out.println("入库数量:"+goods.getWarehousingNum());
+                if (goods.getWarehousingNum().equals("0")){
+                    askGoodsMapper.addReturnWarehousing(returnWarehousing);//添加GS返回数据
+                }
+            }
+        }
+    }
+
+    /**
+     * 出库错误信息回调
+     * */
+    @Override
+    public void outgoingReturnError() {
+        List<Error> list = askGoodsMapper.getOutgoingReturnError();
+        for (Error error : list) {
+            queryListService.anew(error);
+        }
+    }
+
+    /**
+     * 销售出库导入数据
+     */
+    @Override
+    public void marketImport(List<MarketReturn> list) {
+        askGoodsMapper.marketImport(list);
+    }
+
+    /**
+     * 存入GS返回数据/销售出库
+     * */
+    @Override
+    public void market() {
+        //查询销售出库导入数据
+        List<MarketReturn> list = askGoodsMapper.getMarketList();
+        //根据 库位编号 物料id wbs 所属公司 判断是否相同
+        for (MarketReturn marketReturn : list) {
+            //查询物料id
+            String materialId = askGoodsMapper.getMaterialId(marketReturn.getMaterialCode());
+            //查询销售单父子表信息
+            Delivery delivery1 = askGoodsMapper.getDeliveryF(marketReturn.getDeliveryOrder());
+
+            if (delivery1!= null){
+                List<Delivery>  delivery2  = askGoodsMapper.getDeliveryZ(delivery1.getDeliveryId(),materialId);
+                 if (delivery2 != null){
+                     for (Delivery delivery : delivery2) {
+                         ReturRemoval returRemoval = new ReturRemoval()
+                                 .setDocumentId(delivery1.getDeliveryId())//单据id1
+                                 .setRemovalCode( codeGenerateCk())//出库单编号1
+                                 .setSourceType(delivery1.getSourceType())//来源类型1
+                                 .setMoveType(delivery1.getMoveType())//移动类型1
+
+                                 .setMaterialId(materialId)//物料id
+                                 .setWbs(delivery.getWbs())//wbs
+                                 .setNum( marketReturn.getNum() )//数量-已发数量-取消数量 = 未发数量
+                                 .setEntryNumber(delivery.getEntryNumber())//分录号
+                                 .setDocumentPointsId("   ")//分录单id
+                                 .setStorageLocationCode("XNKW111111");//库存编号
+
+                         //添加父表信息
+                         askGoodsMapper.addReturnGsRemovalF(returRemoval);
+                         //添加子表信息
+                         askGoodsMapper.addReturnGsRemoval(returRemoval);
+                     }
+                 }
+            }
+        }
+    }
+
+    /**
+     * 销售发货跑数据
+     * */
+    @Override
+    public void marketReturn() {
+        //查询单据id
+        List<ReturRemoval> list = askGoodsMapper.getOutgoingReturn();
+        for (ReturRemoval returRemoval : list) {
+            CreateBOLOutStock(returRemoval.getRemovalCode(),"李兆峰");
+        }
+    }
+
     @Override
     public void test() {
         AskGoods askGoods = new AskGoods();

+ 74 - 3
src/main/resources/mapper/AskGoodsMapper.xml

@@ -372,6 +372,31 @@
         insert into tld_access (type, data, scrq, access_type)
         values (#{names}, #{returnGsRemoval}, now(), #{accessType})
     </insert>
+    <!--出库回传数据导入-->
+    <insert id="importExcel">
+        insert into tld_outgoing_return(ask_id,ask_code,entry_number,amount,amount_num,amount_number,move_type,
+        material_id,inventory_organization,warehouse,wbs)
+        values
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.askId},#{item.askCode},#{item.entryNumber},#{item.amount},#{item.amountNum},#{item.amountNumber},#{item.moveType},#{item.materialId},#{item.inventoryOrganization},#{item.warehouse}
+            ,#{item.wbs})
+        </foreach>
+    </insert>
+    <!--添加GS返回数据-->
+    <insert id="addReturnWarehousing">
+        insert into tld_return_gs_warehousing(storage_code,source_type,move_type,entry_number,wbs,material_id,warehousing_num,receive_goods_id,scrq,order_number,storage_location_code)
+        values(#{storageCode},#{sourceType},#{moveType},#{entryNumber},#{wbs},#{materialId},#{warehousingNum},#{receiveGoodsId},now(),#{orderNumber},#{storageLocationCode})
+    </insert>
+    <!--销售出库导入数据-->
+    <insert id="marketImport">
+        insert into tld_market_return(order_number,order_officer,supplier_name,material_code,material_name,num,arrival_time,
+        arrival_type,company,remark,delivery_order)
+        values
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.orderNumber},#{item.orderOfficer},#{item.supplierName},#{item.materialCode},#{item.materialName},#{item.num},#{item.arrivalTime},#{item.arrivalType},#{item.company},#{item.remark}
+            ,#{item.deliveryOrder})
+        </foreach>
+    </insert>
     <!-- 查询当天出库数量 -->
     <select id="getReturnRemovalCount" resultType="int">
         select count(*)
@@ -1386,9 +1411,55 @@
     <select id="test04" resultType="java.util.Map">
         select storage_code as storageCode from tld_return_gs_warehousing where source_type  <![CDATA[=]]> 'W'
     </select>
-    <!--查询库存-->
-    <select id="getInventoryList" resultType="com.tld.model.Inventory">
-        select id,storage_location_code,material_id,amount,account_sleeve,wbs from tld_inventory
+    <select id="getOutgoingReturnList" resultType="com.tld.model.OutgoingReturn">
+        select id,ask_id,ask_code,entry_number,amount,amount_num,amount_number,move_type,material_id,inventory_organization,warehouse,wbs from tld_outgoing_return
+    </select>
+    <!--查询storage_location_code库位编号-->
+    <select id="getLocationCode" resultType="java.lang.String">
+        select storage_location_code from tld_storage_location where warehouse_where = #{warehouse} limit 1
+    </select>
+    <!--查询单据id-->
+    <select id="getOutgoingReturn" resultType="com.tld.model.ReturRemoval">
+        select id,document_id,removal_code,source_type,move_type,scrq,delivery_type from tld_return_gs_removal
+    </select>
+    <!--查询父表信息-->
+    <select id="getReturnInStorageF" resultType="com.tld.model.ReceiveGoods">
+        select order_number,order_code,company_number,supplier_id,arrival_time,order_type,source_type,move_type from tld_receive_goods_f
+    </select>
+    <!--查询子表信息-->
+    <select id="getReturnInStorageZ" resultType="com.tld.model.ReceiveGoods">
+        select order_code,material_id,purchase_num,arrival_num,type,qualified_num,disqualification_num,wbs,arrival_time,measurement_id,supplier_id,entry_number,warehousing_num from tld_receive_goods where order_code = #{orderCode}
+    </select>
+    <!--查询物料类型-->
+    <select id="getMaterialPartType" resultType="java.lang.String">
+        select part_type from tld_material where tld_id = #{materialId}
+    </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 = '1'
+        and type = '出库回传'
+    </select>
+    <!--查询销售出库导入数据-->
+    <select id="getMarketList" resultType="com.tld.model.MarketReturn">
+        select id,order_number,order_officer,supplier_name,material_code,material_name,num,arrival_time,arrival_type,company,remark,delivery_order,delivery_or_not from tld_market_return
+    </select>
+    <!--查询销售单父子表信息-->
+    <select id="getDeliveryF" resultType="com.tld.model.Delivery">
+        select
+            id,delivery_id,delivery_code,company_number,customer_code,bills_time,delivery_type,source_type,move_type,project_name,project_code
+        from tld_delivery_f
+        where company_number = '8130'
+        and delivery_code = #{deliveryOrder}
+    </select>
+    <!--查询销售单父子表信息-->
+    <select id="getDeliveryZ" resultType="com.tld.model.Delivery">
+        select
+            id,delivery_id,entry_number,material_id,wbs,measurement_id,gs_delivery_num,gs_cancel_num,out_num,status
+        from tld_delivery
+        where delivery_id = #{deliveryId}
+        and material_id = #{materialId}
+        and out_num <![CDATA[=]]> '0'
     </select>
     <!-- 修改数据传输状态 -->
     <update id="updateRemoval">