Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
983f92a0d3
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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("往来家居配置有误!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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("往来家居配置有误!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue