Commit 39d8caf3 by lixinming

no message

parent 7b2c7125
/**
* 租赁
*/
import moment = require("moment");
import { findEnterpriseByUscc, findEnterpriseCount, findEnterpriseList } from "../../data/enterprise/enterprise";
import { CONTRACTTYPE, FUHUASTATE, RENTTYPE, ZLSTATETYPE, ZLSTATISTYPE } from "../../config/enum";
import { eccFormParam } from "../../util/verificationParam";
import * as eccFormParamConfig from "../../config/eccParam/fuHuaQi";
import * as leaseData from "../../data/lease";
export async function zlHomeStatis(fhqUscc:string) {
let count = await findEnterpriseCount({fuHuaQiUscc:fhqUscc});
let enterpriseList = await findEnterpriseList({fuHuaQiUscc:fhqUscc});
let htjjdq = 0;
let htdqwq = 0;
let zjjjdq = 0;
let zjdqwq = 0;
const Now = new Date().valueOf();
enterpriseList.forEach(info => {
let {leaseInfo} = info;
if (!leaseInfo) {
htjjdq += 1;
htdqwq += 1;
zjjjdq += 1;
zjdqwq += 1;
} else {
if ((leaseInfo.contractEndTime - Now) < 0) {
htdqwq += 1;
} else if ( (leaseInfo.contractEndTime - Now) > 0 && (leaseInfo.contractEndTime - Now) < (3600 * 24 * 1000 * 30)) {
htjjdq += 1;
}
if ((leaseInfo.rentEndTime - Now) < 0) {
zjdqwq += 1;
} else if ( (leaseInfo.rentEndTime - Now) > 0 && (leaseInfo.rentEndTime - Now) < (3600 * 24 * 1000 * 30)) {
zjjjdq += 1;
}
}
});
let dataInfo = {
count,
subList:[
{key:"合同即将到期", value:htjjdq},
{key:"合同到期未续签", value:htdqwq},
{key:"租金即将到期", value:zjjjdq},
{key:"租金到期未续签", value:zjdqwq}
]
};
return {dataInfo};
}
export async function zlHomeList(fhqUscc:string) {
let enterpriseList = await findEnterpriseList({fuHuaQiUscc:fhqUscc});
const Now = new Date().valueOf();
let dataList = [];
enterpriseList.forEach(info => {
let {leaseInfo} = info;
let htstats = "";//合同状态
if (!leaseInfo) {
htstats = "到期未签"
} else {
if ((leaseInfo.contractEndTime - Now) < 0) {
htstats = "到期未签";
} else {
htstats = "签约企业";
}
}
let zjstats = "";//租金状态
let syzlsj = 0;//剩余租赁时间
if (!leaseInfo) {
zjstats = "到期未签"
} else {
if ((leaseInfo.rentEndTime - Now) < 0) {
zjstats = "到期未签";
} else if ( (leaseInfo.rentEndTime - Now) > 0 && (leaseInfo.rentEndTime - Now) < (3600 * 24 * 1000 * 30)) {
zjstats = "即将到期";
}else {
zjstats = "暂未到期";
}
syzlsj = moment(leaseInfo.rentEndTime).diff(Now, 'd');
syzlsj = syzlsj <= 0 ? 0 : syzlsj;
}
let stats = info.state == FUHUASTATE.迁出 ? "迁出" : "非迁出";//企业状态
dataList.push({
enterpriseName:info.enterpriseName,//企业名称
stats,//企业状态
htstats,//合同状态
zjstats,//租金状态
syzlsj,//剩余租赁时间
});
});
return {dataList};
}
export async function zlHomeSelectList(fhqUscc:string, type:number) {
let enterpriseList = await findEnterpriseList({fuHuaQiUscc:fhqUscc});
const Now = new Date().valueOf();
let dataMap = {};
enterpriseList.forEach(info => {
let {leaseInfo} = info;
switch (type) {
case 1:
if (!leaseInfo) {
if (!dataMap["到期未签"]) dataMap["到期未签"] = 0;
dataMap["到期未签"] += 1;
} else {
let keyStr = "";
if ((leaseInfo.contractEndTime - Now) < 0) {
keyStr = "到期未签";
} else {
keyStr = "签约企业";
}
if (!dataMap[keyStr]) dataMap[keyStr] = 0;
dataMap[keyStr] += 1;
}
break;
case 2:
if (!leaseInfo) {
if (!dataMap["到期未缴"]) dataMap["到期未缴"] = 0;
dataMap["到期未缴"] += 1;
} else {
let zjStr = "";
if ((leaseInfo.rentEndTime - Now) < 0) {
zjStr = "到期未签";
} else if ( (leaseInfo.rentEndTime - Now) > 0 && (leaseInfo.rentEndTime - Now) < (3600 * 24 * 1000 * 30)) {
zjStr = "即将到期";
}else {
zjStr = "到期未缴";
}
if (!dataMap[zjStr]) dataMap[zjStr] = 0;
dataMap[zjStr] += 1;
}
break;
case 3:
let fhStr = "";
if (info.state == FUHUASTATE.迁出) {
fhStr = "迁出";
} else {
fhStr = "在孵企业";
}
if (!dataMap[fhStr]) dataMap[fhStr] = 0;
dataMap[fhStr] += 1;
break;
}
});
let dataList = [];
for (let key in dataMap) {
let value = 0;
let count = dataMap[key];
if (type == ZLSTATISTYPE.合同) {
value = CONTRACTTYPE[key];
} else if(type == ZLSTATISTYPE.租金) {
value = RENTTYPE[key];
} else if (type == ZLSTATISTYPE.企业状态) {
value = ZLSTATETYPE[key];
}
dataList.push({
key,
value,
count
});
}
return {dataList};
}
export async function zlUpdate(uscc:string, param) {
eccFormParam("更新租赁信息", eccFormParamConfig.ZlUpdateConfig, param);
if (param.rentPayment) {
param.rentPayment.forEach((info, index) => {
eccFormParam("更新租赁信息 租金缴纳情况"+index, eccFormParamConfig.ZlRentPaymentUpdateConfig, info);
})
}
let leaseInfo = await leaseData.findOnceData({uscc});
let enterpriseInfo = await findEnterpriseByUscc(uscc);
if (leaseInfo || leaseInfo.uscc) {//添加
param.uscc = uscc;
param.enterpriseName = enterpriseInfo.enterpriseName;
await leaseData.createData(param);
} else {
for (let key in param) {
leaseInfo[key] = param[key];
}
await leaseInfo.save();
}
return {isSuccess:true};
}
......@@ -349,3 +349,22 @@ export const DangJianZaiFuConfig = {
zfqydj:{type:"Number"},//在孵企业党建 STATEENUM
zfqydzbdjList:{type:"[object]"},//党支部登记
}
export const ZlUpdateConfig = {
contractStartTime:{type:"Number"},//合同开始时间
contractEndTime:{type:"Number"},//合同结束时间
contractLong:{type:"Number"},//时长
contractState:{type:"Number"},//合同状态
price:{type:"Number"},//单价
area:{type:"Number"},//租赁面积
rentPayment:{type:"[Object]"},//租金缴纳情况
address:{type:"String"},//地址
}
export const ZlRentPaymentUpdateConfig = {
payStartTime:{type:"Number"},//缴纳开始时间
payLong:{type:"Number"}//缴纳时长
}
......@@ -543,4 +543,27 @@ export enum JIASUQI {
省级,
市级,
区级,
}
\ No newline at end of file
}
export enum ZLSTATISTYPE {
合同 = 1,
租金,
企业状态
}
export enum CONTRACTTYPE {
签约企业 = 1,
到期未签,
}
export enum RENTTYPE {
暂未到期 = 1,
即将到期,
到期未缴
}
export enum ZLSTATETYPE {
在孵企业 = 1,
迁出
}
......@@ -48,6 +48,13 @@ const enterpriseLabelSchema = new Schema({
state:{type:Boolean, default:true},//状态 false表示标签失效
},{_id:false});
const leaseScheme = new Schema({
contractStartTime:Number,//合同开始时间
contractEndTime:Number,//合同结束时间
rentStartTime:Number,//租金开始时间
rentEndTime:Number,//租金结束时间
})
const enterpriseSchema = new Schema({
name: {type:String, index: true},//企业名称
taskId:{type:String, index:true},//绑定的任务id
......@@ -133,6 +140,9 @@ const enterpriseSchema = new Schema({
oldLng:String,//经度
oldLat:String,//纬度
follow:Boolean,//是否关注
leaseInfo:{type:leaseScheme, default:{}},//租赁信息
});
var enterpriseModel;
......
/**
* 租赁信息
*/
import {Schema} from 'mongoose';
import { baseDB } from '../db/mongo/dbInit';
const rentPaymentScheme = new Schema({
payStartTime:Number,//缴纳开始时间
payLong:Number//缴纳时长
})
const leaseSchema = new Schema({
uscc:String,
enterpriseName:String,
contractStartTime:Number,
contractEndTime:Number,
contractLong:Number,
price:Number,//单价
area:Number,//租赁面积
rentPayment:{type:[rentPaymentScheme], default:[]},//租金缴纳情况
address:String,//地址
});
var leaseModel;
export function initModel(){
leaseModel = baseDB.model('lease', leaseSchema);
leaseModel.selectOnceData = async function (paramater:object) {
let selectInfo = await leaseModel.findOne(paramater).exec();
if (selectInfo) {
if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save;
selectInfo.save = save.bind(selectInfo)
}
}
return selectInfo;
}
}
export async function save(throwError=false) {
if (!this.isModified()) return;
await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err);
});
}
export async function findOnceData(param) {
return await leaseModel.selectOnceData(param);
}
export async function createData(addInfo) {
await leaseModel.create(addInfo);
}
......@@ -39,6 +39,7 @@ import * as customTaskModel from "../../data/fuHuaQi/customTask";
import * as dangJianModel from "../../data/fuHuaQi/monthTask/dangJian";
import * as chartModel from "../../data/guanWeiHui/chart";
import * as leaseModel from "../../data/lease";
......@@ -82,4 +83,5 @@ export async function initTable() {
dangJianModel.initModel();
chartModel.initModel();
leaseModel.initModel();
}
\ No newline at end of file
......@@ -28,6 +28,8 @@ export function setRouter(httpServer) {
}
/**
* 关注企业
* @param req
......
/**
* 租赁管理
*/
import * as asyncHandler from 'express-async-handler';
import * as userBiz from '../../biz/mobileFuHuaQi/fuHuaQi/user';
import { eccReqParamater } from '../../util/verificationParam';
import { checkFuHuaQiToken } from '../../middleware/user';
import * as leaseBiz from '../../biz/mobileFuHuaQi/lease';
export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/zulin/home/stats', checkFuHuaQiToken, asyncHandler(zl_home_stats));
httpServer.post('/fuhuaqi/zulin/home/list', checkFuHuaQiToken, asyncHandler(zl_home_list));
httpServer.post('/fuhuaqi/zulin/home/select/list', checkFuHuaQiToken, asyncHandler(zl_home_select_list));
httpServer.post('/fuhuaqi/zulin/update', checkFuHuaQiToken, asyncHandler(zl_update));
}
async function zl_home_stats(req, res) {
const Uscc = req.headers.uscc;
let result = await leaseBiz.zlHomeStatis(Uscc);
res.success(result);
}
async function zl_home_list(req, res) {
const Uscc = req.headers.uscc;
let result = await leaseBiz.zlHomeList(Uscc);
res.success(result);
}
async function zl_home_select_list(req, res) {
let reqConf = {type:'Number',};
let {type} = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await leaseBiz.zlHomeSelectList(Uscc, type);
res.success(result);
}
async function zl_update(req, res) {
let reqConf = {uscc:'String', param:"Object"};
let {uscc, param } = eccReqParamater(reqConf, req.body);
let result = await leaseBiz.zlUpdate(uscc, param);
res.success(result);
}
\ No newline at end of file
......@@ -44,6 +44,7 @@ import * as guanWeiHuiMobileClientUserRouters from './guanWeiHuiMobileClient/use
import * as dangJianRouters from './mobileClient/dangJian';
import * as checkDataRouters from './admin/checkData';
import * as zhulingRouter from './mobileClient/zhuling';
export function setRouter(httpServer){
/**下拉框等公用 路由 */
......@@ -99,4 +100,6 @@ export function setRouter(httpServer){
/**数据校验 */
checkDataRouters.setRouter(httpServer);
zhulingRouter.setRouter(httpServer);
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment