Merge remote-tracking branch 'origin/main'

zm_dev
sy 10 months ago
commit 86f1dbeea1

@ -43,9 +43,8 @@ public class GetAskForLeaveCmd extends AbstractCommonCommand<Map<String,Object>>
String userId = Util.null2String(params.get("userId"));
String analysisDate = Util.null2String(params.get("analysisDate"));
List<Map<String, Object>> scheduleResult = (List<Map<String, Object>>)params.get("scheduleResult");
String sql = "select b.qjry,b.jqlx,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where b.qjry=? and b.ksrq>=? and b.ksrq<=? and (b.cxqj=0 or b.cxqj is null) and a.jlzt=1";
// String sql = "select b.qjry,b.jqlx,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl_dt1 b where b.qjry=? and b.ksrq>=? and b.ksrq<=? and (b.cxqj=0 or b.cxqj is null)";
List<Map<String,Object>> askForLeaveList = DbTools.getSqlToList(sql,userId, DateUtil.beforeDay(analysisDate,1),DateUtil.AfterDay(analysisDate,1));
String sql = "select b.qjry,b.jqlx,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where b.qjry=? and b.ksrq<=? and b.jsrq>=? and (b.cxqj=0 or b.cxqj is null) and a.jlzt=1";
List<Map<String,Object>> askForLeaveList = DbTools.getSqlToList(sql,userId,DateUtil.AfterDay(analysisDate,1), DateUtil.beforeDay(analysisDate,1));
Map<String,Map<String,Object>> askForLeaveItems = Maps.newHashMap();
@ -171,8 +170,8 @@ public class GetAskForLeaveCmd extends AbstractCommonCommand<Map<String,Object>>
put("bcsdxx", scheduleResult.get(0).get("bcsdxx"));
put("edsc", scheduleResult.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey());
put("dtkssj",askForLeaveData.get("kssj"));
put("dtjssj",askForLeaveData.get("jssj"));
put("dtkssj",askForLeaveData.get("ksrq")+" "+askForLeaveData.get("kssj"));
put("dtjssj",askForLeaveData.get("jsrq")+" "+askForLeaveData.get("jssj"));
put("ksdk",askForLeaveItem.get("lgsbxydk"));
put("jsdk",askForLeaveItem.get("fgsbxydk"));
put("tqdkfzs","60");
@ -180,19 +179,9 @@ public class GetAskForLeaveCmd extends AbstractCommonCommand<Map<String,Object>>
put("tqlghlfzs",askForLeaveItem.get("tqlghlfzs"));
put("thfghlfzs",askForLeaveItem.get("thfghlfzs"));
}};
String ksrq = Util.null2String(askForLeaveData.get("ksrq"));
if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) == 0){
askForLeaveMap.put("gsrq",ClassBelongToEnum.NOWDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) < 0){
askForLeaveMap.put("gsrq",ClassBelongToEnum.YESTERDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) > 0){
askForLeaveMap.put("gsrq",ClassBelongToEnum.NEXTDAY.getKey());
}
askForLeaveSchedule.add(askForLeaveMap);
}
}
return resultMap;
}
}

@ -44,8 +44,8 @@ public class GetEvectionCmd extends AbstractCommonCommand<Map<String,Object>> {
String analysisDate = Util.null2String(params.get("analysisDate"));
List<Map<String, Object>> scheduleResult = (List<Map<String, Object>>)params.get("scheduleResult");
//String sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr=? and b.ksrq>=? and b.ksrq<=? and (b.cxcc=0 or b.cxcc is null)";
String sql = "select b.ccr,b.cclx,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr=? and b.ksrq>=? and b.ksrq<=? and (b.cxcc=0 or b.cxcc is null) and a.jlzt=1";
List<Map<String,Object>> evectionList = DbTools.getSqlToList(sql,userId, DateUtil.beforeDay(analysisDate,1),DateUtil.AfterDay(analysisDate,1));
String sql = "select b.ccr,b.cclx,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr=? and b.ksrq<=? and b.jsrq>=? and (b.cxcc=0 or b.cxcc is null) and a.jlzt=1";
List<Map<String,Object>> evectionList = DbTools.getSqlToList(sql,userId, DateUtil.AfterDay(analysisDate,1), DateUtil.beforeDay(analysisDate,1));
Map<String,Map<String,Object>> evectionItems = Maps.newHashMap();
@ -167,8 +167,8 @@ public class GetEvectionCmd extends AbstractCommonCommand<Map<String,Object>> {
put("bcsdxx", scheduleResult.get(0).get("bcsdxx"));
put("edsc", scheduleResult.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.EVECTION.getKey());
put("dtkssj",evectionData.get("kssj"));
put("dtjssj",evectionData.get("jssj"));
put("dtkssj",evectionData.get("ksrq")+" "+evectionData.get("kssj"));
put("dtjssj",evectionData.get("jsrq")+" "+evectionData.get("jssj"));
put("ksdk",evectionItem.get("lgsbxydk"));
put("jsdk",evectionItem.get("fgsbxydk"));
put("tqdkfzs","60");
@ -176,14 +176,6 @@ public class GetEvectionCmd extends AbstractCommonCommand<Map<String,Object>> {
put("tqlghlfzs",evectionItem.get("tqlghlfzs"));
put("thfghlfzs",evectionItem.get("thfghlfzs"));
}};
String ksrq = Util.null2String(evectionData.get("ksrq"));
if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) == 0){
evectioneMap.put("gsrq",ClassBelongToEnum.NOWDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) < 0){
evectioneMap.put("gsrq",ClassBelongToEnum.YESTERDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) > 0){
evectioneMap.put("gsrq",ClassBelongToEnum.NEXTDAY.getKey());
}
evectionSchedule.add(evectioneMap);
}
}

@ -163,6 +163,7 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
}else {
map.put("edsc","0");
}
map.put("edts","0");
map.put("bdlx", ClassSegmentTypeEnum.OVERTIME_PLAN.getKey());
map.put("dtkssj",overtimePlan.get("kssj"));
map.put("dtjssj",overtimePlan.get("jssj"));
@ -176,7 +177,6 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
map.put("rqlx",dateMap.get(e.getKey()));
map.put("edxss",overtimePlan.get("jbsc"));
map.put("edfzs",Double.valueOf(overtimePlan.get("jbsc").toString())*60);
map.put("","0");
map.put("jblx",overPlanattendanceItems);
if (DateUtil.getTime(overtimePlan.get("ksrq").toString()).compareTo(DateUtil.getTime(e.getKey())) < 0){

@ -484,6 +484,9 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
//开始卡点
Map<String,Object> needClockIn = scheduleResult.stream().filter(e -> {
String dtkssj = Utils.getkssjTime(e,analysisDate);
if (Utils.ifAskforOrEvctionClassSegment(e.get("bdlx").toString())){
dtkssj = Utils.getjssjTime(e,analysisDate);
}
if (time.equals(dtkssj)){
return true;
}else {
@ -519,6 +522,9 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
//结束卡点
Map<String,Object> needClockIn = scheduleResult.stream().filter(e -> {
String dtjssj = Utils.getjssjTime(e,analysisDate);
if (Utils.ifAskforOrEvctionClassSegment(e.get("bdlx").toString())){
dtjssj = Utils.getkssjTime(e,analysisDate);
}
if (time.equals(dtjssj)){
return true;
}else {

@ -399,11 +399,10 @@ public class ShiftServiceImpl extends Service implements ShiftService {
// map.put("sfxx",resultList.get(0).get("sfxx"));
// map.put("btgz",resultList.get(0).get("btgz"));
// map.put("xxbdkzdjb",resultList.get(0).get("xxbdkzdjb"));
map.put("edts",new BigDecimal(overtimePlan.get("jbsc").toString()).divide(new BigDecimal(resultList.get(0).get("edsc").toString(),new MathContext(2, RoundingMode.HALF_UP))));
}else {
map.put("edsc","0");
map.put("edts","1");
}
map.put("edts","0");
map.put("bdlx", ClassSegmentTypeEnum.OVERTIME_PLAN.getKey());
map.put("dtkssj",overtimePlan.get("kssj"));
map.put("dtjssj",overtimePlan.get("jssj"));
@ -416,8 +415,15 @@ public class ShiftServiceImpl extends Service implements ShiftService {
map.put("thdkfzs","60");
map.put("rqlx",dateType);
map.put("edxss",overtimePlan.get("jbsc"));
map.put("edfzs",Double.valueOf(overtimePlan.get("jbsc").toString())*60);
map.put("jblx",attendanceItems);
if (DateUtil.getTime(overtimePlan.get("ksrq").toString()).compareTo(DateUtil.getTime(e.getKey())) < 0){
map.put("gsrq", ClassBelongToEnum.YESTERDAY.getKey());
}else if (DateUtil.getTime(overtimePlan.get("ksrq").toString()).compareTo(DateUtil.getTime(e.getKey())) == 0){
map.put("gsrq", ClassBelongToEnum.NOWDAY.getKey());
}else if (DateUtil.getTime(overtimePlan.get("ksrq").toString()).compareTo(DateUtil.getTime(e.getKey())) > 0){
map.put("gsrq", ClassBelongToEnum.NEXTDAY.getKey());
}
if (attendanceItems.size() >0){
map.put("ksdk",attendanceItems.get(0).get("ksjbbxydk"));
map.put("jsdk",attendanceItems.get(0).get("jsjbbxydk"));
@ -426,31 +432,18 @@ public class ShiftServiceImpl extends Service implements ShiftService {
map.put("jbwdhlfzs",attendanceItems.get(0).get("jbwdhlfzs"));
map.put("jbzzhlfzs",attendanceItems.get(0).get("jbzzhlfzs"));
}
if (resultList.size() > 1){
if (resultList.size() > 0){
String kssjbegin = Utils.getkssjTime(resultList.get(0),e.getKey());
String kssjend = Utils.getkssjTime(resultList.get(resultList.size()-1),e.getKey());
String kssj = overtimePlan.get("ksrq")+" "+overtimePlan.get("kssj");
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(kssjbegin)) <0){
//加班计划在开头
if (resultList.get(0).get("dtkssj").equals(overtimePlan.get("jssj")) &&
resultList.get(0).get("ksdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("ksdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("jsdk").equals(CheckBoxEnum.CHECKED.getKey())){
//当加班结束时间和早上打卡时间重合时
}
resultList.add(0,map);
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(kssjend)) >0){
//加班计划在末尾
if (resultList.get(0).get("dtjssj").equals(overtimePlan.get("kssj")) &&
resultList.get(0).get("jsdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("ksdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("jsdk").equals(CheckBoxEnum.CHECKED.getKey())){
//当加班结束时间和晚上下班时间重合时1
}
resultList.add(map);
}else {
if (resultList.size() > 1){
//加班计划在中间
for (int j=1;j<resultList.size();j++){
String kssj1 = Utils.getkssjTime(resultList.get(j),e.getKey());
@ -462,6 +455,7 @@ public class ShiftServiceImpl extends Service implements ShiftService {
}
}
}
}
}else {
resultList.add(map);
}
@ -473,25 +467,26 @@ public class ShiftServiceImpl extends Service implements ShiftService {
/**
*
*
* @param askForLeaveAndEvctionSchedule
* @param analysisDate
* @return
*/
public List<Map<String,Object>> mergeAskForLeaveAndEvctionSchedule(List<Map<String,Object>> askForLeaveAndEvctionSchedule,String analysisDate){
public List<Map<String, Object>> mergeAskForLeaveAndEvctionSchedule(List<Map<String, Object>> askForLeaveAndEvctionSchedule, String analysisDate) {
askForLeaveAndEvctionSchedule = askForLeaveAndEvctionSchedule.stream().sorted(Comparator.comparing(e->DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
askForLeaveAndEvctionSchedule = askForLeaveAndEvctionSchedule.stream().sorted(Comparator.comparing(e -> DateUtil.getTime(Utils.getkssjTime(e, analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
for (int i=0;i<askForLeaveAndEvctionSchedule.size()-1;i++){
String beforeDtkssj = askForLeaveAndEvctionSchedule.get(i).get("dtkssj").toString();
String beforeDtjssj = askForLeaveAndEvctionSchedule.get(i).get("dtjssj").toString();
for (int i = 0; i < askForLeaveAndEvctionSchedule.size() - 1; i++) {
String beforeDtkssj = Utils.getkssjTime(askForLeaveAndEvctionSchedule.get(i),analysisDate);
String beforeDtjssj = Utils.getjssjTime(askForLeaveAndEvctionSchedule.get(i),analysisDate);
for (int j=i+1;j<askForLeaveAndEvctionSchedule.size();j++){
String dtkssj = askForLeaveAndEvctionSchedule.get(j).get("dtkssj").toString();
String dtjssj = askForLeaveAndEvctionSchedule.get(j).get("dtjssj").toString();
if (beforeDtjssj.equals(dtkssj)){
askForLeaveAndEvctionSchedule.get(i).put("dtjssj",dtjssj);
askForLeaveAndEvctionSchedule.get(i).put("jsdk",askForLeaveAndEvctionSchedule.get(j).get("jsdk"));
askForLeaveAndEvctionSchedule.get(i).put("thfghlfzs",askForLeaveAndEvctionSchedule.get(j).get("thfghlfzs"));
for (int j = i + 1; j < askForLeaveAndEvctionSchedule.size(); j++) {
String dtkssj = Utils.getkssjTime(askForLeaveAndEvctionSchedule.get(j),analysisDate);
String dtjssj = Utils.getjssjTime(askForLeaveAndEvctionSchedule.get(j),analysisDate);
if (DateUtil.getTime(beforeDtjssj).compareTo(DateUtil.getTime(dtkssj)) == 0) {
askForLeaveAndEvctionSchedule.get(i).put("dtjssj", dtjssj);
askForLeaveAndEvctionSchedule.get(i).put("jsdk", askForLeaveAndEvctionSchedule.get(j).get("jsdk"));
askForLeaveAndEvctionSchedule.get(i).put("thfghlfzs", askForLeaveAndEvctionSchedule.get(j).get("thfghlfzs"));
askForLeaveAndEvctionSchedule.remove(askForLeaveAndEvctionSchedule.get(j));
j--;
i--;

@ -46,11 +46,11 @@ public class AttendanceanalysisAction {
@Produces({"text/plain"})
public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-07-18");
// paramMap.put("endDate","2024-07-18");
// paramMap.put("userIds","81");
//Map<String,Object> paramMap = ParamUtil.request2Map(request);
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate","2024-07-18");
paramMap.put("endDate","2024-07-18");
paramMap.put("userIds","81");
String startDate = Util.null2String(paramMap.get("startDate"));
String startBeforeDate = DateUtil.beforeDay(startDate,2);
@ -234,16 +234,16 @@ public class AttendanceanalysisAction {
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
//请假记录
sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry in ("+userIds+") and b.ksrq>=? and b.ksrq<=? and (b.cxqj=0 or b.cxqj is null) order by b.ksrq,b.kssj";
List<Map<String,Object>> askforLeaveList = DbTools.getSqlToList(sql,startDate,endDate);
sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry in ("+userIds+") and b.ksrq<=? and b.jsrq>=? and (b.cxqj=0 or b.cxqj is null) a.jlzt=1 order by b.ksrq,b.kssj";
List<Map<String,Object>> askforLeaveList = DbTools.getSqlToList(sql,DateUtil.AfterDay(endDate,1), DateUtil.beforeDay(startDate,1));
for (Map<String,Object> map :askforLeaveList){
map.put("jqlx_name",itemMap.get(map.get("jqlx")));
}
Map<String, List<Map<String,Object>>> askforLeavecollect = askforLeaveList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("qjry"))));
//出差记录
sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr in ("+userIds+") and b.ksrq>=? and b.ksrq<=? and (b.cxcc=0 or b.cxcc is null) order by b.ksrq,b.kssj";
List<Map<String,Object>> evectionList = DbTools.getSqlToList(sql,startDate,endDate);
sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr in ("+userIds+") and b.ksrq<=? and b.jsrq>=? and (b.cxcc=0 or b.cxcc is null) a.jlzt=1 order by b.ksrq,b.kssj ";
List<Map<String,Object>> evectionList = DbTools.getSqlToList(sql,DateUtil.AfterDay(endDate,1), DateUtil.beforeDay(startDate,1));
for (Map<String,Object> map :evectionList){
map.put("cclx_name",itemMap.get(map.get("cclx")));
}
@ -258,7 +258,7 @@ public class AttendanceanalysisAction {
Map<String, List<Map<String,Object>>> overPlancollect = overPlanDataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("jbry"))));
//加班结果
sql = "select szjg,jbry,sjksrq,jbjgly,sjjsrq,sjkssj,sjjssj,sjjbsc,jblx,zt from uf_jcl_kq_jbjg where jbry in ("+userIds+") and sjksrq>=? and sjjsrq<=? order by sjksrq,sjkssj";
sql = "select szjg,jbry,sjksrq,jbjgly,sjjsrq,sjkssj,sjjssj,sjjbsc,jblx,zt from uf_jcl_kq_jbjg where jbry in ("+userIds+") and sjksrq>=? and sjjsrq<=? and zt=1 order by sjksrq,sjkssj";
List<Map<String,Object>> overPlanResultList = DbTools.getSqlToList(sql,startDate,endDate);
for (Map<String,Object> map :overPlanResultList){
map.put("jblx_name",itemMap.get(map.get("jblx")));

@ -382,13 +382,13 @@ public class AttendanceAnalysisWrapper extends Service {
askForLeaveAndEvctionSchedule = askForLeaveAndEvctionSchedule.stream().sorted(Comparator.comparing(e -> DateUtil.getTime(Utils.getkssjTime(e, analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
for (int i = 0; i < askForLeaveAndEvctionSchedule.size() - 1; i++) {
String beforeDtkssj = askForLeaveAndEvctionSchedule.get(i).get("dtkssj").toString();
String beforeDtjssj = askForLeaveAndEvctionSchedule.get(i).get("dtjssj").toString();
String beforeDtkssj = Utils.getkssjTime(askForLeaveAndEvctionSchedule.get(i),analysisDate);
String beforeDtjssj = Utils.getjssjTime(askForLeaveAndEvctionSchedule.get(i),analysisDate);
for (int j = i + 1; j < askForLeaveAndEvctionSchedule.size(); j++) {
String dtkssj = askForLeaveAndEvctionSchedule.get(j).get("dtkssj").toString();
String dtjssj = askForLeaveAndEvctionSchedule.get(j).get("dtjssj").toString();
if (beforeDtjssj.equals(dtkssj)) {
String dtkssj = Utils.getkssjTime(askForLeaveAndEvctionSchedule.get(j),analysisDate);
String dtjssj = Utils.getjssjTime(askForLeaveAndEvctionSchedule.get(j),analysisDate);
if (DateUtil.getTime(beforeDtjssj).compareTo(DateUtil.getTime(dtkssj)) == 0) {
askForLeaveAndEvctionSchedule.get(i).put("dtjssj", dtjssj);
askForLeaveAndEvctionSchedule.get(i).put("jsdk", askForLeaveAndEvctionSchedule.get(j).get("jsdk"));
askForLeaveAndEvctionSchedule.get(i).put("thfghlfzs", askForLeaveAndEvctionSchedule.get(j).get("thfghlfzs"));

@ -59,9 +59,9 @@ public class UpdateAttendanceResultWrapper extends Service {
Map<String,Map<String,Object>> evectionItems = (Map<String,Map<String,Object>>)params.get("evectionItems");
//以开始时间分割班次
Map<String,List<Map<String, Object>>> startScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->e.get("dtkssj").toString()));
Map<String,List<Map<String, Object>>> startScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->Utils.getkssjTime(e,analysisDate)));
//以结束时间分割班次
Map<String,List<Map<String, Object>>> endScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->e.get("dtjssj").toString()));
Map<String,List<Map<String, Object>>> endScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->Utils.getjssjTime(e,analysisDate)));
List<Map<String,Object>> resultList = Lists.newArrayList();
for (ClockPointDTO clcokInTimedto :clcokInTimeDataList){
@ -83,13 +83,13 @@ public class UpdateAttendanceResultWrapper extends Service {
//班次
Map<String, Object> classInfo = Maps.newHashMap();
if (ClockPointEnum.START.equals(pointType) && !ifevectionOrAskLeave){
classInfo = startScheduleResult.get(pointTime.split(" ")[1]).get(0);
classInfo = startScheduleResult.get(pointTime).get(0);
}else if (ClockPointEnum.END.equals(pointType) && !ifevectionOrAskLeave){
classInfo = endScheduleResult.get(pointTime.split(" ")[1]).get(0);
classInfo = endScheduleResult.get(pointTime).get(0);
}else if (ClockPointEnum.START.equals(pointType) && ifevectionOrAskLeave){
classInfo = endScheduleResult.get(pointTime.split(" ")[1]).get(0);
classInfo = endScheduleResult.get(pointTime).get(0);
}else if (ClockPointEnum.END.equals(pointType) && ifevectionOrAskLeave){
classInfo = startScheduleResult.get(pointTime.split(" ")[1]).get(0);
classInfo = startScheduleResult.get(pointTime).get(0);
}
if (ClockPointEnum.EMPTY.equals(timeType) || clcokInTimeData == null){
//漏卡

@ -421,6 +421,7 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
List<Map<String,Object>> organizationList = Lists.newArrayList();
String sql = "select id,sfxx,bcsdxx from uf_jcl_kq_bcxx where id = ?";
List<Map<String,Object>> list = Lists.newArrayList();
Set<String> userIds = Sets.newHashSet();
if (!"".equals(bcxxId)){
list = DbTools.getSqlToList(sql,bcxxId);
}
@ -454,6 +455,8 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
map.put("pbsj",DateUtil.getCurrentTime("yyyy-MM-dd HH:mm").split(" ")[1]);
if (!"".equals(map.get("rqlx"))){
organizationList.add(map);
}else {
userIds.add(str);
}
}
@ -465,6 +468,9 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
if (!(boolean)resultMap.get("result")){
throw new AttendanceRunTimeException("插入数据失败,请检查修改班次人员是否有对应的企业日历");
}
if (userIds.size() > 0){
throw new AttendanceRunTimeException("部分人员更新失败,请检查修改班次人员是否有对应的企业日历");
}
return resultMap;
}

@ -906,12 +906,17 @@ public class Utils<T> {
* @return
*/
public static String getkssjTime(Map<String,Object> schedulingMap,String date){
if (ifAskforOrEvctionClassSegment(schedulingMap.get("bdlx").toString())){
return schedulingMap.get("dtkssj").toString();
}
String gsrq = Util.null2String(schedulingMap.get("gsrq"));
String kssj = Util.null2String(schedulingMap.get("dtkssj"));
if (gsrq.equals(ClassBelongToEnum.YESTERDAY.getKey())){
date = DateUtil.beforeDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NEXTDAY.getKey())){
date = DateUtil.AfterDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NOWDAY.getKey())){
date = date;
}
kssj = date+" "+kssj;
@ -939,6 +944,9 @@ public class Utils<T> {
* @return
*/
public static String getjssjTime(Map<String,Object> schedulingMap,String date){
if (ifAskforOrEvctionClassSegment(schedulingMap.get("bdlx").toString())){
return schedulingMap.get("dtjssj").toString();
}
String gsrq = Util.null2String(schedulingMap.get("gsrq"));
String jssj = Util.null2String(schedulingMap.get("dtjssj"));
String kssj = Util.null2String(schedulingMap.get("dtkssj"));
@ -946,6 +954,8 @@ public class Utils<T> {
date = DateUtil.beforeDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NEXTDAY.getKey())){
date = DateUtil.AfterDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NOWDAY.getKey())){
date = date;
}
jssj = date+" "+jssj;
kssj = date+" "+kssj;

@ -0,0 +1,69 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
function adddetail() {
//首先进行必填校验,不通过直接退出
//if(!WfForm.verifyFormRequired(false, true)){ return; }
let mainTableData = {
xjr: WfForm.getFieldValue(WfForm.convertFieldNameToId("xjr")),
cxqj: WfForm.getFieldValue(WfForm.convertFieldNameToId("cxqj"))
}
let param = {
mainTableData:JSON.stringify(mainTableData),
}
console.log(param);
$.ajax({
url:'/api/attendance/allowance/getAllowanceRecordList',
data:param,
type:'GET',
dataType:'json',
async:false,
success:function(res){
if(res.api_status){
if(res.data.status){
WfForm.delDetailRow("detail_1", "all");
let resultData = res.data.data;
resultData.filter(item => {
let addObj = {};
addObj[WfForm.convertFieldNameToId("bc", "detail_1")] = {value:item.bc,specialobj:[{id:item.bc,name:item.bcname}]};
addObj[WfForm.convertFieldNameToId("jtlx", "detail_1")] = {value:item.jtlx,specialobj:[{id:item.jtlx,name:item.jtlxname}]};
addObj[WfForm.convertFieldNameToId("cqjg", "detail_1")] = {value:item.cqjg,specialobj:[{id:item.cqjg,name:item.cqjgSign}]};
addObj[WfForm.convertFieldNameToId("rq", "detail_1")]={value:item.rq};
addObj[WfForm.convertFieldNameToId("sc", "detail_1")]={value:item.sc};
addObj[WfForm.convertFieldNameToId("zt", "detail_1")]={value:item.zt};
addObj[WfForm.convertFieldNameToId("sm", "detail_1")]={value:item.sm};
addObj[WfForm.convertFieldNameToId("bcbdxx", "detail_1")]={value:item.bcbdxx};
addObj[WfForm.convertFieldNameToId("yxdkxx", "detail_1")]={value:item.yxdkxx};
addObj[WfForm.convertFieldNameToId("jtid", "detail_1")]={value:item.jtid};
WfForm.addDetailRow("detail_1", addObj);
})
}
}
}
})
}
//确认人值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("xjr"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//查询区间值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("cxqj"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
</script>

@ -0,0 +1,119 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
$('.generateLeaveInfoList').css("background-color","#2db7f5")
$('.generateLeaveInfoList').css("height","35px")
$('.generateLeaveInfoList span').css("line-height","35px")
$('.generateLeaveInfoList').css("border-radius","3px")
$('.generateLeaveInfoList').click(function(){
//允许继续添加行调用callback不调用代表阻断添加
let mainTableData = {
szjg: WfForm.getFieldValue(WfForm.convertFieldNameToId("szjg")),
qjr: WfForm.getFieldValue(WfForm.convertFieldNameToId("qjry")),
jqlx: WfForm.getFieldValue(WfForm.convertFieldNameToId("jqlx")),
mtcfsdjq: WfForm.getFieldValue(WfForm.convertFieldNameToId("mtcfsdjq")),
ksrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")),
jsrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")),
kssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj")),
jssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj")),
cxjqj: WfForm.getFieldValue(WfForm.convertFieldNameToId("cxjqj")),
qjsc: WfForm.getFieldValue(WfForm.convertFieldNameToId("qjsc"))
}
let detailTableData=[];
let param = {
mainTableData:JSON.stringify(mainTableData),
detailTableData:JSON.stringify(detailTableData),
}
console.log(param);
$.ajax({
url:'/api/attendance/askforleave/generateLeaveInfoList',
data:param,
type:'GET',
dataType:'json',
async:false,
success:function(res){
if(res.api_status){
if(res.data.status){
WfForm.delDetailRow("detail_1", "all");
let resultData = res.data.data;
resultData.filter(item => {
let addObj = {}
addObj[WfForm.convertFieldNameToId("qjr", "detail_1")] = {value:item.qjr,specialobj:[{id:item.qjr,name:item.qjrName}]};
addObj[WfForm.convertFieldNameToId("qjlx", "detail_1")] = {value:item.qjlx,specialobj:[{id:item.qjlx,name:item.qjlxName}]};
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")]={value:item.ksrq}
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")]={value:item.kssj}
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")]={value:item.jsrq}
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")]={value:item.jssj}
addObj[WfForm.convertFieldNameToId("qjsc", "detail_1")]={value:item.qjsc}
addObj[WfForm.convertFieldNameToId("qtj", "detail_1")]={value:item.qtj}
addObj[WfForm.convertFieldNameToId("btj", "detail_1")]={value:item.btj}
addObj[WfForm.convertFieldNameToId("jqye", "detail_1")]={value:item.jqye==undefined?'':item.jqye}
WfForm.addDetailRow("detail_1", addObj);
})
}else{
WfForm.showMessage(res.data.errorInfo, 2, 5);
}
}
}
})
})
//请假方式变更时,同样进行页面显示属性的调整
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("cxjqj"),function(obj,id,value){
resetAttr(value);
});
WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){
let detailNum = WfForm.getDetailRowCount("detail_1")
if(detailNum > 0){
callback();
}else{
WfForm.showMessage("明细表1没有数据请点击生成请假按钮", 2, 10);
}
});
resetAttr(WfForm.getFieldValue(WfForm.convertFieldNameToId("cxjqj")))
/**
*
* @param pleavetype 请假方式0全天请假1按时间区间请假2半天3按时间长度请假
*/
function resetAttr(pleavetype) {
//alert('resetAttr');
switch (pleavetype){
case '1'://按时间区间请假
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qjsc"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("scdw"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 3);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 3);
break;
case '3'://按时间区间请假
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '1' });//请假时长单位为小时
//请假时间长度可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qjsc"), 3);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("scdw"), 1);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 5);
//每天请假时长默认为1小时
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qjsc"),{ value: '1' });
break;
default:
//请假时间长度不可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qjsc"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("scdw"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 5);
break;
}
}
</script>

@ -0,0 +1,140 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
$('.generateLeaveInfoList').css("background-color","#2db7f5")
$('.generateLeaveInfoList').css("height","35px")
$('.generateLeaveInfoList span').css("line-height","35px")
$('.generateLeaveInfoList').css("border-radius","2px")
$('.generateLeaveInfoList').click(function(){
//允许继续添加行调用callback不调用代表阻断添加
let mainTableData = {
szjg: WfForm.getFieldValue(WfForm.convertFieldNameToId("szjg")),
qjr: WfForm.getFieldValue(WfForm.convertFieldNameToId("qjr")),
jqlx: WfForm.getFieldValue(WfForm.convertFieldNameToId("jqlx")),
mtcfsdjq: WfForm.getFieldValue(WfForm.convertFieldNameToId("mtcfsdjq")),
ksrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")),
jsrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")),
kssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj")),
jssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj")),
cxjqj: WfForm.getFieldValue(WfForm.convertFieldNameToId("cxjqj")),
qjsc: WfForm.getFieldValue(WfForm.convertFieldNameToId("qjsc"))
}
let detailTableData=[];
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
detailTableData.push({
ksrq:WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq", "detail_1")+"_"+rowIndex),
kssj:WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj", "detail_1")+"_"+rowIndex),
jsrq:WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq", "detail_1")+"_"+rowIndex),
jssj:WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj", "detail_1")+"_"+rowIndex),
qjsc:WfForm.getFieldValue(WfForm.convertFieldNameToId("qjsc", "detail_1")+"_"+rowIndex),
qtj:WfForm.getFieldValue(WfForm.convertFieldNameToId("qtj", "detail_1")+"_"+rowIndex),
btj:WfForm.getFieldValue(WfForm.convertFieldNameToId("btj", "detail_1")+"_"+rowIndex),
cxqj:WfForm.getFieldValue(WfForm.convertFieldNameToId("cxqj", "detail_1")+"_"+rowIndex),
cxly:WfForm.getFieldValue(WfForm.convertFieldNameToId("cxly", "detail_1")+"_"+rowIndex),
cxid:WfForm.getFieldValue(WfForm.convertFieldNameToId("cxid", "detail_1")+"_"+rowIndex),
qjr:WfForm.getFieldValue(WfForm.convertFieldNameToId("qjr", "detail_1")+"_"+rowIndex),
qjlx:WfForm.getFieldValue(WfForm.convertFieldNameToId("qjlx", "detail_1")+"_"+rowIndex),
jqye:WfForm.getFieldValue(WfForm.convertFieldNameToId("jqye", "detail_1")+"_"+rowIndex),
})
}
}
let param = {
mainTableData:JSON.stringify(mainTableData),
detailTableData:JSON.stringify(detailTableData),
}
console.log(param);
$.ajax({
url:'/api/attendance/askforleave/generateLeaveInfoList',
data:param,
type:'GET',
dataType:'json',
async:false,
success:function(res){
if(res.api_status){
if(res.data.status){
let resultData = res.data.data;
resultData.filter(item => {
let addObj = {}
addObj[WfForm.convertFieldNameToId("qjr", "detail_1")] = {value:item.qjr,specialobj:[{id:item.qjr,name:item.qjrName}]};
addObj[WfForm.convertFieldNameToId("qjlx", "detail_1")] = {value:item.qjlx,specialobj:[{id:item.qjlx,name:item.qjlxName}]};
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")]={value:item.ksrq}
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")]={value:item.kssj}
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")]={value:item.jsrq}
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")]={value:item.jssj}
addObj[WfForm.convertFieldNameToId("qjsc", "detail_1")]={value:item.qjsc}
addObj[WfForm.convertFieldNameToId("qtj", "detail_1")]={value:item.qtj}
addObj[WfForm.convertFieldNameToId("btj", "detail_1")]={value:item.btj}
addObj[WfForm.convertFieldNameToId("jqye", "detail_1")]={value:item.jqye==undefined?'':item.jqye}
WfForm.addDetailRow("detail_1", addObj);
})
}else{
WfForm.showMessage(res.data.errorInfo, 2, 5);
}
}
}
})
})
//请假方式变更时,同样进行页面显示属性的调整
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("cxjqj"),function(obj,id,value){
resetAttr(value);
});
WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){
let detailNum = WfForm.getDetailRowCount("detail_1")
if(detailNum > 0){
callback();
}else{
WfForm.showMessage("明细表1没有数据请点击生成请假按钮", 2, 10);
}
});
resetAttr(WfForm.getFieldValue(WfForm.convertFieldNameToId("cxjqj")))
/**
*
* @param pleavetype 请假方式0全天请假1按时间区间请假2半天3按时间长度请假
*/
function resetAttr(pleavetype) {
//alert('resetAttr');
switch (pleavetype){
case '1'://按时间区间请假
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qjsc"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("scdw"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 3);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 3);
break;
case '3'://按时间区间请假
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '1' });//请假时长单位为小时
//请假时间长度可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qjsc"), 3);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("scdw"), 1);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 5);
//每天请假时长默认为1小时
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qjsc"),{ value: '1' });
break;
default:
//请假时间长度不可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qjsc"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("scdw"), 4);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 5);
break;
}
}
</script>

@ -0,0 +1,47 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
//补打卡人变更 获取补打卡日期
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("bdkr", "detail_1"),function(id,rowIndex,value){
WfForm.getFieldValue(WfForm.convertFieldNameToId("bdkrq", "detail_1")+"_"+rowIndex)
//alert(WfForm.getFieldValue(WfForm.convertFieldNameToId("bdkrq", "detail_1")+"_"+rowIndex));
});
});
//补打卡日期变更 获取补打卡人
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("bdkrq", "detail_1"),function(id,rowIndex,value){
WfForm.getFieldValue(WfForm.convertFieldNameToId("bdkr", "detail_1")+"_"+rowIndex)
//alert(WfForm.getFieldValue(WfForm.convertFieldNameToId("bdkr", "detail_1")+"_"+rowIndex));
});
});
//添加行记录后 对部分栏位进行二次调整
WfForm.registerAction(WfForm.ACTION_ADDROW+"1", function(index){
//取主表的流程提交人为补打卡人
var bdkr= mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("bdkry")).specialobj);
var bdklx;//补打卡类型
var bdkrq;//补打卡日期
if (WfForm.getDetailRowCount("detail_1") > 1){
//明细超过一行,添加第二行时,取第一行对应的补打卡人
bdkr = mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("bdkr","detail_1")+"_"+(index-1)).specialobj);
//取上一行的补打卡日期
bdkrq = wfform.getFieldValue(WfForm.convertFieldNameToId("bdkrq","detail_1")+"_"+(index-1));
//新行默认上一行补打卡日期
WfForm.changeSingleField(WfForm.convertFieldNameToId("bdkrq","detail_1")+"_"+index, {value: bdkrq});
//取第一行对应的补打卡类型
bdklx = mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("bdklx","detail_1")+"_"+(index-1)).specialobj);
if (bdklx !== null){
//新行默认上一行的补打卡类型
WfForm.changeSingleField(WfForm.convertFieldNameToId("bdklx","detail_1")+"_"+index, {value:bdklx[0].id,specialobj:[{id:bdklx[0].id,name:bdklx[0].mc}]});
}
}
WfForm.changeSingleField(WfForm.convertFieldNameToId("bdkr","detail_1")+"_"+index, {value:bdkr[0].id,specialobj:[{id:bdkr[0].id,name:bdkr[0].name}]});
});
</script>

@ -0,0 +1,451 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
/**
*
* @param pleavetype 出差方式0全天出差1按时间区间出差2半天3按时间长度出差
*/
function resetAttr(pleavetype) {
switch (pleavetype){
case '1'://按时间区间出差
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '1' });//出差时长单位为小时
//出差开始时间可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 3);
//出差结束时间可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 3);
//出差时间长度不可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc"), 1);
break;
case '3'://按时间区间出差
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '1' });//出差时长单位为小时
//隐藏出差开始时间所在行(结束时间在同一行,不需要额外设置)
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
//出差时间长度可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc"), 3);
//每天出差时长默认为1小时
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"),{ value: '1' });
break;
default:
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '0' });//出差时长单位为小时
//隐藏出差开始时间所在行(结束时间在同一行,不需要额外设置)
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
//出差时间长度不可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc"), 1);
break;
}
}
jQuery().ready(function(){
WfForm.registerCheckEvent(WfForm.OPER_ADDROW+"1", function(callback){
callback(); //允许继续添加行调用callback不调用代表阻断添加
});
});
WfForm.registerAction(WfForm.ACTION_ADDROW+"1", function(index){
//adddetail()
});
/**
* 自动添加出差明细
*/
function adddetail() {
//首先进行必填校验,不通过直接退出
if(!WfForm.verifyFormRequired(false, true)){ return; }
//获取出差时段类型0全天1指定时间区间2半天3指定时长长度
let ccsd = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd"));
//每天同时段出差1:是0
let mttsdcc = WfForm.getFieldValue(WfForm.convertFieldNameToId("mttsdcc"));
//开始日期
var ksrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")));
//结束日期
var jsrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")));
//开始时间
var kssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj"));
//结束时间
let jssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj"));
//出差时长
var ccsc = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsc"));
//出差类型
var arr_cclx= mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("cclx")).specialobj);
var cclx = arr_cclx[0].id;
debugger
var ccr = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccr"));
debugger;
let param = {
itemId:cclx,
userId:ccr.split(',')[0],
startDate:ksrq,
endDate:jsrq
}
let dateList=undefined;
$.ajax({
url:"/api/attendance/askforleave/getRestDayInterval",
type:"GET",
data:param,
dataType:"json",
async:false,
success:function(res){
console.log(res)
if (res.api_status){
dateList = res.data.data;
}
}
})
//清空第一明细所有记录
WfForm.delDetailRow("detail_1", "all");
//判断出差是否跨天
let v_overzero = jssj < kssj ? true : false;
//出差人ID数组
var arr_ids = (WfForm.getFieldValue(WfForm.convertFieldNameToId("ccr"))).split(',');
//出差人名字数组
var arr_names = (WfForm.getBrowserShowName(WfForm.convertFieldNameToId("ccr"))).split(',');
for (let index = 0; index < arr_ids.length; index++) {
//预置明细记录开始日期
var v_tmpbdate = new Date(ksrq);
//预置明细记录结束日期
var v_tmpedate = new Date(v_tmpbdate);
if (mttsdcc == '1') {
//首次循环时,明细开始与结束日期均等于主表开始日期,而主表结束日期一定大于等于开始日期,所以至少添加一笔明细
//当出差为跨天差时,每笔明细的结束日期会加一天
while(v_tmpedate <= jsrq && v_tmpedate <= jsrq){
let beginDate = v_tmpbdate.toString();
let rqlx = "";
if (dateList != undefined){
dateList.filter(item => {
if (item.rq == beginDate){
rqlx = item.rqlx;
}
});
}
if (rqlx == "1" || rqlx=="2" || rqlx=="3"){
//明细开始日期加一天
v_tmpbdate = v_tmpbdate.setDate(v_tmpbdate.getDate() + 1);
v_tmpbdate = new Date(v_tmpbdate);
//明细结束日期加一天
v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
v_tmpedate = new Date(v_tmpedate);
continue;
}
//初始化明细记录
var addObj = {};
//添加出差人信息
addObj[WfForm.convertFieldNameToId("ccr", "detail_1")] = {value:arr_ids[index],specialobj:[{id:arr_ids[index],name:arr_names[index]}]};
//添加出差类型
addObj[WfForm.convertFieldNameToId("cclx", "detail_1")] = {value:arr_cclx[0].id,specialobj:[{id:arr_cclx[0].id,name:arr_cclx[0].mc}]};
//添加开始日期字段信息
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
if (ccsd === '1'){
//按时间区间出差逻辑
if (v_overzero){
//跨天时,明细记录的结束日期等于开始日期加一天
v_tmpedate = v_tmpedate.setDate(v_tmpbdate.getDate() + 1);
v_tmpedate = new Date(v_tmpedate);
}
//添加结束日期字段信息
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:v_tmpedate};
//添加开始时间字段信息
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
//添加结束时间字段信息
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:jssj};
//todo 调用接口计算开始结束时间区间内的工作时长;
//暂时先不调用接口,直接使用开始结束时间区间间隔小时数
var v_hours = (new Date(v_tmpedate+" "+jssj).getTime() - new Date(v_tmpbdate+" "+kssj).getTime())/(1000 * 60 * 60);
//超过8小时以8小时计
v_hours = Number(v_hours) > 8 ? 8 : Number(v_hours)
addObj[WfForm.convertFieldNameToId("ccsc", "detail_1")] = {value:v_hours};
}else{
//按时间长度出差或者全天、半天出差逻辑,
//此三种情况系统只需要知道员工当天班次上是希望出差的小数数或者是全天还是半天出差即可,与结束日期,开始及结束时间没有关系,所以相应的值均设置为空
//添加结束日期字段信息
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:''};
//添加开始时间字段信息
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:''};
//添加结束时间字段信息
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:''};
if (ccsd == '0'){
//全天出差时,全天的标记打开
addObj[WfForm.convertFieldNameToId("qtcc", "detail_1")] = {value:'1'};
}else if (ccsd == '2') {
//半天出差时,半天的标记打开
addObj[WfForm.convertFieldNameToId("btcc", "detail_1")] = {value:'1'};
}else if (ccsd == '3'){
//按小数数出差时,将主表上的总出差时长当成每天出差时长进行赋值
addObj[WfForm.convertFieldNameToId("ccsc", "detail_1")] = {value:ccsc};
}
}
//追加明细记录
WfForm.addDetailRow("detail_1", addObj);
//明细开始日期加一天
v_tmpbdate = v_tmpbdate.setDate(v_tmpbdate.getDate() + 1);
v_tmpbdate = new Date(v_tmpbdate);
//明细结束日期加一天
v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
v_tmpedate = new Date(v_tmpedate);
}
}else{
//非每天同时段出差方式出差
//设置第一笔明细结束日期为出差开始日期加一天
v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
v_tmpedate = new Date(v_tmpedate);
while (v_tmpedate <= jsrq) {
var addObj = {};
addObj[WfForm.convertFieldNameToId("ccr", "detail_1")] = {value:arr_ids[index],specialobj:[{id:arr_ids[index],name:arr_names[index]}]};
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
if (ccsd === '1'){
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:v_tmpedate};
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:"00:00"};
}else{
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:''};
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:''};
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:''};
if (ccsd == '0'){
addObj[WfForm.convertFieldNameToId("qtcc", "detail_1")] = {value:'1'};
addObj[WfForm.convertFieldNameToId("btcc", "detail_1")] = {value:'0'};
}else{
addObj[WfForm.convertFieldNameToId("qtcc", "detail_1")] = {value:'0'};
addObj[WfForm.convertFieldNameToId("btcc", "detail_1")] = {value:'1'};
}
}
//追加明细记录
WfForm.addDetailRow("detail_1", addObj);
v_tmpbdate = new Date(v_tmpedate);
kssj = '00:00';
//明细结束日期加一天
v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
v_tmpedate = new Date(v_tmpedate);
}
var addObj = {};
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
if (ccsd === '1'){
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:jsrq};
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:jssj};
}else{
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:''};
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:''};
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:''};
if (ccsd == '0')
addObj[WfForm.convertFieldNameToId("qtcc", "detail_1")] = {value:'1'};
else
addObj[WfForm.convertFieldNameToId("btcc", "detail_1")] = {value:'1'};
}
//追加明细记录
WfForm.addDetailRow("detail_1", addObj);
}
//});
};
//添加完明细后,更新主表的总出差时长栏位信息
var totalsc = getTotalsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc});
//控制明细显示属性
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
switch(ccsd){
case '1'://按时间区间出差
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc","detail_1")+"_"+rowIndex, 1);//出差时长栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qtcc","detail_1")+"_"+rowIndex, 1);//全天差栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("btcc","detail_1")+"_"+rowIndex, 1);//半天差栏位设置只读
break;
case '3'://按时间长度出差
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc","detail_1")+"_"+rowIndex, 3);//出差时长栏位设置必填
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qtcc","detail_1")+"_"+rowIndex, 1);//全天差栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("btcc","detail_1")+"_"+rowIndex, 1);//半天差栏位设置只读
break;
default://其他全天或者半天出差
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc","detail_1")+"_"+rowIndex, 1);//出差时长栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qtcc","detail_1")+"_"+rowIndex, 2);//全天差栏位设置可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("btcc","detail_1")+"_"+rowIndex, 2);//半天差栏位设置可编辑
break;
}
}
}
}
/**
* 计算明细总出差长度
*/
function getTotalsc(){
var ccsd = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd"));
var totalsc = 0;
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
if (ccsd == '3' || ccsd == '1')//累计小时时长
totalsc = Number(totalsc) + Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsc", "detail_1")+"_"+rowIndex));
else{
//累计天数时长
totalsc = Number(totalsc) +
Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("qtcc", "detail_1")+"_"+rowIndex)) +
Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("btcc", "detail_1")+"_"+rowIndex)) * 0.5;
}
}
}
return totalsc;
}
//依据当前出差方式,对页面上的控件显示属性进行调整
resetAttr(WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd")));
//是否自动产生明细记录标记
//考虑到影响明细记录的栏位如开始结束日期时间等发生变更时,需要重新生成明细,而出差方式变更时又需要对相应栏位的值做修改,所以添加这个开关,防止重复生成明细记录
var autodetail = true;
//差期类别值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("cclx"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//出差人员值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ccr"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//出差方式变更时,同样进行页面显示属性的调整
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ccsd"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//出差方式变更后,修改页面上的控件显示属性
resetAttr(value);
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//是否每日重复时间段值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("mttsdcc"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//开始日期变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ksrq"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//结束日期变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jsrq"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//开始时间变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("kssj"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//结束时间变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jssj"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//出差时长发生变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ccsc"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//绑定全天差栏位值变更事件
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qtcc", "detail_1"),function(id,rowIndex,value){
if (autodetail){
autodetail = false;
if (value === '0')
WfForm.changeFieldValue(WfForm.convertFieldNameToId("btcc", "detail_1")+"_"+rowIndex, {value:"1"});
else
WfForm.changeFieldValue(WfForm.convertFieldNameToId("btcc", "detail_1")+"_"+rowIndex, {value:"0"});
var totalsc = getTotalsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc});
autodetail = true;
}
});
});
//绑定半天差值变更事件
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("btcc", "detail_1"),function(id,rowIndex,value){
if (autodetail){
autodetail = false;
if (value === '0')
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qtcc", "detail_1")+"_"+rowIndex, {value:"1"});
else
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qtcc", "detail_1")+"_"+rowIndex, {value:"0"});
var totalsc = getTotalsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc});
autodetail = true;
}
});
});
//绑定出差时长栏位值变更事件
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qjsc", "detail_1"),function(id,rowIndex,value){
if (autodetail){
autodetail = false;
var totalsc = getTotalsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qjsc"), {value:totalsc});
autodetail = true;
}
});
});
WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){
var d_count = WfForm.getDetailRowCount("detail_1");
if (Number(d_count) === 0){
alert("没有出差明细,不能继续!")
}else{
callback();
}
});
</script>

@ -0,0 +1,220 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
/**
* 自动添加出差明细
*/
function adddetail() {
//首先进行必填校验,不通过直接退出
//if(!WfForm.verifyFormRequired(false, true)){ return; }
let mainTableData = {
szjg: WfForm.getFieldValue(WfForm.convertFieldNameToId("szjg")),
jbry: WfForm.getFieldValue(WfForm.convertFieldNameToId("jbry")),
jblx: WfForm.getFieldValue(WfForm.convertFieldNameToId("jblx")),
mttsdjb: WfForm.getFieldValue(WfForm.convertFieldNameToId("mttsdjb")),
ksrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")),
jsrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")),
kssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj")),
jssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj"))
}
let param = {
mainTableData:JSON.stringify(mainTableData),
}
console.log(param);
$.ajax({
url:'/api/attendance/overtimeplan/generateOvertimePlanDetails',
data:param,
type:'GET',
dataType:'json',
async:false,
success:function(res){
if(res.api_status){
if(res.data.status){
WfForm.delDetailRow("detail_1", "all");
let resultData = res.data.data;
resultData.filter(item => {
let addObj = {};
addObj[WfForm.convertFieldNameToId("jbry", "detail_1")] = {value:item.jbry,specialobj:[{id:item.jbry,name:item.jbryName}]};
addObj[WfForm.convertFieldNameToId("jblx", "detail_1")] = {value:item.jblx,specialobj:[{id:item.jblx,name:item.jblxName}]};
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")]={value:item.ksrq};
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")]={value:item.kssj};
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")]={value:item.jsrq};
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")]={value:item.jssj};
addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")]={value:item.gsrq};
addObj[WfForm.convertFieldNameToId("jbsc", "detail_1")]={value:Number(item.jbsc)};
WfForm.addDetailRow("detail_1", addObj);
})
}else{
WfForm.showMessage(res.data.errorInfo, 2, 5);
}
}
}
})
//添加完明细后,更新主表的总请假时长栏位信息
var totalsc = getTotalsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("jbsc"), {value:totalsc});
}
// function adddetail() {
// //首先进行必填校验,不通过直接退出
// //if(!WfForm.verifyFormRequired(false, true)){ return; }
// //每天同时段出差1:是0
// let mttsdcc = WfForm.getFieldValue(WfForm.convertFieldNameToId("mttsdjb"));
// //开始日期
// var ksrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")));
// //结束日期
// var jsrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")));
// //开始时间
// var kssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj"));
// //结束时间
// let jssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj"));
// //加班时长
// var ccsc = WfForm.getFieldValue(WfForm.convertFieldNameToId("jbsc"));
// //加班类型
// var arr_jblx = mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("jblx")).specialobj);
// //清空第一明细所有记录
// WfForm.delDetailRow("detail_1", "all");
// //判断出差是否跨天
// let v_overzero = jssj < kssj ? true : false;
// //出差人ID数组
// var arr_ids = (WfForm.getFieldValue(WfForm.convertFieldNameToId("jbry"))).split(',');
// //出差人名字数组
// var arr_names = (WfForm.getBrowserShowName(WfForm.convertFieldNameToId("jbry"))).split(',');
// for (let index = 0; index < arr_ids.length; index++) {
// //预置明细记录开始日期
// var v_tmpbdate = new Date(ksrq);
// //预置明细记录结束日期
// var v_tmpedate = new Date(v_tmpbdate);
// if (mttsdcc == '1') {
// //首次循环时,明细开始与结束日期均等于主表开始日期,而主表结束日期一定大于等于开始日期,所以至少添加一笔明细
// //当出差为跨天差时,每笔明细的结束日期会加一天
// while(v_tmpedate <= jsrq && v_tmpedate <= jsrq){
// //初始化明细记录
// var addObj = {};
// //添加出差人信息
// addObj[WfForm.convertFieldNameToId("jbry", "detail_1")] = {value:arr_ids[index],specialobj:[{id:arr_ids[index],name:arr_names[index]}]};
// //添加加班类型信息
// addObj[WfForm.convertFieldNameToId("jblx", "detail_1")] = {value:arr_jblx[0].id,specialobj:[{id:arr_jblx[0].id,name:arr_jblx[0].mc}]};
// //添加开始日期字段信息
// addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")] = {value:v_tmpbdate};
// //按时间区间出差逻辑
// if (v_overzero){
// //跨天时,明细记录的结束日期等于开始日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpbdate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// }
// //添加结束日期字段信息
// addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:v_tmpedate};
// //添加开始时间字段信息
// addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
// //添加结束时间字段信息
// addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:jssj};
// //todo 调用接口计算开始结束时间区间内的工作时长;
// //暂时先不调用接口,直接使用开始结束时间区间间隔小时数
// var v_hours = (new Date(v_tmpedate+" "+jssj).getTime() - new Date(v_tmpbdate+" "+kssj).getTime())/(1000 * 60 * 60);
// //超过8小时以8小时计
// v_hours = Number(v_hours) > 8 ? 8 : Number(v_hours)
// addObj[WfForm.convertFieldNameToId("jbsc", "detail_1")] = {value:v_hours};
// //追加明细记录
// WfForm.addDetailRow("detail_1", addObj);
// //明细开始日期加一天
// v_tmpbdate = v_tmpbdate.setDate(v_tmpbdate.getDate() + 1);
// v_tmpbdate = new Date(v_tmpbdate);
// //明细结束日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// }
// }else{
// //非每天同时段出差方式出差
// //设置第一笔明细结束日期为出差开始日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// while (v_tmpedate <= jsrq) {
// var addObj = {};
// addObj[WfForm.convertFieldNameToId("jbry", "detail_1")] = {value:arr_ids[index],specialobj:[{id:arr_ids[index],name:arr_names[index]}]};
// addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:v_tmpedate};
// addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
// addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:"00:00"};
// WfForm.addDetailRow("detail_1", addObj);
// v_tmpbdate = new Date(v_tmpedate);
// kssj = '00:00';
// //明细结束日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// }
// var addObj = {};
// addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:jsrq};
// addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
// addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:jssj};
// //追加明细记录
// WfForm.addDetailRow("detail_1", addObj);
// }
// };
// //添加完明细后,更新主表的总请假时长栏位信息
// var totalsc = getTotalsc();
// WfForm.changeFieldValue(WfForm.convertFieldNameToId("jbsc"), {value:totalsc});
// }
/**
* 计算明细总请假长度
*/
function getTotalsc(){
var totalsc = 0;
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
totalsc = Number(totalsc) + Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("jbsc", "detail_1")+"_"+rowIndex));
}
}
return totalsc;
}
//加班类型值变更时自动生成明细jblx
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jblx"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班人员值变更时自动生成明细jblx
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jbry"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班开始日期值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ksrq"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班结束日期值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jsrq"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班开始时间值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("kssj"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班结束时间值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jssj"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
</script>

@ -0,0 +1,96 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
//自动更新加班时长
var autodetail = true;
/**
* 计算加班时长
*/
function calculate() {
//开始时间
var kssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj"));
//结束时间
var jssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj"));
var v_hours = (new Date("2000-01-01 "+jssj).getTime() - new Date("2000-01-01 "+kssj).getTime())/(1000 * 60 * 60);
WfForm.changeFieldValue(WfForm.convertFieldNameToId("jbsc"), {value:v_hours});
}
//开始日期发生变更后,自动重新计算加班时长
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ksrq"),function(obj,id,value){
if (autodetail){
autodetail = false;
//开始日期
var ksrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")));
//结束日期
var jsrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")));
if (ksrq > jsrq) {
WfForm.changeFieldValue(WfForm.convertFieldNameToId("jsrq"), {value:ksrq});
}
//计算加班时长
calculate();
autodetail = true;
}
});
//开始时间发生变更后,自动重新计算加班时长
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("kssj"),function(obj,id,value){
if (autodetail){
autodetail = false;
//计算加班时长
calculate();
autodetail = true;
}
});
//结束日期发生变更后,自动重新计算加班时长
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jsrq"),function(obj,id,value){
if (autodetail){
autodetail = false;
//开始日期
var ksrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")));
//结束日期
var jsrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")));
if (ksrq > jsrq) {
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ksrq"), {value:jsrq});
}
//计算加班时长
calculate();
autodetail = true;
}
});
//结束时间发生变更后,自动重新计算加班时长
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jssj"),function(obj,id,value){
if (autodetail){
autodetail = false;
//计算加班时长
calculate();
autodetail = true;
}
});
//结束时间发生变更后,自动重新计算加班时长
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("dxsc"),function(obj,id,value){
var jbsc = WfForm.getFieldValue(WfForm.convertFieldNameToId("jbsc"));
if (Number(jbsc) < Number(value)){
alert("调休时长不得大于加班时长");
return;
}
WfForm.changeFieldValue(WfForm.convertFieldNameToId("jxsc"), {value:Number(jbsc)-Number(value)});
});
//结束时间发生变更后,自动重新计算加班时长
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("dxsc"),function(obj,id,value){
var jbsc = WfForm.getFieldValue(WfForm.convertFieldNameToId("jbsc"));
if (Number(jbsc) < Number(value)){
alert("调休时长不得大于加班时长");
return;
}
WfForm.changeFieldValue(WfForm.convertFieldNameToId("jxsc"), {value:Number(jbsc)-Number(value)});
});
</script>
Loading…
Cancel
Save