自动化立体仓库 - WMS系统
野心家
2024-12-23 fffcf8f632eb551f11d018184547ce01dcc4907f
完善erp上报流程
17个文件已修改
277 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/Order.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderMapper.xml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/Order.java
@@ -207,9 +207,9 @@
    private String shipName;
    /**
     * 物流单号
     * 下推订单编号
     */
    @ApiModelProperty(value= "物流单号")
    @ApiModelProperty(value= "下推订单编号")
    @TableField("ship_code")
    private String shipCode;
@@ -256,7 +256,11 @@
    private Date updateTime;
    /**
     * 备注
     * 备注-上报状态
     * 0.待上报
     * 1.下推完成
     * 2.提交完成
     * 3.审核完成
     */
    @ApiModelProperty(value= "备注")
    private String memo;
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -193,9 +193,9 @@
    private Double weight;
    /**
     * 长度
     * 已上报数量
     */
    @ApiModelProperty(value= "长度")
    @ApiModelProperty(value= "已上报数量")
    private Double length;
    /**
src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -17,9 +17,14 @@
    int updateSettle(@Param("orderId")Long orderId, @Param("settle")Long settle, @Param("userId")Long userId);
    List<Order> selectComplete();
    List<Order> selectCompleteSave();
    List<Order> selectComplete1();
    List<Order> selectComplete2();
    List<Order> selectCompleteMome0();
    List<Order> selectCompleteMome1();
    List<Order> selectCompleteMome2();
    List<Order> selectCompleteMome3();
    int addToLogTable(Order order);
    Integer checkDetlWorkQtyLess0(@Param("orderNo") String orderNo);
src/main/java/com/zy/asrs/service/OrderService.java
@@ -20,13 +20,24 @@
    void remove(Long orderId);
    //完成
    //下推
    List<Order> selectComplete();
    //保存
    List<Order> selectComplete1();
    List<Order> selectCompleteSave();
    //提交
    List<Order> selectComplete1();
    //审核
    List<Order> selectCompletemEmo0();
    List<Order> selectCompletemEmo1();
    List<Order> selectCompletemEmo2();
    List<Order> selectCompletemEmo3();
    List<Order> selectComplete2();
    boolean addToLogTable(Order order);
    void BackToInit(String orderNo);
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -19,6 +19,7 @@
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -81,6 +82,7 @@
                    orderDetlService.updateById(orderDetl);
                }
            }
            order.setMemo("0");
            if (!this.updateSettle(order.getId(), 4L, null)) {
                throw new CoolException("修改订单【orderNo = " + order.getOrderNo() + "】状态为已完成失败");
            }
@@ -152,8 +154,33 @@
    }
    @Override
    public List<Order> selectCompleteSave() {
        return this.baseMapper.selectCompleteSave();
    }
    @Override
    public List<Order> selectComplete1() {
        return this.baseMapper.selectComplete1();
    }
    @Override
    public List<Order> selectCompletemEmo0() {
        return this.baseMapper.selectCompleteMome0();
    }
    @Override
    public List<Order> selectCompletemEmo1() {
        return this.baseMapper.selectCompleteMome1();
    }
    @Override
    public List<Order> selectCompletemEmo2() {
        return this.baseMapper.selectCompleteMome2();
    }
    @Override
    public List<Order> selectCompletemEmo3() {
        return this.baseMapper.selectCompleteMome3();
    }
    @Override
@@ -216,7 +243,7 @@
    @Override
    public List<Order> selectToBeHistoryOrder(boolean isERP) {
        int settle = isERP ? 7 : 4;
        int settle = isERP ? 8 : 4;
        return this.baseMapper.selectToBeHistoryOrder(settle);
    }
src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
@@ -14,7 +14,7 @@
    /**
     * 将已完成order和orderDetl移动到log表
     */
    @Scheduled(cron = "0/30 * * * * ?")
//    @Scheduled(cron = "0/30 * * * * ?")
    public void execute(){
        orderMoveHistoryHandler.start();
    }
src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java
@@ -32,7 +32,7 @@
        if(!PushDowmOrderSwitch){
            return;
        }
        List<Order> orders = orderService.selectComplete();
        List<Order> orders = orderService.selectCompletemEmo0();
        for (Order order : orders) {
            try{
                ReturnT<String> result = pushDowmOrderSyncHandler.start(order);
src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java
@@ -35,7 +35,7 @@
        if(!ReviewOrderSwitch){
            return;
        }
        List<Order> orders = orderService.selectComplete2();
        List<Order> orders = orderService.selectCompletemEmo3();
        for (Order order : orders) {
            try{
                ReturnT<String> result = reviewOrderSyncHandler.start(order);
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
@@ -1,5 +1,6 @@
package com.zy.asrs.task.kingdee;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.core.ReturnT;
@@ -34,12 +35,18 @@
        if(!SaveOrderSwitch){
            return;
        }
        List<Order> orders = orderService.selectComplete();
        List<Order> orders = orderService.selectCompletemEmo1();
        for (Order order : orders) {
            try{
                ReturnT<String> result = saveOrderSyncHandler.start(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]保存至erp失败", order.getOrderNo());
                if(order.getSettle()==4){
                    order.setMemo("2");
                    order.setUpdateTime(new Date());
                    orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
                }else{
                    ReturnT<String> result = saveOrderSyncHandler.start(order);
                    if (!result.isSuccess()) {
                        log.error("单据[orderNo={}]保存至erp失败", order.getOrderNo());
                    }
                }
            }catch (Exception e){
                Order order1 = orderService.selectById(order.getId());
src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java
@@ -36,7 +36,7 @@
        if(!SubmitOrderSwitch){
            return;
        }
        List<Order> orders = orderService.selectComplete1();
        List<Order> orders = orderService.selectCompletemEmo2();
        for (Order order : orders) {
            try{
                ReturnT<String> result = submitOrderSyncHandler.start(order);
src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java
@@ -69,12 +69,12 @@
        }
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
        if (kingDeeUtilType.entryId>1){
            Order order1 = orderService.selectById(order.getId());
            order1.setUpdateTime(new Date());
            orderService.updateById(order1);
            return SUCCESS;
        }
//        if (kingDeeUtilType.entryId>1){
//            Order order1 = orderService.selectById(order.getId());
//            order1.setUpdateTime(new Date());
//            orderService.updateById(order1);
//            return SUCCESS;
//        }
        //条件拼接
        log.info("条件拼接");
        String entryIds = null;
@@ -131,21 +131,19 @@
                JsonNode rootNode = objectMapper.readTree(response);
                bool = rootNode.get("Result").get("ResponseStatus").get("IsSuccess").asBoolean();
                //下推完成原订单4转6  6.上报完成
                //下推完成原订单0转1  1.下推完成
                if(bool){
                    //获取下推订单号
                    String number=rootNode.get("Result").get("ResponseStatus").get("SuccessEntitys").get(0).get("Number").asText();
                    success = true;
                    order.setSettle(6L);
//                    order.setSettle(6L);
                    order.setMemo("1");
                    order.setShipCode(number);//下推订单号
                    order.setUpdateTime(new Date());
                    orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
                }
            }
            if (!bool1.equals("true") || !bool){
                order.setSettle(7L);
                order.setUpdateTime(new Date());
                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
            }
        } catch (Exception e) {
            log.info("下推error:"+response);
            log.error("fail", e);
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java
@@ -4,10 +4,14 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderService;
@@ -21,9 +25,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.Set;
import java.util.*;
/**
 * Created by vincent on 2023/10/21
@@ -47,6 +49,8 @@
    private DocTypeService docTypeService;
    @Autowired
    private LoginAuthenticationHandler loginAuthenticationHandler;
    @Autowired
    private OrderDetlMapper orderDetlMapper;
    @Transactional
    public ReturnT<String> start(Order order) {
@@ -60,11 +64,11 @@
        //条件拼接
        JSONObject dataJsonObject = new JSONObject();
        dataJsonObject.put("Numbers",order.getOrderNo());
        dataJsonObject.put("Numbers", "CGTL10124120003");
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("data", dataJsonObject);
        jsonObject.put("FormId",kingDeeUtilType.formId);
        jsonObject.put("FormId", kingDeeUtilType.ruleId);
        String add = jsonObject.toJSONString();
        //上报
        String response = "";
@@ -82,19 +86,33 @@
                    .doPost();
            JSONObject data = JSON.parseObject(response);
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
            String bool1=IsSuccess.toString();
            String bool1 = IsSuccess.toString();
            if(bool1.equals("true")){
                ObjectMapper objectMapper =  new ObjectMapper();
            if (bool1.equals("true")) {
                ObjectMapper objectMapper = new ObjectMapper();
                JsonNode rootNode = objectMapper.readTree(response);
                boolean bool = rootNode.get("Result").get("ResponseStatus").get("IsSuccess").asBoolean();
                log.info("审核bool:"+bool);
                //审核完成原订单6转7  7.审核完成
                if(bool){
                log.info("审核bool:" + bool);
                //审核完成原订单2转3  3.审核完成
                if (bool) {
                    success = true;
                    order.setSettle(10L);
                    order.setMemo("3");//审核完成
                    order.setUpdateTime(new Date());
                    orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
                    //判断订单是否已经全部做完
                    List<OrderDetl> orderDetls = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()));
                    boolean complete = true;
                    for (OrderDetl orderDetl : orderDetls) {
                        if (orderDetl.getAnfme() > orderDetl.getQty()) {
                            complete = false;
                            break;
                        }
                    }
                    if(complete){
                      order.setSettle(8L);
                    }
                    orderService.update(order, new EntityWrapper<Order>().eq("order_no", order.getOrderNo()));
                }
            }
        } catch (Exception e) {
@@ -105,8 +123,8 @@
            try {
                // 保存接口日志
                apiLogService.save(
                        "审核",
                        URL+ outaddressAudit,
                        " 审核",
                        URL + outaddressAudit,
                        null,
                        "127.0.0.1",
                        add,
@@ -119,6 +137,7 @@
        }
        return SUCCESS;
    }
    public static Object findValueByKey(JSONObject json, String key) {
        Set<String> keySet = json.keySet();
        for (String k : keySet) {
@@ -129,13 +148,13 @@
                int size = ((JSONArray) v).size();
                for (int i = 0; i <= size - 1; i++) {
                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
                    if (result != null){
                    if (result != null) {
                        return result;
                    }
                }
            } else if (v instanceof JSONObject){
            } else if (v instanceof JSONObject) {
                Object result = findValueByKey((JSONObject) v, key);
                if (result != null){
                if (result != null) {
                    return result;
                }
            }
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -66,17 +66,17 @@
            return SUCCESS;
        }
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
        if (kingDeeUtilType.entryId!=2){
            return SUCCESS;
        }
//        if (kingDeeUtilType.entryId!=2){
//            return SUCCESS;
//        }
        Date now = new Date();
        //条件拼接
        JSONObject jsonObjectFBillTypeID = new JSONObject();
        JSONObject jsonObjectFPickerId = new JSONObject();
        if (kingDeeUtilType.pakIn==1){
            jsonObjectFBillTypeID.put("FNUMBER","QTRKD01_SYS");
            jsonObjectFBillTypeID.put("FNUMBER","TLD01_SYS");
        }else {
            jsonObjectFBillTypeID.put("FNUMBER","QTCKD01_SYS");
            jsonObjectFBillTypeID.put("FNUMBER","TLD01_SYS");
            jsonObjectFPickerId.put("FStaffNumber","X0103_GLGW074_1");
        }
@@ -153,13 +153,13 @@
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
            String bool1=IsSuccess.toString();
            boolean bool = false;
            //保存完成原订单4转5 6.保存完成
            //保存完成原订单5转6 6.保存完成
            if(bool1.equals("true")){
                ObjectMapper objectMapper =  new ObjectMapper();
                JsonNode rootNode = objectMapper.readTree(response);
                bool = rootNode.get("Result").get("ResponseStatus").get("IsSuccess").asBoolean();
                log.info("审核bool:"+bool);
                //提交完成原订单4转6  6.上报完成
                log.info("保存bool:"+bool);
                //提交完成原订单5转6  6.上报完成
                if(bool){
                    success = true;
                    order.setSettle(6L);
@@ -168,11 +168,11 @@
                }
            }
            if (!bool1.equals("true") || !bool){
                order.setSettle(7L);
                order.setUpdateTime(new Date());
                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
            }
//            if (!bool1.equals("true") || !bool){
//                order.setSettle(7L);
//                order.setUpdateTime(new Date());
//                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
//            }
        } catch (Exception e) {
            log.error("fail", e);
src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java
@@ -57,15 +57,16 @@
            return SUCCESS;
        }
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
        if (kingDeeUtilType.entryId!=2){
            return SUCCESS;
        }
//        if (kingDeeUtilType.entryId!=2){
//            return SUCCESS;
//        }
        //条件拼接
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("Numbers",order.getOrderNo());
//        jsonObject.put("Ids","100083");
        jsonObject.put("Numbers", order.getOrderNo());
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("data", jsonObject);
        jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId);
        jsonObject1.put("FormId",kingDeeUtilType.ruleId);
        String add = jsonObject1.toJSONString();
        //上报
        String response = "";
@@ -84,16 +85,17 @@
//            JSONObject data = JSON.parseObject(response);
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
            String bool1=IsSuccess.toString();
            //提交完成原订单8转6
            //提交完成原订单6转7
            if(bool1.equals("true")){
                ObjectMapper objectMapper =  new ObjectMapper();
                JsonNode rootNode = objectMapper.readTree(response);
                boolean bool = rootNode.get("Result").get("ResponseStatus").get("IsSuccess").asBoolean();
                log.info("审核bool:"+bool);
                //提交完成原订单5转6  6.提交完成
                //提交完成原订单1转2  2.提交完成
                if(bool){
                    success = true;
                    order.setSettle(5L);
//                    order.setSettle(7L);
                    order.setMemo("2");
                    order.setUpdateTime(new Date());
                    orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
                }
src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
@@ -9,7 +9,7 @@
    /*
    * 退货通知单至销售退货单单据唯一标识:一级:SalReturnNotice-SalReturnstock  二级:a0ab8e5c-5224-4ba2-b31f-b061e64aa1a2
    * */
    SAL_RETURNNOTICE(3, "退货通知单-销售退货单","SAL_RETURNNOTICE","","销售退货单","SAL_RETURNSTOCK",0,"SalReturnNotice-SalReturnstock",0),
    SAL_RETURNNOTICE(3, "退货通知单-销售退货单","SAL_RETURNNOTICE","","销售退货单","SAL_RETURNSTOCK",1,"SalReturnNotice-SalReturnstock",0),
    /*
    * 采购收料单至采购入库单唯一标识:一级:PUR_ReceiveBill-STK_InStock  二级:b60e30ca-634c-4f92-b874-db9837496705
    * */
@@ -17,7 +17,7 @@
    /*
    * 退料申请单至采购退料单单据唯一标识:PUR_MRAPP-PUR_MRB
    * */
    PUR_MRAPP(5, "退料申请单-采购退料单","PUR_MRAPP","","采购退料单","PUR_MRB",1,"PUR_MRAPP-PUR_MRB",0),
    PUR_MRAPP(5, "退料申请单-采购退料单","PUR_MRAPP","","采购退料单","TLD01_SYS",1,"PUR_MRB",0),
    /*
    * 生产用料清单到生产领料单唯一标识:一级:PRD_PPBOM2PICKMTRL_NORMAL  二级:3539ff08-0c46-435d-a8cd-b6308b0b57b5
    * */
src/main/resources/application.yml
@@ -69,8 +69,8 @@
    ReviewOrderSwitch: true
    #2提交单据开关
    SaveOrderSwitch: true
    #1保存
    SubmitOrderSwitch: false
    #提交
    SubmitOrderSwitch: true
    #下推单据开关
    PushDowmOrderSwitch: true
  #  地址
@@ -84,9 +84,9 @@
    pushDowmAudit: K3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Push.common.kdsvc
    #结果上报(保存)单地址
    outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
    #结果上报(提交)单地址  米多无用
    #结果上报(提交)单地址
    outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
    #结果上报(审核)单地址 米多无用
    #结果上报(审核)单地址
    outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
  #  登录账号管理
  login :
src/main/resources/mapper/OrderMapper.xml
@@ -68,16 +68,16 @@
        order by update_time asc
    </select>
    <select id="selectComplete1" resultMap="BaseResultMap">
    <select id="selectCompleteSave" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
        and settle = 5
        and status = 1
          and settle = 5
          and status = 1
        order by update_time asc
    </select>
    <select id="selectComplete2" resultMap="BaseResultMap">
    <select id="selectComplete1" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
@@ -86,6 +86,50 @@
        order by update_time asc
    </select>
    <select id="selectComplete2" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
        and settle = 7
        and status = 1
        order by update_time asc
    </select>
    <select id="selectCompleteMome0" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
          and memo = '0'
          and status = 1
        order by update_time asc
    </select>
    <select id="selectCompleteMome1" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
          and memo = '1'
          and status = 1
        order by update_time asc
    </select>
    <select id="selectCompleteMome2" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
          and memo = '2'
          and status = 1
        order by update_time asc
    </select>
    <select id="selectCompleteMome3" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
          and memo = '3'
          and status = 1
        order by update_time asc
    </select>
    <select id="selectInOrOutOrders" resultMap="BaseResultMap">
        SELECT * FROM man_order o left join man_doc_type d on o.doc_type = d.doc_id WHERE d.pakin = #{flag} and o.settle in (1,2)
    </select>