Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
xuhaihui 2025-10-16 17:20:17 +08:00
commit 983f92a0d3
6 changed files with 294 additions and 276 deletions

View File

@ -49,9 +49,9 @@ public class DailInvoiceOverdueRemindersOp extends AbstractOperationServicePlugI
//当前切换选择的组织 //当前切换选择的组织
Long currentOrgId = RequestContext.get().getOrgId(); Long currentOrgId = RequestContext.get().getOrgId();
//当前所在的组织是属于矿山下的 //当前所在的组织是属于矿山下的
if(OrgCheckUtils.isKS(currentOrgId)){ // if(OrgCheckUtils.isKS(currentOrgId)){
e.getValidators().add(new DailInvoiceOverdueRemindersOp.ValidatorExt()); e.getValidators().add(new DailInvoiceOverdueRemindersOp.ValidatorExt());
} // }
} }
class ValidatorExt extends AbstractValidator { class ValidatorExt extends AbstractValidator {

View File

@ -91,15 +91,16 @@ public class DailyreimbursHomeCheckOp extends AbstractOperationServicePlugIn {
String message = String.format("提交人没有往来居家配置。"); String message = String.format("提交人没有往来居家配置。");
this.addFatalErrorMessage(extendedDataEntity, message); this.addFatalErrorMessage(extendedDataEntity, message);
} }
int monthTime = 0; Integer monthTime = null;
for (Row row : homeDataSet) { for (Row row : homeDataSet) {
monthTime = row.getInteger("monthTime"); monthTime = row.getInteger("monthTime");
} }
if(monthTime != 0){ DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");//
DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");// if(tripentry==null || tripentry.isEmpty()){
if(tripentry==null || tripentry.isEmpty()){ this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细!"));
this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细!")); }
}
if(monthTime != null){
Map<String,Integer> homeentityCountMap = new HashMap<>(); Map<String,Integer> homeentityCountMap = new HashMap<>();
int i = 1; int i = 1;
boolean isOk=true; boolean isOk=true;
@ -167,6 +168,8 @@ public class DailyreimbursHomeCheckOp extends AbstractOperationServicePlugIn {
} }
} }
} }
}else {
this.addFatalErrorMessage(extendedDataEntity, String.format("往来家居配置有误!"));
} }
} }
} }

View File

@ -40,6 +40,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
e.getFieldKeys().add("zcgj_holiday_days"); e.getFieldKeys().add("zcgj_holiday_days");
e.getFieldKeys().add("bizdate"); e.getFieldKeys().add("bizdate");
e.getFieldKeys().add("billstatus"); e.getFieldKeys().add("billstatus");
e.getFieldKeys().add("costcompany");
} }
@Override @Override
@ -51,9 +52,9 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
//当前切换选择的组织 //当前切换选择的组织
Long currentOrgId = RequestContext.get().getOrgId(); Long currentOrgId = RequestContext.get().getOrgId();
//当前所在的组织是属于矿山下的 //当前所在的组织是属于矿山下的
if(OrgCheckUtils.isKS(currentOrgId)){ //if(OrgCheckUtils.isKS(currentOrgId)){
e.getValidators().add(new ValidatorExt()); e.getValidators().add(new ValidatorExt());
} // }
} }
class ValidatorExt extends AbstractValidator { class ValidatorExt extends AbstractValidator {
@ -69,73 +70,77 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
DynamicObject dataEntity = extendedDataEntity.getDataEntity(); DynamicObject dataEntity = extendedDataEntity.getDataEntity();
long aLong = dataEntity.getLong("id"); long aLong = dataEntity.getLong("id");
//获取报销人 DynamicObject companyObj = (DynamicObject) dataEntity.get("costcompany");//核算组织(费用承担公司)
DynamicObject applier = dataEntity.getDynamicObject("applier"); if (companyObj != null) {
long applierId = applier.getLong("id"); Long companyId = companyObj.getLong("id");
//获取申请日期 if (OrgCheckUtils.isKS(companyId)) {
//Date bizdate = dataEntity.getDate( "bizdate"); //获取报销人
//获取是否探亲 DynamicObject applier = dataEntity.getDynamicObject("applier");
//如果是探亲则进行逻辑判断 long applierId = applier.getLong("id");
boolean isVisit = dataEntity.getBoolean(prefix + "_is_visit"); //获取申请日期
boolean isHome = dataEntity.getBoolean(prefix + "_is_home"); //Date bizdate = dataEntity.getDate( "bizdate");
//获取是否探亲
//如果是探亲则进行逻辑判断
boolean isVisit = dataEntity.getBoolean(prefix + "_is_visit");
boolean isHome = dataEntity.getBoolean(prefix + "_is_home");
//判断是否探亲 //判断是否探亲
if(isVisit){ if(isVisit){
//获取休假开始时间 //获取休假开始时间
Date startTime = dataEntity.getDate(prefix + "_holiday_start_time"); Date startTime = dataEntity.getDate(prefix + "_holiday_start_time");
//获取休假结束时间 //获取休假结束时间
Date endTime = dataEntity.getDate(prefix + "_holiday_end_time"); Date endTime = dataEntity.getDate(prefix + "_holiday_end_time");
//获取休假天数 //获取休假天数
Integer days = dataEntity.getInt(prefix + "_holiday_days"); Integer days = dataEntity.getInt(prefix + "_holiday_days");
//探亲类型 1探望父母2探望配偶 //探亲类型 1探望父母2探望配偶
String visitType = dataEntity.getString(prefix + "_visit_type"); String visitType = dataEntity.getString(prefix + "_visit_type");
//获取当前人的探亲假配置 //获取当前人的探亲假配置
QFilter[] visitSetFilterArray = new QFilter[1]; QFilter[] visitSetFilterArray = new QFilter[1];
visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId); visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId);
DynamicObject dynamicObject = QueryServiceHelper.queryOne( prefix+"_user_visit_set", DynamicObject dynamicObject = QueryServiceHelper.queryOne( prefix+"_user_visit_set",
"id,zcgj_visit_times as visitTime,zcgj_visit_days as visitDays,zcgj_married_spouse_days marriedSpouseDays,zcgj_married_status as marriedStatus," + "id,zcgj_visit_times as visitTime,zcgj_visit_days as visitDays,zcgj_married_spouse_days marriedSpouseDays,zcgj_married_status as marriedStatus," +
"zcgj_married_parents_year as marriedParentsYear,zcgj_married_parents_time as marriedParentsTime," + "zcgj_married_parents_year as marriedParentsYear,zcgj_married_parents_time as marriedParentsTime," +
"zcgj_married_spouse_year as marriedSpouseYear,zcgj_married_spouse_time as marriedSpouseTime," + "zcgj_married_spouse_year as marriedSpouseYear,zcgj_married_spouse_time as marriedSpouseTime," +
"zcgj_unmarried_parents_y as unmarriedParentsYear,zcgj_unmarried_parents_t as unmarriedParentsTime",visitSetFilterArray); "zcgj_unmarried_parents_y as unmarriedParentsYear,zcgj_unmarried_parents_t as unmarriedParentsTime",visitSetFilterArray);
if(dynamicObject == null){ if(dynamicObject == null){
//取消提交操作 //取消提交操作
this.addFatalErrorMessage(extendedDataEntity, "请设置人员探亲配置信息!"); this.addFatalErrorMessage(extendedDataEntity, "请设置人员探亲配置信息!");
return; return;
} }
//探亲次数 //探亲次数
int visitTime = 0; int visitTime = 0;
//探亲年限 //探亲年限
int visitYear = 0; int visitYear = 0;
//总年探亲天数 //总年探亲天数
int visitDays =dynamicObject.getInt("visitDays"); int visitDays =dynamicObject.getInt("visitDays");
//婚姻状况1已婚2未婚 //婚姻状况1已婚2未婚
int marriedStatus =dynamicObject.getInt("marriedStatus"); int marriedStatus =dynamicObject.getInt("marriedStatus");
//探望配偶天数 //探望配偶天数
int marriedSpouseDays = 0; int marriedSpouseDays = 0;
if(marriedStatus == 1){ if(marriedStatus == 1){
marriedSpouseDays = dynamicObject.getInt("marriedSpouseDays"); marriedSpouseDays = dynamicObject.getInt("marriedSpouseDays");
} }
//已婚探望父母年限 //已婚探望父母年限
int marriedParentsYear =dynamicObject.getInt("marriedParentsYear"); int marriedParentsYear =dynamicObject.getInt("marriedParentsYear");
//已婚探望父母次数 //已婚探望父母次数
int marriedParentsTime =dynamicObject.getInt("marriedParentsTime"); int marriedParentsTime =dynamicObject.getInt("marriedParentsTime");
//已婚探望配偶年限 //已婚探望配偶年限
int marriedSpouseYear =dynamicObject.getInt("marriedSpouseYear"); int marriedSpouseYear =dynamicObject.getInt("marriedSpouseYear");
//已婚探望配偶次数 //已婚探望配偶次数
int marriedSpouseTime =dynamicObject.getInt("marriedSpouseTime"); int marriedSpouseTime =dynamicObject.getInt("marriedSpouseTime");
//未婚探望父母年限 //未婚探望父母年限
int unmarriedParentsYear =dynamicObject.getInt("unmarriedParentsYear"); int unmarriedParentsYear =dynamicObject.getInt("unmarriedParentsYear");
//未婚探望父母次数 //未婚探望父母次数
int unmarriedParentsTime =dynamicObject.getInt("unmarriedParentsTime"); int unmarriedParentsTime =dynamicObject.getInt("unmarriedParentsTime");
/*if(visitDays == 0 ){ /*if(visitDays == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探父母天数为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探父母天数为空!");
return; return;
}*/ }*/
if(marriedStatus == 1 ){ // 已婚 if(marriedStatus == 1 ){ // 已婚
/*if(marriedSpouseDays == 0 ){ /*if(marriedSpouseDays == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探配偶天数为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探配偶天数为空!");
return; return;
@ -156,21 +161,21 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望配偶次数为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望配偶次数为空!");
return; return;
}*/ }*/
//如果是探望父母 //如果是探望父母
if("1".equals(visitType)){ if("1".equals(visitType)){
visitYear = marriedParentsYear; visitYear = marriedParentsYear;
visitTime = marriedParentsTime; visitTime = marriedParentsTime;
}else }else
//如果是探望配偶 //如果是探望配偶
if("2".equals(visitType)){ if("2".equals(visitType)){
visitTime = marriedSpouseTime; visitTime = marriedSpouseTime;
visitYear = marriedSpouseYear; visitYear = marriedSpouseYear;
} }
}else if (marriedStatus == 2) { // 未婚 }else if (marriedStatus == 2) { // 未婚
if(!"1".equals(visitType)){ if(!"1".equals(visitType)){
this.addFatalErrorMessage(extendedDataEntity, "未婚状态下探亲类型只能选择探望父母!"); this.addFatalErrorMessage(extendedDataEntity, "未婚状态下探亲类型只能选择探望父母!");
return; return;
} }
/*if(unmarriedParentsYear == 0 ){ /*if(unmarriedParentsYear == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母年限为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母年限为空!");
return; return;
@ -180,114 +185,116 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
return; return;
}*/ }*/
visitTime = unmarriedParentsTime; visitTime = unmarriedParentsTime;
visitYear = unmarriedParentsYear; visitYear = unmarriedParentsYear;
} }
Date firstDayOfYear = getFirstDayOfYear(startTime); Date firstDayOfYear = getFirstDayOfYear(startTime);
if(visitYear <= 0){ if(visitYear <= 0){
this.addFatalErrorMessage(extendedDataEntity, "当前探亲类型无探亲年限!"); this.addFatalErrorMessage(extendedDataEntity, "当前探亲类型无探亲年限!");
return; return;
} }
//年限开始时间 //年限开始时间
LocalDate firstDayYearsAgo = getFirstDayYearsAgo(dateToLocalDate(startTime), visitYear); LocalDate firstDayYearsAgo = getFirstDayYearsAgo(dateToLocalDate(startTime), visitYear);
Date lastDayOfYear = getLastDayOfYear(startTime); Date lastDayOfYear = getLastDayOfYear(startTime);
//查询非暂存废弃的数据 //查询非暂存废弃的数据
List<String> billStatuslist = new ArrayList<>(); List<String> billStatuslist = new ArrayList<>();
billStatuslist.add("B"); billStatuslist.add("B");
billStatuslist.add("C"); billStatuslist.add("C");
billStatuslist.add("D"); billStatuslist.add("D");
billStatuslist.add("E"); billStatuslist.add("E");
billStatuslist.add("F"); billStatuslist.add("F");
billStatuslist.add("G"); billStatuslist.add("G");
// 查询条件 // 查询条件
QFilter[] filterArray = new QFilter[5]; QFilter[] filterArray = new QFilter[5];
//查询申请人下的今年的探亲差旅单据 //查询申请人下的今年的探亲差旅单据
filterArray[0] = new QFilter(prefix+"_holiday_start_time", QCP.large_equals, firstDayOfYear); filterArray[0] = new QFilter(prefix+"_holiday_start_time", QCP.large_equals, firstDayOfYear);
filterArray[1] = new QFilter(prefix+"_holiday_start_time", QCP.less_equals, lastDayOfYear); filterArray[1] = new QFilter(prefix+"_holiday_start_time", QCP.less_equals, lastDayOfYear);
filterArray[2] = new QFilter("applier", QCP.equals, applierId); filterArray[2] = new QFilter("applier", QCP.equals, applierId);
filterArray[3] = new QFilter(prefix+"_is_visit", QCP.equals, true); filterArray[3] = new QFilter(prefix+"_is_visit", QCP.equals, true);
filterArray[4] = new QFilter("billstatus", QCP.in, billStatuslist); filterArray[4] = new QFilter("billstatus", QCP.in, billStatuslist);
DataSet dateSet = QueryServiceHelper.queryDataSet( DataSet dateSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(), this.getClass().getName(),
"er_dailyreimbursebill", "er_dailyreimbursebill",
"id,billno,zcgj_visit_type as visitType,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days", "id,billno,zcgj_visit_type as visitType,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days",
filterArray, null filterArray, null
); );
if(currentBillIdListMap.containsKey(applierId)){ if(currentBillIdListMap.containsKey(applierId)){
List<Long> longs = currentBillIdListMap.get(applierId); List<Long> longs = currentBillIdListMap.get(applierId);
longs.add(aLong); longs.add(aLong);
}else{ }else{
List<Long> currentBillIdList = new ArrayList<>(); List<Long> currentBillIdList = new ArrayList<>();
currentBillIdList.add(aLong); currentBillIdList.add(aLong);
currentBillIdListMap.put(applierId,currentBillIdList); currentBillIdListMap.put(applierId,currentBillIdList);
} }
List<Long> longs = currentBillIdListMap.get(applierId); List<Long> longs = currentBillIdListMap.get(applierId);
if(!longs.isEmpty()&&extendedDataEntities.length>1){ if(!longs.isEmpty()&&extendedDataEntities.length>1){
QFilter[] filterArray1 = new QFilter[1]; QFilter[] filterArray1 = new QFilter[1];
filterArray1[0] = new QFilter("id", QCP.in, longs); filterArray1[0] = new QFilter("id", QCP.in, longs);
DataSet dateSetSave = QueryServiceHelper.queryDataSet( DataSet dateSetSave = QueryServiceHelper.queryDataSet(
this.getClass().getName(), this.getClass().getName(),
"er_dailyreimbursebill", "er_dailyreimbursebill",
"id,billno,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days,zcgj_visit_type as visitType", "id,billno,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days,zcgj_visit_type as visitType",
filterArray1, null filterArray1, null
); );
dateSet = dateSet.union(dateSetSave) ; dateSet = dateSet.union(dateSetSave) ;
} }
//使用请假总天数 //使用请假总天数
int allHolidayCount = 0; int allHolidayCount = 0;
int allHolidayCountPO = 0; int allHolidayCountPO = 0;
//使用请假总次数 //使用请假总次数
int holidayCount = 0; int holidayCount = 0;
for (Row itemRow : dateSet) { for (Row itemRow : dateSet) {
String string = itemRow.getString("billno"); String string = itemRow.getString("billno");
Date startTimeVal = itemRow.getDate("startTime"); Date startTimeVal = itemRow.getDate("startTime");
Date endTimeVal = itemRow.getDate("endTime"); Date endTimeVal = itemRow.getDate("endTime");
Integer dayCount = itemRow.getInteger("days"); Integer dayCount = itemRow.getInteger("days");
String type = itemRow.getString("visitType");//1:探父母2:探配哦 String type = itemRow.getString("visitType");//1:探父母2:探配哦
//long dayCount = ChronoUnit.DAYS.between(dateToLocalDate(startTimeVal), dateToLocalDate(endTimeVal)); //long dayCount = ChronoUnit.DAYS.between(dateToLocalDate(startTimeVal), dateToLocalDate(endTimeVal));
if("1".equals(type)){ if("1".equals(type)){
allHolidayCount+=dayCount; allHolidayCount+=dayCount;
}else if("2".equals(type)){ }else if("2".equals(type)){
allHolidayCountPO+=dayCount; allHolidayCountPO+=dayCount;
}
holidayCount++;
}
//剩余次数
int remainderTimes = visitTime-holidayCount;
//剩余天数
long remainderDays = 0;
String typeStr = "父母";
Integer dayCount =0;
if("1".equals(visitType)){ // 1探望父母2探望配偶
remainderDays = visitDays-allHolidayCount;
dayCount =allHolidayCount;
}else if("2".equals(visitType)){
remainderDays = marriedSpouseDays-allHolidayCountPO;
dayCount =allHolidayCountPO;
typeStr = "配偶";
}
//判断剩余天数和本次请假天数
//long nowDays = ChronoUnit.DAYS.between(dateToLocalDate(startTime),dateToLocalDate(endTime))+1;
String message = String.format("您在%s年到%s年中已用%d次探"+typeStr+"休假,剩余%d次探"+typeStr+"休假,已用%d天探"+typeStr+"天数,剩余%d天探"+typeStr+"天数。本次休假天数%d天。"
,firstDayYearsAgo.getYear(),dateFormat.format(startTime),holidayCount,remainderTimes,
dayCount,remainderDays,days);
if((remainderTimes > 0) && (remainderDays >= 0) &&((remainderDays - days) >=0)){
//this.getView().showTipNotification(message);
//this.addMessage(extendedDataEntity, message);
}else{
this.addFatalErrorMessage(extendedDataEntity, "探亲次数或探亲天数不足!"+message);
return;
}
} }
i++;
holidayCount++;
}
//剩余次数
int remainderTimes = visitTime-holidayCount;
//剩余天数
long remainderDays = 0;
String typeStr = "父母";
Integer dayCount =0;
if("1".equals(visitType)){ // 1探望父母2探望配偶
remainderDays = visitDays-allHolidayCount;
dayCount =allHolidayCount;
}else if("2".equals(visitType)){
remainderDays = marriedSpouseDays-allHolidayCountPO;
dayCount =allHolidayCountPO;
typeStr = "配偶";
}
//判断剩余天数和本次请假天数
//long nowDays = ChronoUnit.DAYS.between(dateToLocalDate(startTime),dateToLocalDate(endTime))+1;
String message = String.format("您在%s年到%s年中已用%d次探"+typeStr+"休假,剩余%d次探"+typeStr+"休假,已用%d天探"+typeStr+"天数,剩余%d天探"+typeStr+"天数。本次休假天数%d天。"
,firstDayYearsAgo.getYear(),dateFormat.format(startTime),holidayCount,remainderTimes,
dayCount,remainderDays,days);
if((remainderTimes > 0) && (remainderDays >= 0) &&((remainderDays - days) >=0)){
//this.getView().showTipNotification(message);
//this.addMessage(extendedDataEntity, message);
}else{
this.addFatalErrorMessage(extendedDataEntity, "探亲次数或探亲天数不足!"+message);
return;
} }
} }
i++;
} }
} }
} }

View File

@ -44,9 +44,9 @@ public class TravelInvoiceOverdueRemindersOp extends AbstractOperationServicePlu
//当前切换选择的组织 //当前切换选择的组织
Long currentOrgId = RequestContext.get().getOrgId(); Long currentOrgId = RequestContext.get().getOrgId();
//当前所在的组织是属于矿山下的 //当前所在的组织是属于矿山下的
if(OrgCheckUtils.isKS(currentOrgId)){ // if(OrgCheckUtils.isKS(currentOrgId)){
e.getValidators().add(new TravelInvoiceOverdueRemindersOp.ValidatorExt()); e.getValidators().add(new TravelInvoiceOverdueRemindersOp.ValidatorExt());
} // }
} }
class ValidatorExt extends AbstractValidator { class ValidatorExt extends AbstractValidator {

View File

@ -35,6 +35,7 @@ public class TripreimbursebillIsHomeCheckOp extends AbstractOperationServicePlug
e.getFieldKeys().add("zcgj_is_include_home"); e.getFieldKeys().add("zcgj_is_include_home");
e.getFieldKeys().add("applier"); e.getFieldKeys().add("applier");
e.getFieldKeys().add("zcgj_homeentity"); e.getFieldKeys().add("zcgj_homeentity");
e.getFieldKeys().add("costcompany");
} }
@Override @Override
@ -46,9 +47,9 @@ public class TripreimbursebillIsHomeCheckOp extends AbstractOperationServicePlug
//当前切换选择的组织 //当前切换选择的组织
Long currentOrgId = RequestContext.get().getOrgId(); Long currentOrgId = RequestContext.get().getOrgId();
//当前所在的组织是属于矿山下的 //当前所在的组织是属于矿山下的
if(OrgCheckUtils.isKS(currentOrgId)){ //if(OrgCheckUtils.isKS(currentOrgId)){
e.getValidators().add(new ValidatorExt()); e.getValidators().add(new ValidatorExt());
} // }
} }
class ValidatorExt extends AbstractValidator { class ValidatorExt extends AbstractValidator {
@ -63,110 +64,117 @@ public class TripreimbursebillIsHomeCheckOp extends AbstractOperationServicePlug
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
DynamicObject dataEntity = extendedDataEntity.getDataEntity(); DynamicObject dataEntity = extendedDataEntity.getDataEntity();
long aLong = dataEntity.getLong("id"); long aLong = dataEntity.getLong("id");
//获取报销人 DynamicObject companyObj = (DynamicObject) dataEntity.get("costcompany");//核算组织(费用承担公司)
DynamicObject applier = dataEntity.getDynamicObject("applier"); if (companyObj != null) {
long applierId = applier.getLong("id"); Long companyId = companyObj.getLong("id");
//获取申请日期 if (OrgCheckUtils.isKS(companyId)) {
//Date bizdate = dataEntity.getDate( "bizdate"); //获取报销人
//获取是否探亲 DynamicObject applier = dataEntity.getDynamicObject("applier");
//如果是探亲则进行逻辑判断 long applierId = applier.getLong("id");
boolean isHome = dataEntity.getBoolean(prefix + "_is_include_home"); //获取申请日期
//Date bizdate = dataEntity.getDate( "bizdate");
//获取是否探亲
//如果是往来家居则进行逻辑判断
boolean isHome = dataEntity.getBoolean(prefix + "_is_include_home");
//判断是否来往家居地 //判断是否来往家居地
if(isHome){ if(isHome){
//获取当前人的往来家居地配置 //获取当前人的往来家居地配置
QFilter[] visitSetFilterArray = new QFilter[1]; QFilter[] visitSetFilterArray = new QFilter[1];
visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId); visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId);
DataSet homeDataSet = QueryServiceHelper.queryDataSet( DataSet homeDataSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(), this.getClass().getName(),
prefix+"_user_home_conf", prefix+"_user_home_conf",
"id,zcgj_month_times as monthTime", "id,zcgj_month_times as monthTime",
visitSetFilterArray, null visitSetFilterArray, null
); );
if(homeDataSet == null || homeDataSet.isEmpty()){ if(homeDataSet == null || homeDataSet.isEmpty()){
String message = String.format("提交人没有往来居家配置。"); String message = String.format("提交人没有往来居家配置。");
this.addFatalErrorMessage(extendedDataEntity, message);
}
int monthTime = 0;
for (Row row : homeDataSet) {
monthTime = row.getInteger("monthTime");
}
if(monthTime != 0){
DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");//oa流程分录
boolean isOk=true;
Map<String,Integer> homeentityCountMap = new HashMap<>();
int i = 1;
if(tripentry==null || tripentry.isEmpty()){
this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细数据"));
}
for (DynamicObject dynamicObject : tripentry) {
Date bxmonth = dynamicObject.getDate("zcgj_bxmonth");
String yearMonth = dateFormat.format(bxmonth);
String bxmonthStr = dateFormat.format(bxmonth);
String startdateStr = dateFormat.format(dynamicObject.getDate("zcgj_startdate"));
String enddateStr = dateFormat.format(dynamicObject.getDate("zcgj_enddate"));
isOk = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);
if(!isOk){
this.addFatalErrorMessage(extendedDataEntity, String.format("当前单据中往来居家明细的第%d行往返日期不在报销归属月中",i));
}
// 更新统计次数
homeentityCountMap.put(yearMonth, homeentityCountMap.getOrDefault(yearMonth, 0) + 1);
i++;
}
// 输出结果
for (Map.Entry<String, Integer> entry : homeentityCountMap.entrySet()) {
if(entry.getValue() > monthTime){
String message = String.format("当前单据在%s月中提交了%d次往来居家往来居家次数超限限制每月%d次",entry.getKey(),entry.getValue() ,monthTime);
isOk= false;
this.addFatalErrorMessage(extendedDataEntity, message); this.addFatalErrorMessage(extendedDataEntity, message);
} }
}
if(isOk){ Integer monthTime = null;
for (DynamicObject dynamicObject : tripentry) { for (Row row : homeDataSet) {
Date bxmonth = dynamicObject.getDate("zcgj_bxmonth"); monthTime = row.getInteger("monthTime");
DataSet tripreimbursebill = getTripreimbursebill(bxmonth, applierId); }
//已用次数 DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");//oa流程分录
int goHomeCount = 0; if(tripentry==null || tripentry.isEmpty()){
StringBuilder trSb = new StringBuilder(); this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细数据"));
for (Row row : tripreimbursebill) { }
goHomeCount++; if(monthTime != null){
String billno = row.getString("billno"); boolean isOk=true;
Map<String,Integer> homeentityCountMap = new HashMap<>();
int i = 1;
for (DynamicObject dynamicObject : tripentry) {
Date bxmonth = dynamicObject.getDate("zcgj_bxmonth");
String yearMonth = dateFormat.format(bxmonth);
String bxmonthStr = dateFormat.format(bxmonth);
String startdateStr = dateFormat.format(dynamicObject.getDate("zcgj_startdate"));
String enddateStr = dateFormat.format(dynamicObject.getDate("zcgj_enddate"));
isOk = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);
if(!isOk){
this.addFatalErrorMessage(extendedDataEntity, String.format("当前单据中往来居家明细的第%d行往返日期不在报销归属月中",i));
}
// 更新统计次数
homeentityCountMap.put(yearMonth, homeentityCountMap.getOrDefault(yearMonth, 0) + 1);
i++;
}
// 输出结果
for (Map.Entry<String, Integer> entry : homeentityCountMap.entrySet()) {
if(entry.getValue() > monthTime){
String message = String.format("当前单据在%s月中提交了%d次往来居家往来居家次数超限限制每月%d次",entry.getKey(),entry.getValue() ,monthTime);
isOk= false;
this.addFatalErrorMessage(extendedDataEntity, message);
}
}
if(isOk){
for (DynamicObject dynamicObject : tripentry) {
Date bxmonth = dynamicObject.getDate("zcgj_bxmonth");
DataSet tripreimbursebill = getTripreimbursebill(bxmonth, applierId);
//已用次数
int goHomeCount = 0;
StringBuilder trSb = new StringBuilder();
for (Row row : tripreimbursebill) {
goHomeCount++;
String billno = row.getString("billno");
/*String bxmonthStr = dateFormat.format(row.getDate("bxmonth")); /*String bxmonthStr = dateFormat.format(row.getDate("bxmonth"));
String startdateStr = dateFormat.format(row.getDate("startdate")); String startdateStr = dateFormat.format(row.getDate("startdate"));
String enddateStr = dateFormat.format(row.getDate("enddate")); String enddateStr = dateFormat.format(row.getDate("enddate"));
boolean b = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);*/ boolean b = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);*/
trSb.append(billno).append(";"); trSb.append(billno).append(";");
} }
DataSet dailyreimbursebill = getDailyreimbursebill(bxmonth, applierId); DataSet dailyreimbursebill = getDailyreimbursebill(bxmonth, applierId);
StringBuilder daSb = new StringBuilder(); StringBuilder daSb = new StringBuilder();
for (Row row : dailyreimbursebill) { for (Row row : dailyreimbursebill) {
goHomeCount++; goHomeCount++;
String billno = row.getString("billno"); String billno = row.getString("billno");
/* String bxmonthStr = dateFormat.format(row.getDate("bxmonth")); /* String bxmonthStr = dateFormat.format(row.getDate("bxmonth"));
String startdateStr = dateFormat.format(row.getDate("startdate")); String startdateStr = dateFormat.format(row.getDate("startdate"));
String enddateStr = dateFormat.format(row.getDate("enddate")); String enddateStr = dateFormat.format(row.getDate("enddate"));
boolean b = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);*/ boolean b = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);*/
daSb.append(billno).append(";"); daSb.append(billno).append(";");
} }
if(goHomeCount >= monthTime){ if(goHomeCount >= monthTime){
int monthVal = getFirstDayOfMonth(bxmonth).getMonth().getValue(); int monthVal = getFirstDayOfMonth(bxmonth).getMonth().getValue();
String message = String.format("请知悉:您每月共有%d次往来家居地报销次数在%d月中已进行过%d次来往家居地报销。",monthTime,monthVal,goHomeCount); String message = String.format("请知悉:您每月共有%d次往来家居地报销次数在%d月中已进行过%d次来往家居地报销。",monthTime,monthVal,goHomeCount);
if(!StringUtils.isBlank(trSb.toString())){ if(!StringUtils.isBlank(trSb.toString())){
message+="已提交的差旅报销单:【"+trSb.toString()+""; message+="已提交的差旅报销单:【"+trSb.toString()+"";
}
if(!StringUtils.isBlank(daSb.toString())){
message+="已提交的费用报销单:【"+daSb.toString()+"";
}
this.addFatalErrorMessage(extendedDataEntity, message);
}
} }
if(!StringUtils.isBlank(daSb.toString())){
message+="已提交的费用报销单:【"+daSb.toString()+"";
}
this.addFatalErrorMessage(extendedDataEntity, message);
} }
}else {
this.addFatalErrorMessage(extendedDataEntity, String.format("往来家居配置有误!"));
} }
} }
} }
} }
} }
} }

View File

@ -43,9 +43,9 @@ public class TripreimbursebillUpOp extends AbstractOperationServicePlugIn {
//当前切换选择的组织 //当前切换选择的组织
Long currentOrgId = RequestContext.get().getOrgId(); Long currentOrgId = RequestContext.get().getOrgId();
//当前所在的组织是属于矿山下的 //当前所在的组织是属于矿山下的
if(OrgCheckUtils.isKS(currentOrgId)){ //if(OrgCheckUtils.isKS(currentOrgId)){
e.getValidators().add(new ValidatorExt()); e.getValidators().add(new ValidatorExt());
} //}
} }
class ValidatorExt extends AbstractValidator { class ValidatorExt extends AbstractValidator {