ysh 3 年 前
コミット
f47aa5a88b

+ 58 - 7
jeecg-boot-module-system/src/main/java/org/jeecg/modules/openApi/controller/SubcontractingOrderController.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.openApi.controller;
 
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
@@ -17,8 +18,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.net.HttpURLConnection;
-import java.util.Enumeration;
-import java.util.List;
+import java.util.*;
 
 /**
  * @Description: 委外订单
@@ -42,6 +42,7 @@ public class SubcontractingOrderController extends JeecgController<Subcontractin
     @RequestMapping(value = "/getSubcontractingOrderByCode",method = RequestMethod.GET)
     @ResponseBody
     public ResponseEntity<ResHttpStatus> getSubcontractingOrderByCode(String code,String MoDetailsID, String key) {
+
         ResHttpStatus res = new ResHttpStatus();
         res.setCode("0");
         res.setSuccess(false);
@@ -53,10 +54,16 @@ public class SubcontractingOrderController extends JeecgController<Subcontractin
             res.setMsg("子表主键不能为空");
             return new ResponseEntity<>(res, HttpStatus.OK);
         }
-        List<SubcontractingOrder> order =subcontractingOrderService.selectOrderByCode(code,MoDetailsID);//"SYW313-森宏"
+        List<SubcontractingOrder> order =subcontractingOrderService.selectOrderByCodeOne(code,MoDetailsID);//"SYW313-森宏"
         if(order.size() <= 0){
-            res.setMsg("未查到有效数据");
-            return new ResponseEntity<>(res, HttpStatus.OK);
+            order =subcontractingOrderService.selectOrderByCodeTwo(code,MoDetailsID);//"SYW313-森宏"
+            if(order.size() <= 0){
+                order =subcontractingOrderService.selectOrderByCodeThree(code,MoDetailsID);//"SYW313-森宏"
+            }
+            if(order.size() <= 0){
+                res.setMsg("未查到有效数据");
+                return new ResponseEntity<>(res, HttpStatus.OK);
+            }
         }
         res.setCode("200");
         res.setMsg("成功");
@@ -88,17 +95,61 @@ public class SubcontractingOrderController extends JeecgController<Subcontractin
         }
 
         try {
-            subcontractingOrderService.saveWarehousing(json);
+            //账套1
+            List<Map<String,Object>> mapListOne=new ArrayList<>();
+            //账套2
+            List<Map<String,Object>> mapListTwo=new ArrayList<>();
+            //账套3
+            List<Map<String,Object>> mapListThree=new ArrayList<>();
+            for(int i=0;i<json.size();i++){
+                //获取对象
+                JSONObject jsonObject=json.getJSONObject(i);
+
+                if(jsonObject.get("bredvouch") == null){//红蓝标识  采购入库
+                    res.setMsg("bredvouch不能为空,或不合法");
+                    return new ResponseEntity<>(res, HttpStatus.OK);
+                }
+                //获取账套
+                if(jsonObject.get("cAccId") != null || !jsonObject.get("cAccId").toString().equals("103")){
+                    String cAccId=jsonObject.get("cAccId").toString();//账套
+                    //转map
+                    Map<String,Object> map=updateMap(jsonObject);
+                    if(cAccId.equals("101")){
+                        mapListOne.add(map);
+                    }else if(cAccId.equals("102")){
+                        mapListTwo.add(map);
+                    }else if(cAccId.equals("103")){
+                        mapListThree.add(map);
+                    }
+                }else{
+                    res.setMsg("cAccId不能为空,或不合法");
+                    return new ResponseEntity<>(res, HttpStatus.OK);
+                }
+
+            }
+            subcontractingOrderService.saveWarehousing(mapListOne);
             res.setCode("200");
             res.setSuccess(true);
 
         }catch (Exception e){
             res.setMsg(e.getMessage());
         }
-
+        res.setMsg("执行成功");
         return new ResponseEntity<>(res, HttpStatus.OK);
     }
 
 
+    public Map<String,Object> updateMap(JSONObject jsonObject){
+
+        //map对象
+        Map<String, Object> data =new HashMap<>();
+        //循环转换
+        Iterator it =jsonObject.entrySet().iterator();
+        while (it.hasNext()) {
+            Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();
+            data.put(entry.getKey(), entry.getValue());
+        }
+        return data;
+    }
 
 }

+ 28 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/openApi/mapper/SubcontractingOrderMapper.java

@@ -6,6 +6,7 @@ import io.lettuce.core.dynamic.annotation.Param;
 import org.jeecg.modules.openApi.entity.SubcontractingOrder;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -15,6 +16,20 @@ import java.util.List;
  */
 public interface SubcontractingOrderMapper extends BaseMapper<SubcontractingOrder> {
 
+    /**
+     * 调用存储过程 获取下一个编码
+     * @param StuNo 单据类型 24:入库单
+     * @return
+     */
+    int callGetMaxCode(@Param("StuNo") String StuNo);
+
+    /**
+     * 调用存储过程 获取下一个主键(包含主子表)
+     * @param StuNo 单据类型  rd:入库单
+     * @return
+     */
+    Map<String,Integer> callGetUAMaxPK(@Param("StuNo") String StuNo);
+
     /**
      * 根据委外订单编码获取订单详情
      * @param code
@@ -22,4 +37,17 @@ public interface SubcontractingOrderMapper extends BaseMapper<SubcontractingOrde
      */
     List<SubcontractingOrder> selectOrderByCode(@Param("code")String code, @Param("MoDetailsID")String MoDetailsID);
 
+    /**
+     * @Description //TODO 采购入库主表新增(合格入库)
+     * @Param [map]
+     * @return void
+     */
+    void saveRdRecord01One(@Param("RdRecord01")Map<String,Object> map);
+    /**
+     * @Description //TODO 采购入库子表新增(合格入库)
+     * @Param [map]
+     * @return void
+     */
+    void saveRdrecords01One(@Param("item")Map<String,Object> map);
+
 }

+ 126 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/openApi/mapper/xml/SubcontractingOrderMapper.xml

@@ -2,6 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.openApi.mapper.SubcontractingOrderMapper">
 
+    <select id="callGetMaxCode" resultType="int">
+        exec getMaxCode @StuNo = #{StuNo}
+    </select>
+
+    <select id="callGetUAMaxPK" resultType="map">
+        exec getUAMaxCode @StuNo = #{StuNo}
+    </select>
+
     <select id="selectOrderByCode" resultType="org.jeecg.modules.openApi.entity.SubcontractingOrder">
 
         select a.moId ,-- 染厂
@@ -11,10 +19,10 @@
                c.cInvName , -- 存货名称
                c.cEnglishName , -- 存货英文名称
                b.cdefine22 itemNumber, -- 款号
-               b.cfree1 color-- 颜色
-                -- 色号
-                -- 要求克重
-                -- 要求门幅
+               b.cfree1 color,-- 颜色
+               b.cDefine30 colorNumber,-- 色号
+               b.cFree6 gram, -- 要求克重
+               b.cFree4 doorWidth-- 要求门幅
         from OM_MOMain a
                  left join OM_MODetails b on a.moid = b.moid
                  left join Inventory c on b.cInvCode = c.cInvCode
@@ -23,4 +31,118 @@
         where a.ccode = #{code}
         and b.MoDetailsID = #{MoDetailsID}
     </select>
+
+    <insert id="saveRdRecord01One">
+        INSERT INTO RdRecord01
+        (
+        ID,
+        cVouchType,--1 单据类型编码  01
+        cCode,--2 收发单据号
+        dDate,--3 单据日期 当前日期
+        cWhCode,--4 仓库编码
+        cOrderCode,--5 委外订单号 验布机
+        cARVCode,--6 采购到货单号
+        cVenCode,--7 供应商编码
+        cDepCode,--8 部门编码
+        cPersonCode, --9 业务员编码
+        dARVDate, --10 到货日期 空
+        cBusType, --11 业务类型-根据订单号获取或者默认  普通采购
+        cPTCode,--12 采购类型编码   01
+        cMemo,--13 备注
+        cRdCode,--14 收发类别编码 1
+        bredvouch,--15红蓝标识--0>
+        bRdFlag,--16收发标志-- 1
+        cSource,<!--17单据来源-->
+        bTransFlag,<!--18是否传递 0-->
+        bIsSTQc,<!--19是否传递 0-->
+        cMaker,--20创建人 验布机
+        cHandler,--21 审核人 空
+        dVeriDate,-- 22审核日期
+        dnverifytime, --23 审核时间
+        cDefine13 -- 24委外订单号
+        )
+        VALUES
+        (
+        #{RdRecord01.ID},
+        '01',--1 单据类型编码  01
+        #{RdRecord01.cCode},--2 收发单据号
+        getdate(),--3 单据日期 当前日期
+        #{RdRecord01.cWhCode},--4 仓库编码
+        #{RdRecord01.cOrderCode},--5 委外订单号 验布机
+        null ,--6#{RdRecord01.cARVCode},-- 采购到货单号 空
+        #{RdRecord01.cVenCode}, --7 供应商编码
+        #{RdRecord01.cDepCode},-- 8部门编码
+        #{RdRecord01.cPersonCode},--9 业务员编码
+        null, --10#{RdRecord01.dARVDate},-- 到货日期 空
+        #{RdRecord01.cBusType},--11 业务类型-根据订单号获取或者默认  普通采购
+        #{RdRecord01.cPTCode},--12 采购类型编码   01
+        #{RdRecord01.cMemo},--13 备注
+        #{RdRecord01.cRdCode},--14 收发类别编码 1
+        0, --15红蓝标识--0>
+        1, --16收发标志-- 1
+        0, --17是否传递 0-->
+        0, --18是否传递 0-->
+        '验布机',--19创建人 验布机
+        null,--20
+        null,--21
+        null,--22
+        null,--23
+        #{RdRecord01.cOrderCode}-- 24委外订单号
+        )
+    </insert>
+
+    <insert id="saveRdrecords01One" >
+            INSERT INTO rdrecords01
+            (
+            AutoID,--1 子表主键
+            ID,--2 主表主键
+            cDefine22,--3 款号
+            cDefine28,--4 小PO 空
+            cInvCode,--5 存货编码
+            iQuantity,--6 数量
+            cBatch,--7 批号
+            cFree1,--8 颜色
+            cDefine30, --9 染厂色号
+            cbMemo,--10 备注
+            iordercode, --11 订单号
+            irowno,--12 行号
+            iFlag,--13是否传递 --> 0
+            iMatSettleState,--14结算状态 --> 0
+            iBillSettleCount,--15结算次数 --> 0
+            iPOsID,--16 采购订单子表标识 空
+            iOMoDID,--17 委外订单子表ID  空
+            cAssUnit,--18 辅计量单位编码
+            -- #{item.polishedBlank}, -- 19 光坯毛门幅CM
+            -- #{item.gramWeight}, -- 20 克重/工艺
+            cFree4, -- 21 件数 总卷数
+            cPOID--22 订单号
+            )
+            VALUES
+            (
+            #{item.AutoID},--1 子表主键
+            #{item.ID},--2 主表主键
+            #{item.cDefine22},--3 款号
+           null,-- #{item.cDefine28},--4 小PO 空
+            #{item.cInvCode},--5 存货编码
+            #{item.iQuantity},--6 数量
+            #{item.cBatch},--7 批号
+            #{item.color},--8 颜色
+            #{item.cDefine30},--9 染厂色号
+            #{item.cbMemo},--10 备注
+            #{item.iordercode}, --11 订单号
+            #{item.irowno},--12 行号
+            0,--13是否传递 --> 0
+            0,--14结算状态 --> 0
+            0,--15结算次数 --> 0
+            null ,--#{item.iPOsID},--16 采购订单子表标识 空
+            null ,--#{item.iOMoDID},--17 委外订单子表ID  空
+            #{item.unit}, -- 18 单位
+           -- #{item.polishedBlank}, -- 19 光坯毛门幅CM
+           -- #{item.gramWeight}, -- 20 克重/工艺
+            #{item.num}, -- 21 件数 总卷数
+            #{item.cPOID}--22 订单号
+            )
+    </insert>
+
+
 </mapper>

+ 9 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/openApi/service/SubcontractingOrderService.java

@@ -5,10 +5,17 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.openApi.entity.SubcontractingOrder;
 
 import java.util.List;
+import java.util.Map;
 
 public interface SubcontractingOrderService extends IService<SubcontractingOrder> {
 
-    List<SubcontractingOrder> selectOrderByCode(String code,String MoDetailsID);
+    List<SubcontractingOrder> selectOrderByCodeOne(String code,String MoDetailsID);
+    List<SubcontractingOrder> selectOrderByCodeTwo(String code,String MoDetailsID);
+    List<SubcontractingOrder> selectOrderByCodeThree(String code,String MoDetailsID);
 
-    String saveWarehousing(JSONArray json);
+    String saveWarehousing(List<Map<String,Object>> map);
+
+    String callGetMaxCode(String StuNo);
+
+    Map<String,Integer> callGetUAMaxPK(String StuNo);
 }

+ 173 - 17
jeecg-boot-module-system/src/main/java/org/jeecg/modules/openApi/service/impl/SubcontractingOrderImpl.java

@@ -1,52 +1,208 @@
 package org.jeecg.modules.openApi.service.impl;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.modules.openApi.entity.SubcontractingOrder;
+import org.jeecg.modules.openApi.mapper.PurchaseWarehousingMapper;
 import org.jeecg.modules.openApi.mapper.SubcontractingOrderMapper;
 import org.jeecg.modules.openApi.service.SubcontractingOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import static org.apache.commons.lang3.RegExUtils.replaceFirst;
 
 @Service
 public class SubcontractingOrderImpl extends ServiceImpl<SubcontractingOrderMapper, SubcontractingOrder> implements SubcontractingOrderService {
-
+    @Autowired
+    private PurchaseWarehousingMapper purchaseWarehousingMapper;
     @Autowired
     private SubcontractingOrderMapper subcontractingOrderMapper;
 
+    /**
+     * 调用存储过程 获取下一个编码
+     * @param StuNo 单据类型 24:入库单
+     * @return
+     */
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
     @DS("multi-one")
-    public List<SubcontractingOrder> selectOrderByCode(String code,String MoDetailsID){
-        return subcontractingOrderMapper.selectOrderByCode(code,MoDetailsID);
+    public String callGetMaxCode(String StuNo) {
+        int num = subcontractingOrderMapper.callGetMaxCode(StuNo);
+        if(num == 0){
+            return "";
+        }
+        if(num < 1000000000){
+            num = num + 1000000000;
+        }else{
+            return String.valueOf(num);
+        }
+        String code = String.valueOf(num);
+        code = replaceFirst(code, "1", "0");
+
+        return code;
     }
 
-    public String saveWarehousing(JSONArray json){
 
-        for(int i=0;i<json.size();i++){
-            JSONObject jsonObject=json.getJSONObject(i);
-            //获取账套
-            if(jsonObject.get("cAccId") != null){
-                String cAccId=jsonObject.get("cAccId").toString();
+     /**
+     * 调用存储过程 获取下一个主键(包含主子表)
+     * @param StuNo rd:入库单
+     * @return
+     */
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    @DS("multi-one")
+    public Map<String,Integer> callGetUAMaxPK(String StuNo) {
+        Map<String,Integer> map = subcontractingOrderMapper.callGetUAMaxPK(StuNo);
+        Map<String,Integer> map1 = new HashMap<>();
+
+        if(map.get("iFatherId") != null){//主表主键
+            if(map.get("iFatherId") >= 1000000000){
+                map1.put("iFatherId",map.get("iFatherId"));
             }else{
-                throw new RuntimeException("cAccId不能为空,或不合法");
+                map1.put("iFatherId",map.get("iFatherId")+1000000000);
             }
-            if(jsonObject.get("cAccId") != null){
-                String bredvouch=jsonObject.get("bredvouch").toString();//红蓝标识  采购入库
+        }
+        if(map.get("iChildId") != null){ //子表主键
+            if(map.get("iChildId") >= 1000000000){
+                map1.put("iChildId",map.get("iChildId"));
+            }else{
+                map1.put("iChildId",map.get("iChildId")+1000000000);
+            }
+        }
+        return map1;
+    }
+
+    @DS("multi-one")
+    public List<SubcontractingOrder> selectOrderByCodeOne(String code,String MoDetailsID){
+        return subcontractingOrderMapper.selectOrderByCode(code,MoDetailsID);
+    }
+    @DS("multi-two")
+    public List<SubcontractingOrder> selectOrderByCodeTwo(String code,String MoDetailsID){
+        return subcontractingOrderMapper.selectOrderByCode(code,MoDetailsID);
+    }
+    @DS("multi-three")
+    public List<SubcontractingOrder> selectOrderByCodeThree(String code,String MoDetailsID){
+        return subcontractingOrderMapper.selectOrderByCode(code,MoDetailsID);
+    }
+
+    @DS("multi-one")
+    @Override
+    public String saveWarehousing(List<Map<String,Object>> mapList){
+
+        for(Map<String,Object> map:mapList){
+            //获取新的主表主键
+            Map<String,Integer> pkMap = this.callGetUAMaxPK("rd");
+            map.put("ID",pkMap.get("iFatherId"));
+            //获取新code
+            String cCode = this.callGetMaxCode("24");
+            if(cCode!=null){
+                map.put("cCode",cCode);
             }else{
-                throw new RuntimeException("bredvouch不能为空,或不合法");
+                throw new RuntimeException("获取入库单号失败");
             }
 
+            //红蓝标识
+            if(map.get("cVouchType").toString().equals("0")){
+                map.put("cVouchType",0);//采购入库
+            }else{
+                throw new RuntimeException("cVouchType:只能进行采购入库(0)");
+            }
+            //入库类别、采购类型
+            if(map.get("cRdCode").toString().equals("委外入库")){
+                //委外入库
+                map.put("cRdCode",12);//入库类别
+                map.put("cPTCode",02);//采购类型
+            }else{
+                throw new RuntimeException("入库类别:只能进行委外入库");
+            }
+            map.put("dDate",new Date());//入库日期
+            if(map.get("cWhCode") == null){
+                throw new RuntimeException("cWhCode为空");
+            }
+            if(map.get("cOrderCode") == null){
+                throw new RuntimeException("委外订单号为空");
+            }
+            if(map.get("cBusType") == null){
+                map.put("cBusType","委外加工");//业务类型-根据订单号获取或者默认
+            }
 
+//            map.put("cVenCode","");//供货单位  委外订单供应商-根据订单号获取
+//            map.put("cDepCode","");//部门-根据订单号获取
+//            map.put("cPersonCode","");//业务员-根据订单号获取
+//
+//            map.put("cMemo","");//订单备注
 
+            //插入主表
+            subcontractingOrderMapper.saveRdRecord01One(map);
+            //子表
+            if(map.get("item") != null && !map.get("item").equals("")){
+                List<Map<String,Object>> itemList=(List<Map<String,Object>>)map.get("item");
+                Integer rowId=0;
+                for(Map<String,Object> itemMap:itemList){
+                    rowId++;
+                    //获取子表最大id
+                    Map<String,Integer> pkMapChild = this.callGetUAMaxPK("rd");
+                    itemMap.put("AutoID",pkMapChild.get("iChildId"));
+                    //主表id
+                    itemMap.put("ID",map.get("ID"));
+                    //行号
+                    itemMap.put("irowno",rowId);
 
+                    //itemMap.put("cDefine22",rowId);//款号
+                    //itemMap.put("cDefine28",rowId);//小PO 空
+                    //itemMap.put("cInvCode",rowId);//存货编码   必填
+                    if(itemMap.get("cInvCode") == null){
+                        throw new RuntimeException("cInvCode为空");
+                    }
+                    //itemMap.put("iQuantity",rowId);//数量   必填
+                    if(itemMap.get("iQuantity") == null){
+                        throw new RuntimeException("iQuantity为空");
+                    }
+                    //itemMap.put("unit",rowId);//单位    必填
+                    if(itemMap.get("unit") == null){
+                        throw new RuntimeException("unit为空");
+                    }
+                    //itemMap.put("cBatch",rowId);//批号  必填
+                    if(itemMap.get("cBatch") == null){
+                        throw new RuntimeException("cBatch为空");
+                    }
+                    //itemMap.put("color",rowId);//颜色   必填
+                    if(itemMap.get("color") == null){
+                        throw new RuntimeException("color为空");
+                    }
+                    //itemMap.put("polishedBlank",rowId);/光坯毛门幅CM 验布机 要求门幅
+                    //itemMap.put("gramWeight",rowId);/克重/工艺 验布机 克重
+                    //itemMap.put("cDefine30",rowId);/染厂色号 验布机 色号
+                    itemMap.put("iordercode",map.get("cOrderCode"));//委外订单号    必填
+                    //itemMap.put("num",rowId);/件数   总卷数     必填
+                    //itemMap.put("cbMemo",rowId);/备注
+                    if(itemMap.get("num") == null){
+                        throw new RuntimeException("num为空");
+                    }
+                    subcontractingOrderMapper.saveRdRecord01One(itemMap);
+                }
+            }else{
+                throw new RuntimeException("item为空");
+            }
 
         }
 
         return "true";
     }
+
+
+//    public Integer getMaxId(String id, String tableName) {
+//        Integer maxId=purchaseWarehousingMapper.getMaxId(id,tableName);
+//        if(maxId!=null){
+//            maxId=maxId+1;
+//        }else{
+//            maxId=0;
+//        }
+//        return maxId;
+//    }
+
+
 }