#
18516761980
2021-09-29 15c8f00ab3a1e3d2d96b56bae0ec11efedd60231
src/main/java/com/zy/common/service/erp/ErpService.java
@@ -1,14 +1,20 @@
package com.zy.common.service.erp;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.service.OutStockMainService;
import com.zy.asrs.service.OutStockService;
import com.zy.common.service.erp.dto.InStockDto;
import com.zy.common.service.erp.dto.PInStockDto;
import com.zy.common.service.erp.entity.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -23,6 +29,8 @@
    @Autowired
    private ErpSqlServer erpSqlServer;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public List<StockEntryCensus> get(){
        return erpSqlServer.select("select * from StockEntryCensus where 1=1",StockEntryCensus.class);
@@ -36,8 +44,9 @@
        return erpSqlServer.update("delete from M_item where 1=1 and Mnumber = '" + Mnumber + "'") > 0;
    }
    //////////////////////成品、原材料入库通知单数据提取//////////////////////////////////////////////////
    /**
     * 获取未读取过的原材料入库单据
     * 提取中间表原材料入库单据
     */
    public List<InStockDto> getReadyInStock() {
        List<InStockDto> result = new ArrayList<>();
@@ -59,30 +68,114 @@
    }
    /**
     * 获取未读取过的成品入库单据
     * 查询同一单号是否存在相同物料的最大数量值,
     * @return
     */
    public List<CPICMO> getReadyCPICMO() {
        String sql = "select * from CPICMO where 1=1 and Fflag_rw = 0";
        return erpSqlServer.select(sql, CPICMO.class);
    public Number QueryFnumberInCount(Integer FInterID) {
        String sql = "select top 1 qty from (\n" +
                "select Fnumber,count(*) as qty from InStockbill a,InStockbillEntry b\n" +
                "where a.FInterID=b.FInterID and a.FInterID=" + FInterID +
                " group by Fnumber\n" +
                ") a\n" +
                "order by qty desc";
        return erpSqlServer.executeQueryCount(sql,"qty");
    }
    /**
     * 获取入库物流明细
     * @param fInterID 单据内码
     */
    private List<InStockBillEntry> getInStockBillEntry(Integer fInterID) {
        String sql = "select * from InStockBillEntry where 1=1 and FSourceBillNo!='' and FAuxCommitQty=0 and FInterID = " + fInterID;
        return erpSqlServer.select(sql, InStockBillEntry.class);
    }
    /**
     * 将未读的原材料入库单据设置为已读
     */
    public boolean haveReadInStock(String FBillNo){
        String sql = "update InStockBill set Fflag_rw = 1 where FBillNo = ''{0}''";
        sql = MessageFormat.format(sql, FBillNo);
    public boolean haveReadInStock(String FBillNo, Integer value){
        String sql = "update InStockBill set Fflag_rw = {1,number,#} where FBillNo = ''{0}''";
        sql = MessageFormat.format(sql, FBillNo, value);
        return erpSqlServer.update(sql) > 0;
    }
    /**
     * 提取中间表成品入库单据
     */
    public List<CPICMO> getReadyCPICMO() {
        String sql = "select * from CPICMO where 1=1 and FSourceBillNo!='' and FAuxCommitQty=0 and Fflag_rw = 0";
        return erpSqlServer.select(sql, CPICMO.class);
    }
    /**
     * 查询同一单号是否存在相同物料的最大数量值,
     * @return
     */
    public Number QueryFnumberCPICMOCount(Integer FInterID) {
        String sql = "select top 1 qty from (\n" +
                "select count(*) as qty from CPICMO\n" +
                "where FInterID=" + FInterID +
                " group by Fnumber\n" +
                ") a\n" +
                "order by qty desc";
        return erpSqlServer.executeQueryCount(sql,"qty");
    }
    /**
     * 将未读的成品入库单据设置为已读
     */
    public boolean haveReadCPICMO(String FBillNo){
        String sql = "update CPICMO set Fflag_rw = 1 where FBillNo = ''{0}''";
        sql = MessageFormat.format(sql, FBillNo);
    public boolean haveReadCPICMO(Integer FInterID, Integer value){
        String sql = "update CPICMO set Fflag_rw = {1,number,#} where FInterID = ''{0,number,#}''";
        sql = MessageFormat.format(sql, FInterID, value);
        return erpSqlServer.update(sql) > 0;
    }
    ////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////// 出库通知单数据提取//////////////////////////////////////////////////
    /**
     * 查询erp中间表表头OutStockBill数据
     * @return
     */
    public List<OutStockBill> syncOutStock() {
        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class);
//        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class);
    }
    /**
     * 查询同一单号是否存在相同物料的最大数量值,
     * @return
     */
    public Number QueryFnumberOutCount(Integer FInterID) {
        String sql = "select top 1 qty from (\n" +
                "select Fnumber,count(*) as qty from OutStockbill a,OutStockbillEntry b\n" +
                "where a.FInterID=b.FInterID and a.FInterID=" + FInterID +
                " group by Fnumber\n" +
                ") a\n" +
                "order by qty desc";
        return erpSqlServer.executeQueryCount(sql,"qty");
    }
    /**
     * 查询erp中间表表体OutStockbillEntry数据
     * @param FInterID
     * @return
     */
    public List<OutStockBillEntry> syncOutStockDetail(Integer FInterID) {
        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBillEntry where FSourceBillNo!='' and FAuxCommitQty=0 and FInterID=" + FInterID, OutStockBillEntry.class);
    }
    /**
     * 将提取完成的成品出库通知单据设置为已读
     */
    public boolean haveReadOutBill(String FBrNo, Integer FInterID, Integer value){
        String sql = "update OutStockbill set Fflag_rw = {2,number,#} where FBillNo = ''{0}'' and FInterID = {1,number,#} ";
        sql = MessageFormat.format(sql, FBrNo, FInterID, value);
        return erpSqlServer.update(sql) > 0;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 提交实际收货数量
@@ -100,15 +193,29 @@
     * 原材料增量入库
     */
    public boolean incrementPakIn(String FBillNo, String Fnumber, Double increment) {
//        String[] arrays = Fnumbers.split("|");
//        String Fnumber="",sBillNo=""; //产品代码,生产单号
        String sql = "update ise \n" +
                "set ise.FAuxCommitQty = (ise.FAuxCommitQty + {0,number,#}) \n" +
                "from InStockBillEntry ise\n" +
                "left join InStockbill isb on isb.FInterID = ise.FInterID\n" +
                "where 1=1 \n" +
                "and ise.Fnumber = ''{1}''\n" +
                "and isb.FBillNo= ''{2}''";
                "and isb.FBillNo= ''{2}''\n";
        sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
//        Fnumber = arrays[0];
//        if(arrays.length>1){
//            sBillNo = arrays[1];
//            sql = sql + "and ise.FSourceBillNo= ''{3}''";
//            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo, sBillNo);
//        } else {
//            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
//        }
        if (erpSqlServer.update(sql) > 0) {
//            log.error("更新ERP中间表成功===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumber,increment);
            List<InStockBillEntry> inStockBillEntries = getInStockBillEntry(FBillNo);
            boolean complete = true;
            // 比较单笔资料物料是否全部完成
@@ -133,6 +240,7 @@
            }
            return true;
        } else {
            log.error("更新ERP中间表失败===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumber,increment);
            return false;
        }
    }
@@ -141,20 +249,38 @@
     * 成品增量入库
     */
    public boolean incrementCPakIn(String FBillNo, String Fnumber, Double increment) {
        String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}''";
//        String[] arrays = Fnumbers.split("|");
//        String Fnumber="",sBillNo=""; //产品代码,生产单号
        String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}'' ";
        sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
//        Fnumber = arrays[0];
//        if(arrays.length>1){
//            sBillNo = arrays[1];
//            sql = sql + " and FSourceBillNo= ''{3}''";
//            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo, sBillNo);
//        } else {
//            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
//        }
        if (erpSqlServer.update(sql) > 0) {
            sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
            sql = MessageFormat.format(sql, Fnumber, FBillNo);
//            if(arrays.length>1) {
//                sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}'' and FSourceBillNo= ''{2}''";
//                sql = MessageFormat.format(sql, Fnumber, FBillNo, sBillNo);
//            } else {
                sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
                sql = MessageFormat.format(sql, Fnumber, FBillNo);
//            }
            List<CPICMO> select = erpSqlServer.select(sql, CPICMO.class);
            CPICMO cpicmo = select.get(0);
            boolean complete = false;
            if (cpicmo.getFQty() > 0) {
                if (cpicmo.getFAuxCommitQty() >= cpicmo.getFQty()) {
                if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFQty())) {
                    complete = true;
                }
            } else {
                if (cpicmo.getFAuxCommitQty() >= cpicmo.getFAuxQty()) {
                if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFAuxQty())) {
                    complete = true;
                }
            }
@@ -224,29 +350,22 @@
    /**
     * 库存盘点
     * @param FItemID 物料内码
     * @param FNumber 物料内码
     * @param qty 数量(正表示盘盈、负表示盘亏)
     */
    public boolean checkStockEntity(Integer FItemID, Integer FEntryID, Double qty){
        String sql = "insert [dbo].[StockCheckRecord] ([FItemID],[FEntryID], [CheckQty],[Fflag_rw],[Fflag_finish]) values ({0,number,#}, {1,number,#}, {2,number,#}, 0, 0);";
        sql = MessageFormat.format(sql, FItemID, FEntryID, qty);
    public boolean checkStockEntity(String FNumber, Double qty){
//        String[] arrays = FNumber.split("|");
//        FNumber = arrays[0];
        String sql = "insert [dbo].[StockCheckRecord] ([FNumber],[CheckQty],[Fflag_rw],[Fflag_finish],[sync_id]) values (''{0}'', {1,number,#}, 0, 0, -1);";
        sql = MessageFormat.format(sql, FNumber, qty);
        if (erpSqlServer.update(sql) == 0) {
            log.error("{}新增盘点记录失败", FItemID);
            log.error("{}新增盘点记录失败", FNumber);
            return false;
        }
        return true;
    }
    // 私有方法 --------------------------------------------------------------------------------------
    /**
     * 获取入库物流明细
     * @param fInterID 单据内码
     */
    private List<InStockBillEntry> getInStockBillEntry(Integer fInterID) {
        String sql = "select * from InStockBillEntry where 1=1 and FInterID = " + fInterID;
        return erpSqlServer.select(sql, InStockBillEntry.class);
    }
    private List<InStockBillEntry> getInStockBillEntry(String FBillNo) {
        String sql = "select ise.* from InStockBillEntry ise left join InStockbill isb on isb.FInterID = ise.FInterID where 1=1 and isb.FBillNo = '" + FBillNo +"'";
@@ -266,187 +385,119 @@
     * 成品入库单标记完成
     */
    private boolean completeCPakIn(String FBillNo, String Fnumber){
        String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}''";
        sql = MessageFormat.format(sql, FBillNo, Fnumber);
//        if(Cools.isEmpty(sBillNo)) {
            String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}''";
            sql = MessageFormat.format(sql, FBillNo, Fnumber);
            return erpSqlServer.update(sql) > 0;
//        } else {
//            String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}'' and FSourceBillNo= ''{2}'' ";
//            sql = MessageFormat.format(sql, FBillNo, Fnumber, sBillNo);
//            return erpSqlServer.update(sql) > 0;
//        }
    }
//    /**
//     * 出库单标记完成
//     */
//    private boolean completePakOut(Integer fInterID){
//        String sql = "update OutStockBill set Fflag_finish = 1 where FInterID = {0,number,#}";
//        sql = MessageFormat.format(sql, fInterID);
//        return erpSqlServer.update(sql) > 0;
//    }
    /* 成品增量出库 */
    public boolean incrementCPakOut(Integer FInterID, String Fnumber, Double increment, String FBillNo) {
//        String[] arrays = Fnumbers.split("|");
//        String Fnumber="",sBillNo=""; //产品代码,生产单号
        String sql = "update OutStockbillEntry set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FInterID = {2,number,#} ";
        sql = MessageFormat.format(sql, increment, Fnumber, FInterID);
//        Fnumber = arrays[0];
//        if(arrays.length>1){
//            sBillNo = arrays[1];
//            sql = sql + " and FSourceBillNo= ''{3}''";
//            sql = MessageFormat.format(sql, increment, Fnumber, FInterID, sBillNo);
//        } else {
//            sql = MessageFormat.format(sql, increment, Fnumber, FInterID);
//        }
        try {
            if (erpSqlServer.update(sql) > 0) {
//                if(arrays.length>1) {
//                    sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#} and FSourceBillNo= ''{2}''";
//                    sql = MessageFormat.format(sql, Fnumber, FInterID, sBillNo);
//                } else {
                    sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#}";
                    sql = MessageFormat.format(sql, Fnumber, FInterID);
//                }
                List<OutStockBillEntry> select = erpSqlServer.select(sql, OutStockBillEntry.class);
                OutStockBillEntry outStockBillEntry = select.get(0);
                boolean complete = false;
                if (outStockBillEntry.getFQty().compareTo(BigDecimal.ZERO) == 1) {
                    if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFQty()) > -1) {
                        complete = true;
                    }
                } else {
                    if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFAuxQty()) > -1) {
                        complete = true;
                    }
                }
                if (complete) {
                    if (!completeCPakOut(FBillNo)) {
                        log.error("{}出库单标记完成失败", FBillNo);
                    }
                    int updateCount = jdbcTemplate.update("update OutStockbill set Fflag_finish=1 where FBillNo='" + FBillNo + "'");
                    if(updateCount<=0){
                        throw new CoolException("更新出库通知档完成标记失败[FBillNo="+FBillNo+"]");
                    }
                }
                return true;
            } else {
                return false;
            }
        }catch (Exception e){
            e.printStackTrace();
            log.error("incrementCPakOut----" + sql);
            return false;
        }
    }
    /* 成品出库单标记完成 */
    private boolean completeCPakOut(String FBillNo){
        String sql = "update OutStockbill set Fflag_finish = 1 where FBillNo = ''{0}''";
        sql = MessageFormat.format(sql, FBillNo);
        return erpSqlServer.update(sql) > 0;
    }
    /**
     * 出库单标记完成
     */
    private boolean completePakOut(Integer fInterID){
        String sql = "update OutStockBill set Fflag_finish = 1 where FInterID = {0,number,#}";
        sql = MessageFormat.format(sql, fInterID);
        return erpSqlServer.update(sql) > 0;
//    public boolean updateFnumber(Integer itemId, String FNumber){
//        String sql = "update InStockbillEntry set Fnumber = ''{0}'' where FItemID = {1,number,#}";
//        sql = MessageFormat.format(sql, FNumber, itemId);
//        return erpSqlServer.update(sql) > 0;
//    }
//    public boolean updateCFnumber(Integer itemId, String FNumber){
//        String sql = "update CPICMO set Fnumber = ''{0}'' where FItemID = {1,number,#}";
//        sql = MessageFormat.format(sql, FNumber, itemId);
//        return erpSqlServer.update(sql) > 0;
//    }
    public List<CPICMO> queryErpCPICMO(String fbillNo, String fsourceBillNo) {
        String sql = "select * from CPICMO";
        if (!Cools.isEmpty(fbillNo) && Cools.isEmpty(fsourceBillNo)) {
            sql = "select * from CPICMO where FBillNo = ''{0}''";
            sql = MessageFormat.format(sql, fbillNo);
        } else if (Cools.isEmpty(fbillNo) && !Cools.isEmpty(fsourceBillNo)) {
            sql = "select * from CPICMO where FSourceBillNo = ''{0}''";
            sql = MessageFormat.format(sql, fsourceBillNo);
        } else if (!Cools.isEmpty(fbillNo) && !Cools.isEmpty(fsourceBillNo)) {
            sql = "select * from CPICMO where FBillNo = ''{0}'' and FSourceBillNo = ''{1}''";
            sql = MessageFormat.format(sql, fbillNo, fsourceBillNo);
        }
        return erpSqlServer.select(sql, CPICMO.class);
    }
    public boolean syncOutStock() {
        return erpSqlServer.update("MERGE INTO xtyasrs.dbo.OutStockBill AS a \n" +
                "USING (SELECT * FROM  xtyasrs_dual.dbo.OutStockBill c)\n" +
                "AS b\n" +
                " ON a.FInterID = b.FInterID\n" +
                "WHEN MATCHED THEN\n" +
                "UPDATE SET \n" +
                "FBrNo = b.FBrNo,\n" +
                "FInterID = b.FInterID,\n" +
                "FBillNo = b.FBillNo,\n" +
                "FTranType = b.FTranType,\n" +
                "FSalType = b.FSalType,\n" +
                "FCustID = b.FCustID,\n" +
                "FDate = b.FDate,\n" +
                "FStockID = b.FStockID,\n" +
                "FAdd = b.FAdd,\n" +
                "FNote = b.FNote,\n" +
                "FEmpID = b.FEmpID,\n" +
                "FCheckerID = b.FCheckerID,\n" +
                "FBillerID = b.FBillerID,\n" +
                "FManagerID = b.FManagerID,\n" +
                "FClosed = b.FClosed,\n" +
                "FInvoiceClosed = b.FInvoiceClosed,\n" +
                "FBClosed = b.FBClosed,\n" +
                "FDeptID = b.FDeptID,\n" +
                "FSettleID = b.FSettleID,\n" +
                "FTranStatus = b.FTranStatus,\n" +
                "FExchangeRate = b.FExchangeRate,\n" +
                "FCurrencyID = b.FCurrencyID,\n" +
                "FStatus = b.FStatus,\n" +
                "FCancellation = b.FCancellation,\n" +
                "FMultiCheckLevel1 = b.FMultiCheckLevel1,\n" +
                "FMultiCheckLevel2 = b.FMultiCheckLevel2,\n" +
                "FMultiCheckLevel3 = b.FMultiCheckLevel3,\n" +
                "FMultiCheckLevel4 = b.FMultiCheckLevel4,\n" +
                "FMultiCheckLevel5 = b.FMultiCheckLevel5,\n" +
                "FMultiCheckLevel6 = b.FMultiCheckLevel6,\n" +
                "FMultiCheckDate1 = b.FMultiCheckDate1,\n" +
                "FMultiCheckDate2 = b.FMultiCheckDate2,\n" +
                "FMultiCheckDate3 = b.FMultiCheckDate3,\n" +
                "FMultiCheckDate4 = b.FMultiCheckDate4,\n" +
                "FMultiCheckDate5 = b.FMultiCheckDate5,\n" +
                "FMultiCheckDate6 = b.FMultiCheckDate6,\n" +
                "FCurCheckLevel = b.FCurCheckLevel,\n" +
                "FRelateBrID = b.FRelateBrID,\n" +
                "FCheckDate = b.FCheckDate,\n" +
                "FExplanation = b.FExplanation,\n" +
                "FFetchAdd = b.FFetchAdd,\n" +
                "FSelTranType = b.FSelTranType,\n" +
                "FChildren = b.FChildren,\n" +
                "FBrID = b.FBrID,\n" +
                "FAreaPS = b.FAreaPS,\n" +
                "FPOOrdBillNo = b.FPOOrdBillNo,\n" +
                "FManageType = b.FManageType,\n" +
                "FPrintCount = b.FPrintCount,\n" +
                "Fflag_rw = b.Fflag_rw,\n" +
                "Fflag_finish = b.Fflag_finish,\n" +
                "FWeiOrder = b.FWeiOrder,\n" +
                "FWeiOpenID = b.FWeiOpenID,\n" +
                "FOrderBillNo = b.FOrderBillNo,\n" +
                "FWLNumber = b.FWLNumber,\n" +
                "FWLCompany = b.FWLCompany,\n" +
                "FReturnFundType = b.FReturnFundType\n" +
                "WHEN NOT MATCHED  THEN\n" +
                "\tINSERT (FBrNo, FInterID, FBillNo, FTranType, FSalType, FCustID, FDate, FStockID, FAdd, FNote, FEmpID, FCheckerID, FBillerID, FManagerID, FClosed, FInvoiceClosed, FBClosed, FDeptID, FSettleID, FTranStatus, FExchangeRate, FCurrencyID, FStatus, FCancellation, FMultiCheckLevel1, FMultiCheckLevel2, FMultiCheckLevel3, FMultiCheckLevel4, FMultiCheckLevel5, FMultiCheckLevel6, FMultiCheckDate1, FMultiCheckDate2, FMultiCheckDate3, FMultiCheckDate4, FMultiCheckDate5, FMultiCheckDate6, FCurCheckLevel, FRelateBrID, FCheckDate, FExplanation, FFetchAdd, FSelTranType, FChildren, FBrID, FAreaPS, FPOOrdBillNo, FManageType, FPrintCount, Fflag_rw, Fflag_finish, FWeiOrder, FWeiOpenID, FOrderBillNo, FWLNumber, FWLCompany, FReturnFundType) \n" +
                "\tVALUES (b.FBrNo, b.FInterID, b.FBillNo, FTranType, FSalType, FCustID, FDate, FStockID, FAdd, FNote, FEmpID, FCheckerID, FBillerID, FManagerID, FClosed, FInvoiceClosed, FBClosed, FDeptID, FSettleID, FTranStatus, FExchangeRate, FCurrencyID, FStatus, FCancellation, FMultiCheckLevel1, FMultiCheckLevel2, FMultiCheckLevel3, FMultiCheckLevel4, FMultiCheckLevel5, FMultiCheckLevel6, FMultiCheckDate1, FMultiCheckDate2, FMultiCheckDate3, FMultiCheckDate4, FMultiCheckDate5, FMultiCheckDate6, FCurCheckLevel, FRelateBrID, FCheckDate, FExplanation, FFetchAdd, FSelTranType, FChildren, FBrID, FAreaPS, FPOOrdBillNo, FManageType, FPrintCount, Fflag_rw, Fflag_finish, FWeiOrder, FWeiOpenID, FOrderBillNo, FWLNumber, FWLCompany, FReturnFundType);")> 0;
    }
    public boolean syncOutStockDetail() {
        return erpSqlServer.update("MERGE INTO xtyasrs.dbo.OutStockBillEntry AS a \n" +
                "USING (SELECT * FROM  xtyasrs_dual.dbo.OutStockBillEntry c)\n" +
                "AS b\n" +
                " ON (a.FInterID = b.FInterID and a.FEntryID = b.FEntryID)\n" +
                "WHEN MATCHED THEN\n" +
                "UPDATE SET\n" +
                "FBrNo = b.FBrNo,\n" +
                "FInterID = b.FInterID,\n" +
                "FEntryID = b.FEntryID,\n" +
                "FDetailID = b.FDetailID,\n" +
                "FItemID = b.FItemID,\n" +
                "FQty = b.FQty,\n" +
                "FCommitQty = b.FCommitQty,\n" +
                "FPrice = b.FPrice,\n" +
                "FAmount = b.FAmount,\n" +
                "FOrderInterID = b.FOrderInterID,\n" +
                "FDate = b.FDate,\n" +
                "FNote = b.FNote,\n" +
                "FInvoiceQty = b.FInvoiceQty,\n" +
                "FBCommitQty = b.FBCommitQty,\n" +
                "FUnitID = b.FUnitID,\n" +
                "FAuxBCommitQty = b.FAuxBCommitQty,\n" +
                "FAuxCommitQty = b.FAuxCommitQty,\n" +
                "FAuxInvoiceQty = b.FAuxInvoiceQty,\n" +
                "FAuxPrice = b.FAuxPrice,\n" +
                "FAuxQty = b.FAuxQty,\n" +
                "FSourceEntryID = b.FSourceEntryID,\n" +
                "FMapNumber = b.FMapNumber,\n" +
                "FMapName = b.FMapName,\n" +
                "FAuxPropID = b.FAuxPropID,\n" +
                "FBatchNo = b.FBatchNo,\n" +
                "FCheckDate = b.FCheckDate,\n" +
                "FExplanation = b.FExplanation,\n" +
                "FFetchAdd = b.FFetchAdd,\n" +
                "FFetchDate = b.FFetchDate,\n" +
                "FMultiCheckDate1 = b.FMultiCheckDate1,\n" +
                "FMultiCheckDate2 = b.FMultiCheckDate2,\n" +
                "FMultiCheckDate3 = b.FMultiCheckDate3,\n" +
                "FMultiCheckDate4 = b.FMultiCheckDate4,\n" +
                "FMultiCheckDate5 = b.FMultiCheckDate5,\n" +
                "FMultiCheckDate6 = b.FMultiCheckDate6,\n" +
                "FSecCoefficient = b.FSecCoefficient,\n" +
                "FSecQty = b.FSecQty,\n" +
                "FSecCommitQty = b.FSecCommitQty,\n" +
                "FSourceTranType = b.FSourceTranType,\n" +
                "FSourceInterId = b.FSourceInterId,\n" +
                "FSourceBillNo = b.FSourceBillNo,\n" +
                "FContractInterID = b.FContractInterID,\n" +
                "FContractEntryID = b.FContractEntryID,\n" +
                "FContractBillNo = b.FContractBillNo,\n" +
                "FOrderEntryID = b.FOrderEntryID,\n" +
                "FOrderBillNo = b.FOrderBillNo,\n" +
                "FStockID = b.FStockID,\n" +
                "FBackQty = b.FBackQty,\n" +
                "FAuxBackQty = b.FAuxBackQty,\n" +
                "FSecBackQty = b.FSecBackQty,\n" +
                "FStdAmount = b.FStdAmount,\n" +
                "FPlanMode = b.FPlanMode,\n" +
                "FMTONo = b.FMTONo,\n" +
                "FStockQtyOnlyForShow = b.FStockQtyOnlyForShow,\n" +
                "FComplexQty = b.FComplexQty,\n" +
                "Fmodel = b.Fmodel,\n" +
                "Fname = b.Fname,\n" +
                "Fnumber = b.Fnumber,\n" +
                "FBarCode = b.FBarCode,\n" +
                "FBTPLCommitQty = b.FBTPLCommitQty,\n" +
                "FTPLCommitQty = b.FTPLCommitQty,\n" +
                "fsecinvoiceqty = b.fsecinvoiceqty\n" +
                "WHEN NOT MATCHED  THEN\n" +
                "\tINSERT (FBrNo, FInterID, FEntryID, FDetailID, FItemID, FQty, FCommitQty, FPrice, FAmount, FOrderInterID, FDate, FNote, FInvoiceQty, FBCommitQty, FUnitID, FAuxBCommitQty, FAuxCommitQty, FAuxInvoiceQty, FAuxPrice, FAuxQty, FSourceEntryID, FMapNumber, FMapName, FAuxPropID, FBatchNo, FCheckDate, FExplanation, FFetchAdd, FFetchDate, FMultiCheckDate1, FMultiCheckDate2, FMultiCheckDate3, FMultiCheckDate4, FMultiCheckDate5, FMultiCheckDate6, FSecCoefficient, FSecQty, FSecCommitQty, FSourceTranType, FSourceInterId, FSourceBillNo, FContractInterID, FContractEntryID, FContractBillNo, FOrderEntryID, FOrderBillNo, FStockID, FBackQty, FAuxBackQty, FSecBackQty, FStdAmount, FPlanMode, FMTONo, FStockQtyOnlyForShow, FComplexQty, Fmodel, Fname, Fnumber, FBarCode, FBTPLCommitQty, FTPLCommitQty, fsecinvoiceqty) \n" +
                "\tVALUES (b.FBrNo, b.FInterID, b.FEntryID, b.FDetailID, b.FItemID, b.FQty, b.FCommitQty, b.FPrice, b.FAmount, b.FOrderInterID, b.FDate, b.FNote, b.FInvoiceQty, b.FBCommitQty, b.FUnitID, b.FAuxBCommitQty, b.FAuxCommitQty, b.FAuxInvoiceQty, b.FAuxPrice, b.FAuxQty, b.FSourceEntryID, b.FMapNumber, b.FMapName, b.FAuxPropID, b.FBatchNo, b.FCheckDate, b.FExplanation, b.FFetchAdd, b.FFetchDate, b.FMultiCheckDate1, b.FMultiCheckDate2, b.FMultiCheckDate3, b.FMultiCheckDate4, b.FMultiCheckDate5, b.FMultiCheckDate6, b.FSecCoefficient, b.FSecQty, b.FSecCommitQty, b.FSourceTranType, b.FSourceInterId, b.FSourceBillNo, b.FContractInterID, b.FContractEntryID, b.FContractBillNo, b.FOrderEntryID, b.FOrderBillNo, b.FStockID, b.FBackQty, b.FAuxBackQty, b.FSecBackQty, b.FStdAmount, b.FPlanMode, b.FMTONo, b.FStockQtyOnlyForShow, b.FComplexQty, b.Fmodel, b.Fname, b.Fnumber, b.FBarCode, b.FBTPLCommitQty, b.FTPLCommitQty, b.fsecinvoiceqty);")> 0;
    }
    public boolean updateFnumber(Integer itemId, String FNumber){
        String sql = "update InStockbillEntry set Fnumber = ''{0}'' where FItemID = {1,number,#}";
        sql = MessageFormat.format(sql, FNumber, itemId);
        return erpSqlServer.update(sql) > 0;
    }
    public boolean updateCFnumber(Integer itemId, String FNumber){
        String sql = "update CPICMO set Fnumber = ''{0}'' where FItemID = {1,number,#}";
        sql = MessageFormat.format(sql, FNumber, itemId);
        return erpSqlServer.update(sql) > 0;
    }
}