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