Beispiel #1
0
        public object GetContractList(CONTRACTEntity Data)
        {
            string sql = $@"select T.MERCHANTID,S.NAME SHMC,T.STYLE,T.BRANCHID,  "
                         + " T.REPORTER_NAME,T.REPORTER_TIME "
                         + "  from CONTRACT T,MERCHANT S where T.MERCHANTID=S.MERCHANTID ";

            if (!Data.CONTRACTID.IsEmpty())
            {
                sql += (" and T.CONTRACTID= " + Data.CONTRACTID);
            }
            DataTable dt = DbHelper.ExecuteTable(sql);

            dt.NewEnumColumns <核算方式>("STYLE", "STYLEMC");

            string sql_shop = $@"SELECT P.SHOPID,P.CATEGORYID,S.CODE,Y.CATEGORYCODE,Y.CATEGORYNAME,T.BRANCHID "
                              + " FROM CONTRACT_SHOP P,SHOP S,CATEGORY Y,CONTRACT T "
                              + " WHERE  P.SHOPID=S.SHOPID and P.CATEGORYID=Y.CATEGORYID and P.CONTRACTID = T.CONTRACTID";

            if (!Data.CONTRACTID.IsEmpty())
            {
                sql_shop += (" and P.CONTRACTID= " + Data.CONTRACTID);
            }
            sql_shop += " order by S.CODE";
            DataTable shop = DbHelper.ExecuteTable(sql_shop);

            var result = new
            {
                contract = dt,
                shop     = shop,
            };

            return(result);
        }
Beispiel #2
0
        public object GetContract(CONTRACTEntity Data)
        {
            string sql = $@"select T.MERCHANTID,S.NAME SHMC,T.STYLE,T.JXSL*100 JXSL,T.XXSL*100 XXSL from CONTRACT T,MERCHANT S where T.MERCHANTID=S.MERCHANTID ";

            if (!Data.CONTRACTID.IsEmpty())
            {
                sql += (" and T.CONTRACTID= " + Data.CONTRACTID);
            }
            DataTable dt = DbHelper.ExecuteTable(sql);

            dt.NewEnumColumns <核算方式>("STYLE", "STYLEMC");

            string sql_shop = $@"SELECT P.SHOPID,P.CATEGORYID,S.CODE,Y.CATEGORYCODE,Y.CATEGORYNAME,T.BRANCHID "
                              + " FROM CONTRACT_SHOP P,SHOP S,CATEGORY Y,CONTRACT T "
                              + " WHERE  P.SHOPID=S.SHOPID and P.CATEGORYID=Y.CATEGORYID and P.CONTRACTID = T.CONTRACTID";

            if (!Data.CONTRACTID.IsEmpty())
            {
                sql_shop += (" and P.CONTRACTID= " + Data.CONTRACTID);
            }
            sql_shop += " order by S.CODE";
            DataTable shop = DbHelper.ExecuteTable(sql_shop);

            string sql_jsklGroup = $@"SELECT GROUPNO value,JSKL label FROM CONTRACT_GROUP WHERE 1=1";

            if (!Data.CONTRACTID.IsEmpty())
            {
                sql_jsklGroup += (" and CONTRACTID= " + Data.CONTRACTID);
            }
            sql_jsklGroup += "  order by GROUPNO";
            DataTable jsklGroup = DbHelper.ExecuteTable(sql_jsklGroup);
            DataTable jskl      = null;

            if (jsklGroup.Rows.Count == 1)
            {
                string sql_jskl = $@"SELECT L.CONTRACTID,L.GROUPNO,L.INX,to_char(L.STARTDATE,'YYYY.MM.DD') STARTDATE, " +
                                  " to_char(L.ENDDATE,'YYYY.MM.DD') ENDDATE,L.SALES_START,L.SALES_END,L.JSKL   FROM CONTJSKL L WHERE 1=1 ";
                if (!Data.CONTRACTID.IsEmpty())
                {
                    sql_jskl += (" and CONTRACTID= " + Data.CONTRACTID);
                }
                sql_jskl += "  order by INX";
                jskl      = DbHelper.ExecuteTable(sql_jskl);
            }
            var result = new
            {
                contract  = dt,
                shop      = shop,
                jsklGroup = jskl
            };

            return(result);
        }
Beispiel #3
0
 public void ExecSplc(SPLCJG_MENUEntity Data)
 {
     if (Data.JGTYPE == ((int)审批流程节点类型.结束).ToString())
     {
         var Data1 = new CONTRACTEntity();
         Data1.CONTRACTID = Data.BILLID;
         service.HtglService.ExecData(Data1);
     }
     else
     {
         service.XtglService.ExecMenuSplc(Data);
     }
 }
Beispiel #4
0
        public UIResult SearchContract(CONTRACTEntity Data)
        {
            var res = service.HtglService.GetContractDjdwElement(Data);

            return(new UIResult(
                       new
            {
                contract = res.Item1,
                contractShop = res.Item2,
                contractCostDjdw = res.Item3
            }
                       ));
        }
Beispiel #5
0
        public UIResult SearchContract(CONTRACTEntity Data)
        {
            var res = service.HtglService.GetContractElement(Data);

            return(new UIResult(
                       new
            {
                contract = res.Item1,
                contractBrand = res.Item2,
                contractShop = res.Item3,
                ContractParm = res.Item4,
                ContractRentParm = res.Item5,
                contractPay = res.Item6,
                contractCost = res.Item7
            }
                       ));
        }
Beispiel #6
0
        public Tuple <dynamic, DataTable, DataTable> GetContractDjdwElement(CONTRACTEntity Data)
        {
            if (Data.CONTRACTID.IsEmpty())
            {
                throw new LogicException("请确认租约编号!");
            }
            string sql = $@"SELECT A.*,B.NAME MERNAME,C.NAME FDNAME,D.ORGNAME,E.CONTRACTID_OLD,E.JHRQ,";

            sql += " (select NAME from FEERULE L where L.ID=A.FEERULE_RENT) FEERULE_RENTNAME,";
            sql += " (select NAME from LATEFEERULE LA where LA.ID=A.ZNID_RENT) LATEFEERULENAME,";
            sql += " F.NAME AS OPERATERULENAME  FROM CONTRACT A,MERCHANT B,";
            sql += "   BRANCH C, ORG D,CONTRACT_UPDATE E,OPERATIONRULE F WHERE A.MERCHANTID=B.MERCHANTID AND A.CONTRACTID=E.CONTRACTID(+) ";
            sql += " AND A.BRANCHID=C.ID AND A.ORGID=D.ORGID(+) AND A.OPERATERULE=F.ID(+) ";
            sql += (" AND A.CONTRACTID= " + Data.CONTRACTID);
            DataTable contract = DbHelper.ExecuteTable(sql);

            if (!contract.IsNotNull())
            {
                throw new LogicException("找不到租约!");
            }

            contract.NewEnumColumns <合同状态>("STATUS", "STATUSMC");

            string sqlshop = $@"SELECT B.SHOPID,C.CODE,D.CATEGORYCODE,D.CATEGORYID," +
                             " D.CATEGORYNAME,B.AREA,B.AREA_RENTABLE" +
                             " FROM CONTRACT A,CONTRACT_SHOP B,SHOP C,CATEGORY D" +
                             " WHERE A.CONTRACTID=B.CONTRACTID AND B.SHOPID=C.SHOPID AND B.CATEGORYID=D.CATEGORYID";

            sqlshop += (" and A.CONTRACTID= " + Data.CONTRACTID);
            DataTable contract_shop = DbHelper.ExecuteTable(sqlshop);

            string sqlCost = $@"SELECT A.*,B.NAME";

            sqlCost += "    FROM CONTRACT_COST_DJDW A,FEESUBJECT B";
            sqlCost += " WHERE A.TREMID=B.TRIMID  ";
            sqlCost += (" AND CONTRACTID= " + Data.CONTRACTID);
            sqlCost += " ORDER BY TREMID";
            DataTable contract_cost = DbHelper.ExecuteTable(sqlCost);

            return(new Tuple <dynamic, DataTable, DataTable>(
                       contract.ToOneLine(),
                       contract_shop,
                       contract_cost
                       ));
        }
Beispiel #7
0
        public object GetContract(CONTRACTEntity Data)
        {
            string sql = $@"select T.MERCHANTID,S.NAME SHMC,T.STYLE,T.JXSL*100 JXSL,T.XXSL*100 XXSL from CONTRACT T,MERCHANT S where T.MERCHANTID=S.MERCHANTID ";

            if (!Data.CONTRACTID.IsEmpty())
            {
                sql += (" and T.CONTRACTID= " + Data.CONTRACTID);
            }
            DataTable dt = DbHelper.ExecuteTable(sql);

            dt.NewEnumColumns <核算方式>("STYLE", "STYLEMC");
            var result = new
            {
                contract = dt
            };

            return(result);
        }
Beispiel #8
0
 public void DeleteContract(List <CONTRACTEntity> DeleteData)
 {
     foreach (var con in DeleteData)
     {
         CONTRACTEntity Data = DbHelper.Select(con);
         if (Data.STATUS != ((int)普通单据状态.未审核).ToString())
         {
             throw new LogicException($"租约({Data.CONTRACTID})已经不是未审核不能删除!");
         }
     }
     using (var Tran = DbHelper.BeginTransaction())
     {
         foreach (var con in DeleteData)
         {
             DbHelper.Delete(con);
         }
         Tran.Commit();
     }
 }
Beispiel #9
0
        public string ExecHtBgData(CONTRACTEntity Data)
        {
            CONTRACTEntity con = DbHelper.Select(Data);

            if (con.STATUS != ((int)普通单据状态.未审核).ToString())
            {
                throw new LogicException($"租约({Data.CONTRACTID})已经不是未审核不能继续审核!");
            }
            using (var Tran = DbHelper.BeginTransaction())
            {
                EXEC_CONTRACT_UPDATE exec_contract = new EXEC_CONTRACT_UPDATE()
                {
                    in_CONTRACTID = Data.CONTRACTID,
                    in_USERID     = employee.Id
                };
                DbHelper.ExecuteProcedure(exec_contract);
                Tran.Commit();
            }

            return(con.CONTRACTID);
        }
Beispiel #10
0
 public UIResult lyYdFj(List <CONTRACT_RENTEntity> Data, CONTRACTEntity ContractData)
 {
     return(new UIResult(service.HtglService.LyYdfj(Data, ContractData)));
 }
Beispiel #11
0
 public UIResult GetContract(CONTRACTEntity Data)
 {
     return(new UIResult(service.WyglService.GetContract(Data)));
 }
Beispiel #12
0
 public string Save(CONTRACTEntity SaveData)
 {
     return(service.HtglService.SaveContract(SaveData));
 }
Beispiel #13
0
 public void ExecData(CONTRACTEntity Data)
 {
     service.HtglService.ExecData(Data);
 }
Beispiel #14
0
        public Tuple <dynamic, DataTable, DataTable, CONTRACTEntity, CONTRACT_RENTEntity, DataTable, DataTable> GetContractElement(CONTRACTEntity Data)
        {
            //只显示本表数据的用module
            //要显示本表之外的数据用DataTable
            if (Data.CONTRACTID.IsEmpty())
            {
                throw new LogicException("请确认租约编号!");
            }
            string sql = $@"SELECT A.*,B.NAME MERNAME,C.NAME FDNAME,D.ORGNAME,E.CONTRACTID_OLD,E.JHRQ,";

            sql += " (select NAME from FEERULE L where L.ID=A.FEERULE_RENT) FEERULE_RENTNAME,";
            sql += " (select NAME from LATEFEERULE LA where LA.ID=A.ZNID_RENT) LATEFEERULENAME,";
            sql += " F.NAME AS OPERATERULENAME  FROM CONTRACT A,MERCHANT B,";
            sql += "   BRANCH C, ORG D,CONTRACT_UPDATE E,OPERATIONRULE F WHERE A.MERCHANTID=B.MERCHANTID AND A.CONTRACTID=E.CONTRACTID(+) ";
            sql += " AND A.BRANCHID=C.ID AND A.ORGID=D.ORGID AND A.OPERATERULE=F.ID ";
            sql += (" AND A.CONTRACTID= " + Data.CONTRACTID);
            DataTable contract = DbHelper.ExecuteTable(sql);

            if (!contract.IsNotNull())
            {
                throw new LogicException("找不到租约!");
            }

            contract.NewEnumColumns <合同状态>("STATUS", "STATUSMC");
            contract.NewEnumColumns <联营合同合作方式>("OPERATERULE", "OPERATERULEMC");

            contract.NewEnumColumns <起始日清算>("QS_START", "QS_STARTMC");
            contract.NewEnumColumns <销售额标记>("TAB_FLAG", "TAB_FLAGMC");



            string sqlitem = $@"SELECT B.BRANDID,C.NAME " +
                             " FROM  CONTRACT A,CONTRACT_BRAND B,BRAND C " +
                             " where A.CONTRACTID = B.CONTRACTID AND B.BRANDID=C.ID  ";

            sqlitem += (" and A.CONTRACTID= " + Data.CONTRACTID);
            DataTable contract_brand = DbHelper.ExecuteTable(sqlitem);

            string sqlshop = $@"SELECT B.SHOPID,C.CODE,D.CATEGORYCODE,D.CATEGORYID," +
                             " D.CATEGORYNAME,B.AREA,B.AREA_RENTABLE" +
                             " FROM CONTRACT A,CONTRACT_SHOP B,SHOP C,CATEGORY D" +
                             " WHERE A.CONTRACTID=B.CONTRACTID AND B.SHOPID=C.SHOPID AND B.CATEGORYID=D.CATEGORYID";

            sqlshop += (" and A.CONTRACTID= " + Data.CONTRACTID);
            DataTable contract_shop = DbHelper.ExecuteTable(sqlshop);


            CONTRACTEntity ContractParm = new CONTRACTEntity();

            //全表查询,程序层面过滤
            //ContractParm.CONTRACT_GROUP = DbHelper.SelectList(new CONTRACT_GROUPEntity()).Where(a => a.CONTRACTID==Data.CONTRACTID).ToList();

            //查询数据库的时候已经参数过滤
            ContractParm.CONTRACT_GROUP = DbHelper.SelectList(new CONTRACT_GROUPEntity()
            {
                CONTRACTID = Data.CONTRACTID
            }).ToList();

            ContractParm.CONTRACT_RENT = DbHelper.SelectList(new CONTRACT_RENTEntity()
            {
                CONTRACTID = Data.CONTRACTID
            }).ToList();

            ContractParm.CONTJSKL = DbHelper.SelectList(new CONTJSKLEntity()
            {
                CONTRACTID = Data.CONTRACTID
            }).ToList();


            CONTRACT_RENTEntity ContractRentParm = new CONTRACT_RENTEntity();

            ContractRentParm.CONTRACT_RENTITEM = DbHelper.SelectList(new CONTRACT_RENTITEMEntity()
            {
                CONTRACTID = Data.CONTRACTID
            }).ToList();


            string sqlPay = $@"SELECT A.*,B.NAME,C.NAME TERMNAME FROM CONTRACT_PAY A,PAY B,FEESUBJECT C WHERE A.PAYID=B.PAYID AND A.TERMID=C.TRIMID ";

            sqlPay += (" AND A.CONTRACTID= " + Data.CONTRACTID);
            sqlPay += " ORDER BY A.PAYID,A.STARTDATE";
            DataTable contract_pay = DbHelper.ExecuteTable(sqlPay);


            string sqlCost = $@"SELECT A.*,B.NAME,C.NAME FEERULENAME,D.NAME LATEFEERULENAME FROM CONTRACT_COST A,FEESUBJECT B,FEERULE C,LATEFEERULE D";

            sqlCost += " WHERE A.TERMID=B.TRIMID AND A.FEERULEID=C.ID(+) AND A.ZNGZID=D.ID(+) ";
            sqlCost += (" AND CONTRACTID= " + Data.CONTRACTID);
            sqlCost += " ORDER BY TERMID,STARTDATE";
            DataTable contract_cost = DbHelper.ExecuteTable(sqlCost);

            contract_cost.NewEnumColumns <月费用收费方式>("SFFS", "SFFSMC");


            return(new Tuple <dynamic, DataTable, DataTable, CONTRACTEntity, CONTRACT_RENTEntity, DataTable, DataTable>(
                       contract.ToOneLine(),
                       contract_brand,
                       contract_shop,
                       ContractParm,
                       ContractRentParm,
                       contract_pay,
                       contract_cost
                       ));
        }
Beispiel #15
0
        public List <CONTRACT_RENTITEMEntity> LyYdfj(List <CONTRACT_RENTEntity> Data, CONTRACTEntity ContractData)
        {
            //当月度分解没定义的时候抛出异常提示待完善
            List <CONTRACT_RENTITEMEntity> zjfjList = new List <CONTRACT_RENTITEMEntity>();

            CONFIGEntity configBzybj = new CONFIGEntity();

            configBzybj = DbHelper.Select(new CONFIGEntity()
            {
                ID = "1004"
            });

            if (!"012".Contains(configBzybj.CUR_VAL))
            {
                throw new LogicException("参数1004(不足月时月金额算法)设置有误");
            }

            CONFIGEntity configBzyts = new CONFIGEntity();

            configBzyts = DbHelper.Select(new CONFIGEntity()
            {
                ID = "1003"
            });

            if (configBzyts.CUR_VAL.ToInt() <= 0)
            {
                throw new LogicException("参数1003(不足月天数设定)设置有误");
            }

            CONFIGEntity configBlxsw = new CONFIGEntity();

            configBlxsw = DbHelper.Select(new CONFIGEntity()
            {
                ID = "1002"
            });

            foreach (var ydfj in Data)
            {
                List <PERIODEntity> Period = new List <PERIODEntity>();
                Period = DbHelper.SelectList(new PERIODEntity()).
                         Where(a => (a.DATE_START.ToDateTime() <= ydfj.ENDDATE.ToDateTime()) &&
                               (a.DATE_END.ToDateTime() >= ydfj.STARTDATE.ToDateTime())).OrderBy(b => b.YEARMONTH).ToList();

                foreach (var per in Period)
                {
                    CONTRACT_RENTITEMEntity zjfj = new CONTRACT_RENTITEMEntity();

                    double allTs = Math.Abs((per.DATE_END.ToDateTime() - per.DATE_START.ToDateTime()).Days) + 1;


                    if ((per.DATE_START.ToDateTime() < ContractData.CONT_START.ToDateTime()) ||
                        (per.DATE_START.ToDateTime() < ydfj.STARTDATE.ToDateTime()))
                    {
                        per.DATE_START = ydfj.STARTDATE;
                    }
                    ;

                    if ((per.DATE_END.ToDateTime() > ContractData.CONT_END.ToDateTime()) ||
                        (per.DATE_END.ToDateTime() > ydfj.ENDDATE.ToDateTime()))
                    {
                        per.DATE_END = ydfj.ENDDATE;
                    }
                    ;

                    zjfj.STARTDATE = per.DATE_START;
                    zjfj.ENDDATE   = per.DATE_END;

                    double zjfjTs = Math.Abs((zjfj.ENDDATE.ToDateTime() - zjfj.STARTDATE.ToDateTime()).Days) + 1;

                    zjfj.INX = ydfj.INX;
                    var je = Convert.ToDouble(ydfj.RENTS);

                    if (zjfjTs != allTs)                      //不足月时金额算法
                    {
                        if (configBzybj.CUR_VAL.ToInt() == 0) //0(月金额 / 当月总天数) * 实际天数;
                        {
                            zjfj.RENTS = (Math.Round(je / allTs * zjfjTs, configBlxsw.CUR_VAL.ToInt(),
                                                     MidpointRounding.AwayFromZero)).ToString();
                        }
                        else if (configBzybj.CUR_VAL.ToInt() == 1)  //1:(月金额 / 1003参数设置的天数)*实际天数;
                        {
                            zjfj.RENTS = (Math.Round(je / (configBzyts.CUR_VAL).ToDouble() * zjfjTs,
                                                     configBlxsw.CUR_VAL.ToInt(), MidpointRounding.AwayFromZero)).ToString();
                        }
                        else  //2:(月金额 * 12 / 365) * 实际天数
                        {
                            zjfj.RENTS = (Math.Round((je * 12 / 365) * zjfjTs,
                                                     configBlxsw.CUR_VAL.ToInt(), MidpointRounding.AwayFromZero)).ToString();
                        }
                    }
                    else
                    {
                        zjfj.RENTS = Convert.ToString(je);
                    }
                    zjfj.CREATEDATE = per.DATE_END;
                    zjfj.YEARMONTH  = per.YEARMONTH;
                    zjfjList.Add(zjfj);
                }
            }
            ;
            return(zjfjList);
        }
Beispiel #16
0
        public string SaveContract(CONTRACTEntity SaveData)
        {
            var v = GetVerify(SaveData);

            if (SaveData.STYLE.ToInt() != (int)核算方式.多经点位)
            {
                ORGEntity org = DbHelper.Select(new ORGEntity()
                {
                    ORGID = SaveData.ORGID
                });
                if (org.BRANCHID != SaveData.BRANCHID)
                {
                    throw new LogicException($"请核对招商部门与分店之间的关系!");
                }
                ;
                //选择是扣点的时候,不应该有保底数据
                if ((SaveData.OPERATERULE.ToInt() == (int)联营合同合作方式.扣点) &&
                    (SaveData.STYLE.ToInt() == (int)核算方式.联营合同))
                {
                    foreach (var rent in SaveData.CONTRACT_RENT)
                    {
                        if (rent.RENTS.ToDecimal() != 0)
                        {
                            throw new LogicException($"扣点形式的合同不应该有保底值!");
                        }
                        if (rent.RENTS_JSKL.ToDecimal() != 0)
                        {
                            throw new LogicException($"扣点形式的合同不应该有保底扣率!");
                        }
                    }
                }
            }
            if (SaveData.CONTRACT_OLD.IsEmpty())
            {
                SaveData.HTLX = ((int)合同类型.原始合同).ToString();
            }
            else
            {
                SaveData.HTLX = ((int)合同类型.变更合同).ToString();
            }

            if (SaveData.CONTRACTID.IsEmpty())    // 合同号规则:核算方式(1租赁2联营)+门店(2位)+5位流水  变更合同 9开头
            {
                string tblname;
                int    leadCode;
                if (SaveData.HTLX == "1")
                {
                    leadCode = (SaveData.STYLE + SaveData.BRANCHID.PadLeft(2, '0')).ToInt();
                }
                else
                {
                    leadCode = ("9" + SaveData.BRANCHID.PadLeft(2, '0')).ToInt();
                }

                tblname = "CONTRACT_" + leadCode.ToString();


                SaveData.CONTRACTID = (NewINC(tblname).ToInt() + leadCode * 100000).ToString();
                SaveData.STATUS     = ((int)合同状态.未审核).ToString();
            }
            else
            {
                //从界面上传回来,后面优化
                CONTRACTEntity con = DbHelper.Select(SaveData);
                if (con.STATUS == ((int)合同状态.审核).ToString())
                {
                    throw new LogicException($"租约({SaveData.CONTRACTID})已经审核!");
                }
                SaveData.VERIFY      = con.VERIFY;
                SaveData.VERIFY_NAME = con.VERIFY_NAME;
                SaveData.VERIFY_TIME = con.VERIFY_TIME;
            }


            SaveData.QZRQ = SaveData.CONT_START;

            SaveData.REPORTER      = employee.Id;
            SaveData.REPORTER_NAME = employee.Name;
            SaveData.REPORTER_TIME = DateTime.Now.ToString();

            using (var Tran = DbHelper.BeginTransaction())
            {
                DbHelper.Save(SaveData);

                Tran.Commit();
            }
            return(SaveData.CONTRACTID);
        }
Beispiel #17
0
        public List <CONTRACT_RENTITEMEntity> zlYdFj(List <CONTRACT_RENTEntity> Data, CONTRACTEntity ContractData)
        {
            List <CONTRACT_RENTITEMEntity> zjfjList = new List <CONTRACT_RENTITEMEntity>();
            //当月度分解没定义的时候抛出异常提示待完善

            FEERULEEntity feeRule = new FEERULEEntity();

            feeRule = DbHelper.Select(new FEERULEEntity()
            {
                ID = ContractData.FEERULE_RENT
            });

            CONFIGEntity configBzybj = new CONFIGEntity();

            configBzybj = DbHelper.Select(new CONFIGEntity()
            {
                ID = "1004"
            });

            if (!"012".Contains(configBzybj.CUR_VAL))
            {
                throw new LogicException("参数1004(不足月时月金额算法)设置有误");
            }

            CONFIGEntity configBzyts = new CONFIGEntity();

            configBzyts = DbHelper.Select(new CONFIGEntity()
            {
                ID = "1003"
            });

            if (configBzyts.CUR_VAL.ToInt() <= 0)
            {
                throw new LogicException("参数1003(不足月天数设定)设置有误");
            }

            CONFIGEntity configBlxsw = new CONFIGEntity();

            configBlxsw = DbHelper.Select(new CONFIGEntity()
            {
                ID = "1002"
            });

            //季度分解日期生成
            CONFIGEntity configJDFJGZ = new CONFIGEntity();

            configJDFJGZ = DbHelper.Select(new CONFIGEntity()
            {
                ID = "1005"
            });

            //PAY_CYCLE缴费周期
            //ADVANCE_CYCLE 提前周期
            //FEE_DAY 出单日

            //先计算出来每个年月对应的生成日期
            DateTime dt = ContractData.CONT_START.ToDateTime();
            var      ym = dt.Year * 100 + dt.Month;

            if (configJDFJGZ.CUR_VAL.ToInt() == 0)        //添加月份生成参数 0,按自然季度 ,1 顺延季度    BY:DZK  20190717
            {
                switch (feeRule.PAY_CYCLE.ToInt())
                {
                case 3:
                    switch (dt.Month)
                    {
                    case 1:
                    case 2:
                    case 3:
                        ym = dt.Year * 100 + 1;
                        break;

                    case 4:
                    case 5:
                    case 6:
                        ym = dt.Year * 100 + 4;
                        break;

                    case 7:
                    case 8:
                    case 9:
                        ym = dt.Year * 100 + 7;
                        break;

                    case 10:
                    case 11:
                    case 12:
                        ym = dt.Year * 100 + 10;
                        break;
                    }
                    break;

                case 6:
                    switch (dt.Month)
                    {
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                        ym = dt.Year * 100 + 1;
                        break;

                    case 7:
                    case 8:
                    case 9:
                    case 10:
                    case 11:
                    case 12:
                        ym = dt.Year * 100 + 7;
                        break;
                    }
                    break;

                case 12:
                    switch (dt.Month)
                    {
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                    case 8:
                    case 9:
                    case 10:
                    case 11:
                    case 12:
                        ym = dt.Year * 100 + 1;
                        break;
                    }
                    break;

                default:
                    ym = dt.Year * 100 + dt.Month;
                    break;
                }
            }
            else
            {
                ym = dt.Year * 100 + dt.Month;
            }

            List <PERIODEntity> Perio = new List <PERIODEntity>();

            Perio = DbHelper.SelectList(new PERIODEntity()).
                    Where(a => (a.DATE_START.ToDateTime() <= ContractData.CONT_END.ToDateTime()) &&
                          (a.DATE_END.ToDateTime() >= ContractData.CONT_START.ToDateTime())).OrderBy(b => b.YEARMONTH).ToList();

            List <CONTRACT_RENTITEMEntity> zjfjListGd = new List <CONTRACT_RENTITEMEntity>();

            foreach (var per in Perio)
            {
                CONTRACT_RENTITEMEntity zjfj = new CONTRACT_RENTITEMEntity();

                var scny = 0;
                //可以通过日期上加月份处理
                if ((ym.ToString().Substring(4, 2).ToInt() - feeRule.ADVANCE_CYCLE.ToInt()) <= 0)
                {
                    scny = (ym.ToString().Substring(0, 4).ToInt() - 1) * 100 +
                           ((ym.ToString().Substring(4, 2).ToInt() + 12 - feeRule.ADVANCE_CYCLE.ToInt()));
                }
                else
                {
                    scny = ym - feeRule.ADVANCE_CYCLE.ToInt();
                }

                var ymLast = 0;
                if ((ym.ToString().Substring(4, 2).ToInt() + feeRule.PAY_CYCLE.ToInt()) > 12)
                {
                    ymLast = (ym.ToString().Substring(0, 4).ToInt() + 1) * 100
                             + ((ym.ToString().Substring(4, 2).ToInt() + feeRule.PAY_CYCLE.ToInt()) - 12);
                }
                else
                {
                    ymLast = ym + feeRule.PAY_CYCLE.ToInt();
                }

                var scn = scny.ToString().Substring(0, 4).ToInt();
                var scy = scny.ToString().Substring(4, 2).ToInt();


                zjfj.YEARMONTH = per.YEARMONTH;
                if (feeRule.FEE_DAY.ToInt() == -1)
                {
                    PERIODEntity PerioYm = new PERIODEntity();
                    PerioYm = DbHelper.Select(new PERIODEntity()
                    {
                        YEARMONTH = (scn * 100 + scy).ToString()
                    });
                    zjfj.CREATEDATE = PerioYm.DATE_END;
                }
                else
                {
                    zjfj.CREATEDATE = (new DateTime(scn, scy, feeRule.FEE_DAY.ToInt())).ToString().ToDateTime().ToString();
                }
                zjfjListGd.Add(zjfj);


                if ((per.YEARMONTH.ToString().Substring(4, 2).ToInt() + 1) > 12)
                {
                    per.YEARMONTH = ((per.YEARMONTH.ToString().Substring(0, 4).ToInt() + 1) * 100
                                     + ((per.YEARMONTH.ToString().Substring(4, 2).ToInt() + 1) - 12)).ToString();
                }
                else
                {
                    per.YEARMONTH = (per.YEARMONTH.ToInt() + 1).ToString();
                }

                if (per.YEARMONTH.ToInt() == ymLast)
                {
                    ym = ymLast;
                }
                ;
            }

            foreach (var ydfj in Data)
            {
                List <PERIODEntity> Period = new List <PERIODEntity>();

                Period = DbHelper.SelectList(new PERIODEntity()).
                         Where(a => (a.DATE_START.ToDateTime() <= ydfj.ENDDATE.ToDateTime()) &&
                               (a.DATE_END.ToDateTime() >= ydfj.STARTDATE.ToDateTime())).OrderBy(b => b.YEARMONTH).ToList();

                foreach (var per in Period)
                {
                    double zts = Math.Abs((per.DATE_END.ToDateTime() - per.DATE_START.ToDateTime()).Days) + 1;

                    CONTRACT_RENTITEMEntity zjfj = new CONTRACT_RENTITEMEntity();
                    if ((per.DATE_START.ToDateTime() < ContractData.CONT_START.ToDateTime()) ||
                        (per.DATE_START.ToDateTime() < ydfj.STARTDATE.ToDateTime()))
                    {
                        per.DATE_START = ydfj.STARTDATE;
                    }
                    ;

                    if ((per.DATE_END.ToDateTime() > ContractData.CONT_END.ToDateTime()) ||
                        (per.DATE_END.ToDateTime() > ydfj.ENDDATE.ToDateTime()))
                    {
                        per.DATE_END = ydfj.ENDDATE;
                    }
                    ;

                    zjfj.STARTDATE = per.DATE_START;
                    zjfj.ENDDATE   = per.DATE_END;

                    double zjfjTs = Math.Abs((zjfj.ENDDATE.ToDateTime() - zjfj.STARTDATE.ToDateTime()).Days) + 1;

                    zjfj.INX = ydfj.INX;
                    var je = Convert.ToDouble(ydfj.RENTS);
                    switch (ydfj.DJLX.ToInt())
                    {
                    case 1:    //日租金
                        zjfj.RENTS = Math.Round(je * zjfjTs, configBlxsw.CUR_VAL.ToInt(), MidpointRounding.AwayFromZero).ToString();
                        break;

                    case 2:                                       //月租金
                        if (zjfjTs != zts)                        //不足月时金额算法
                        {
                            if (configBzybj.CUR_VAL.ToInt() == 0) //0(月金额/当月总天数)*实际天数;
                            {
                                zjfj.RENTS = (Math.Round(je / zts * zjfjTs, configBlxsw.CUR_VAL.ToInt(),
                                                         MidpointRounding.AwayFromZero)).ToString();
                            }
                            else if (configBzybj.CUR_VAL.ToInt() == 1)     //1:(月金额/1003参数设置的天数)*实际天数;
                            {
                                zjfj.RENTS = (Math.Round(je / (configBzyts.CUR_VAL).ToDouble() * zjfjTs,
                                                         configBlxsw.CUR_VAL.ToInt(), MidpointRounding.AwayFromZero)).ToString();
                            }
                            else           //2:(月金额*12/365)*实际天数
                            {
                                zjfj.RENTS = (Math.Round((je * 12 / 365) * zjfjTs,
                                                         configBlxsw.CUR_VAL.ToInt(), MidpointRounding.AwayFromZero)).ToString();
                            }
                        }
                        else
                        {
                            zjfj.RENTS = je.ToString();
                        }

                        break;
                    }
                    ;
                    foreach (var scrq in zjfjListGd)
                    {
                        if (per.YEARMONTH.ToInt() == scrq.YEARMONTH.ToInt())
                        {
                            zjfj.CREATEDATE = scrq.CREATEDATE;
                        }
                    }


                    zjfj.YEARMONTH = per.YEARMONTH;
                    zjfjList.Add(zjfj);
                }
            }
            return(zjfjList);
        }