Commit 17323f34 authored by chenzhao's avatar chenzhao

值班排班问题修复

parent 284cf40f
...@@ -140,7 +140,7 @@ public interface IDutyCommonService { ...@@ -140,7 +140,7 @@ public interface IDutyCommonService {
* @param instanceId * @param instanceId
* @param dutyShiftList * @param dutyShiftList
*/ */
public void insertPersonShift(Long instanceId, List<DutyPersonShiftDto> dutyShiftList); public void insertPersonShift(Long instanceId, List<DutyPersonShiftDto> dutyShiftList,String type);
public Object getSchedulingDutyForSpecifyDate(String dutyDay, Long shiftId, String postType, String fieldCode); public Object getSchedulingDutyForSpecifyDate(String dutyDay, Long shiftId, String postType, String fieldCode);
} }
package com.yeejoin.amos.boot.module.common.biz.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ActionStatus {
METHOD_UPDATE("更新","update"),
METHOD_ADD("新增","add");
private String name;
private String code;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
...@@ -58,6 +58,8 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -58,6 +58,8 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
@Autowired @Autowired
DutyPersonShiftServiceImpl dutyPersonShiftService; DutyPersonShiftServiceImpl dutyPersonShiftService;
@Autowired
DutyPersonServiceImpl dutyPersonService;
@Autowired @Autowired
Sequence sequence; Sequence sequence;
...@@ -334,7 +336,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -334,7 +336,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
* 岗位: 岗位人员数量 * 岗位: 岗位人员数量
* *
* @param dutyDate * @param dutyDate
* @param dutyType *
* @return * @return
*/ */
public Object getPersonPostTypeNameAndCount(String dutyDate, String fieldCode) { public Object getPersonPostTypeNameAndCount(String dutyDate, String fieldCode) {
...@@ -800,7 +802,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -800,7 +802,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
dutyPersonShiftService.saveOrUpdateBatch(dutyShiftList); dutyPersonShiftService.saveOrUpdateBatch(dutyShiftList);
} }
} }
public void insertPersonShift(Long instanceId, List<DutyPersonShiftDto> dutyShiftList) { public void insertPersonShift(Long instanceId, List<DutyPersonShiftDto> dutyShiftList,String type) {
dutyPersonService.dataCheck(dutyShiftList,instanceId,type);
Set<DutyPersonShift> personShiftList = dutyShiftList.stream().map(dto -> { Set<DutyPersonShift> personShiftList = dutyShiftList.stream().map(dto -> {
// BUG 2807 修改时发现BUG 车辆保存有问题 by kongfm 2021-09-14 // BUG 2807 修改时发现BUG 车辆保存有问题 by kongfm 2021-09-14
// 根据instanceId 和 日期查找 如果有则更新 // 根据instanceId 和 日期查找 如果有则更新
......
...@@ -6,6 +6,7 @@ import java.util.LinkedHashMap; ...@@ -6,6 +6,7 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.yeejoin.amos.boot.module.common.biz.enums.ActionStatus;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -49,14 +50,14 @@ public class DutyFirstAidServiceImpl extends DutyCommonServiceImpl implements ID ...@@ -49,14 +50,14 @@ public class DutyFirstAidServiceImpl extends DutyCommonServiceImpl implements ID
Map<String, Object> map = Bean.BeantoMap(dto); Map<String, Object> map = Bean.BeantoMap(dto);
Long instanceId = excuteDynamicFormInstance(dto.getUserId(), map, this.getGroupCode()); Long instanceId = excuteDynamicFormInstance(dto.getUserId(), map, this.getGroupCode());
saveDutyPersonShiftDetail(instanceId, dto.getDutyShift(), dto.getStartTime()); saveDutyPersonShiftDetail(instanceId, dto.getDutyShift(), dto.getStartTime());
insertPersonShift(instanceId, dto.getDutyShift()); insertPersonShift(instanceId, dto.getDutyShift(),ActionStatus.METHOD_ADD.getCode());
return dto; return dto;
} }
@Override @Override
public DutyFirstAidDto update(Long instanceId, DutyFirstAidDto dto) { public DutyFirstAidDto update(Long instanceId, DutyFirstAidDto dto) {
updateDynamicFormInstance(this.getGroupCode(), instanceId, Bean.BeantoMap(dto)); updateDynamicFormInstance(this.getGroupCode(), instanceId, Bean.BeantoMap(dto));
insertPersonShift(instanceId, dto.getDutyShift()); insertPersonShift(instanceId, dto.getDutyShift(), ActionStatus.METHOD_UPDATE.getCode());
return dto; return dto;
} }
......
package com.yeejoin.amos.boot.module.common.biz.service.impl; package com.yeejoin.amos.boot.module.common.biz.service.impl;
import java.util.ArrayList; import java.util.*;
import java.util.Calendar; import java.util.concurrent.atomic.AtomicReference;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.module.common.api.dto.DutyPersonShiftDto; import com.yeejoin.amos.boot.module.common.api.dto.DutyPersonShiftDto;
import com.yeejoin.amos.boot.module.common.api.mapper.DutyPersonShiftMapper; import com.yeejoin.amos.boot.module.common.api.mapper.DutyPersonShiftMapper;
import com.yeejoin.amos.boot.module.common.biz.enums.ActionStatus;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -127,7 +120,7 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut ...@@ -127,7 +120,7 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut
dutyPersonShiftService.saveOrUpdateBatch(dutyShift); dutyPersonShiftService.saveOrUpdateBatch(dutyShift);
} }
//2.保存值班信息 //2.保存值班信息
insertPersonShift(instanceId, dutyPersonDto); insertPersonShift(instanceId, dutyPersonDto,ActionStatus.METHOD_ADD.getCode());
//3.返回保存后的数据 //3.返回保存后的数据
return dutyPersonDto; return dutyPersonDto;
...@@ -164,17 +157,31 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut ...@@ -164,17 +157,31 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut
dynamicFormInstanceService.saveOrUpdateBatch(entrys); dynamicFormInstanceService.saveOrUpdateBatch(entrys);
} }
//5.更新值班信息人日期数据 //5.更新值班信息人日期数据
insertPersonShift(instanceId, dutyPersonDto); insertPersonShift(instanceId, dutyPersonDto, ActionStatus.METHOD_UPDATE.getCode());
return dutyPersonDto; return dutyPersonDto;
} }
private void insertPersonShift(Long instanceId, DutyPersonDto dutyPersonDto) { private void insertPersonShift(Long instanceId, DutyPersonDto dutyPersonDto,String type) {
//此处代码针对页面操作 已有排班人员排班日期情况下 仍继续执行新增操作所造成的索引报错 //此处代码针对页面操作 已有排班人员排班日期情况下 仍继续执行新增操作所造成的索引报错
//拿到排班月份 //拿到排班月份
if (!ValidationUtil.isEmpty(dutyPersonDto.getDutyShift().get(0)) && ValidationUtil.isEmpty(dutyPersonDto.getDutyShift().get(0).getSequenceNbr()) ){
try {
//获取本次排班数据 //获取本次排班数据
List<DutyPersonShiftDto> dutyShiftList = dutyPersonDto.getDutyShift(); List<DutyPersonShiftDto> dutyShiftList = dutyPersonDto.getDutyShift();
this.dataCheck(dutyShiftList,instanceId,type);
Set<DutyPersonShift> personShiftList = dutyShiftList.stream().map(dto -> {
DutyPersonShift dutyPersonShift = new DutyPersonShift();
dto.setInstanceId(instanceId);
Bean.copyExistPropertis(dto, dutyPersonShift);
dutyPersonShift.setAppKey(RequestContext.getAppKey());
return dutyPersonShift;
}).collect(Collectors.toSet());
if (!personShiftList.isEmpty()) {
dutyPersonShiftService.saveOrUpdateBatch(personShiftList);
}
}
public void dataCheck(List<DutyPersonShiftDto> dutyShiftList,Long instanceId ,String type){
try {
//获取排班月份的最大及最小日期 //获取排班月份的最大及最小日期
Date maxDate = DateUtils.maxDateOfMonth(dutyShiftList.get(0).getDutyDate()); Date maxDate = DateUtils.maxDateOfMonth(dutyShiftList.get(0).getDutyDate());
Date minDate = DateUtils.minDateOfMonth(dutyShiftList.get(0).getDutyDate()); Date minDate = DateUtils.minDateOfMonth(dutyShiftList.get(0).getDutyDate());
...@@ -182,31 +189,24 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut ...@@ -182,31 +189,24 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut
List<DutyPersonShiftDto> currentData = dutyPersonShiftMapper.queryDutyByPersonAndData(instanceId, minDate, maxDate); List<DutyPersonShiftDto> currentData = dutyPersonShiftMapper.queryDutyByPersonAndData(instanceId, minDate, maxDate);
//对本次排班数据和历史排班数据的交集做主键赋值 执行更新 避免索引冲突 //对本次排班数据和历史排班数据的交集做主键赋值 执行更新 避免索引冲突
dutyShiftList.forEach(e->{ dutyShiftList.forEach(e->{
currentData.stream().forEach(data->{ for (Iterator<DutyPersonShiftDto> iterator = currentData.listIterator();iterator.hasNext();){
if ( DateUtils.dateCompare(e.getDutyDate(),data.getDutyDate()) == 0){ DutyPersonShiftDto next = iterator.next();
e.setSequenceNbr(data.getSequenceNbr()); if ( DateUtils.dateCompare(e.getDutyDate(),next.getDutyDate()) == 0){
e.setSequenceNbr(next.getSequenceNbr());
iterator.remove();
}; };
}
}); });
}); if (currentData.size()>0 && ActionStatus.METHOD_UPDATE.getCode().equals(type) ){
ArrayList<Long> ids = new ArrayList<>();
currentData.stream().forEach(e->ids.add(e.getSequenceNbr()));
dutyPersonShiftService.deleteBatchSeq(ids);
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
Set<DutyPersonShift> personShiftList = dutyPersonDto.getDutyShift().stream().map(dto -> {
DutyPersonShift dutyPersonShift = new DutyPersonShift();
dto.setInstanceId(instanceId);
Bean.copyExistPropertis(dto, dutyPersonShift);
dutyPersonShift.setAppKey(RequestContext.getAppKey());
return dutyPersonShift;
}).collect(Collectors.toSet());
if (!personShiftList.isEmpty()) {
dutyPersonShiftService.saveOrUpdateBatch(personShiftList);
}
}
private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance) { private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance) {
fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId()); fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId());
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment