Commit 5dde42fe authored by suhuiguang's avatar suhuiguang

1.新增导入

parent 429ce8c3
...@@ -12,11 +12,12 @@ import java.util.Map; ...@@ -12,11 +12,12 @@ import java.util.Map;
public interface IDutyCommonService { public interface IDutyCommonService {
/** /**
* 分页查询 * 分页查询
* @param current 当前页 *
* @param size 页大小 * @param current 当前页
* @param size 页大小
* @param beginDate 开始日期 * @param beginDate 开始日期
* @param endDate 结束日期 * @param endDate 结束日期
* @return IPage<Map<String, Object>> * @return IPage<Map < String, Object>>
*/ */
IPage<Map<String, Object>> pageList(int current, int size, String beginDate, String endDate) throws ParseException; IPage<Map<String, Object>> pageList(int current, int size, String beginDate, String endDate) throws ParseException;
...@@ -40,6 +41,7 @@ public interface IDutyCommonService { ...@@ -40,6 +41,7 @@ public interface IDutyCommonService {
/** /**
* 获取表单参数 * 获取表单参数
*
* @return String * @return String
*/ */
String getGroupCode(); String getGroupCode();
......
...@@ -7,8 +7,6 @@ import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn; ...@@ -7,8 +7,6 @@ import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance; import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance;
import com.yeejoin.amos.boot.module.common.biz.service.IDutyCarService; import com.yeejoin.amos.boot.module.common.biz.service.IDutyCarService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -62,19 +60,8 @@ public class DutyCarServiceImpl extends DutyCommonServiceImpl implements IDutyCa ...@@ -62,19 +60,8 @@ public class DutyCarServiceImpl extends DutyCommonServiceImpl implements IDutyCa
Map<String, Object> map = Bean.BeantoMap(dutyCarDto); Map<String, Object> map = Bean.BeantoMap(dutyCarDto);
//4.已列为主 填充动态表单数据 //4.已列为主 填充动态表单数据
List<DynamicFormInstance> entrys = new ArrayList<>(); List<DynamicFormInstance> entrys = new ArrayList<>();
for (DynamicFormColumn column : columns) { updateFormValue(entrys, map, instanceId, columns, instanceMap);
DynamicFormInstance formInstance = instanceMap.get(column.getFieldCode()); if (!entrys.isEmpty()) {
if (!ObjectUtils.isEmpty(formInstance)) {
//有的更新
formInstance.setFieldValue(map.get(column.getFieldCode()) != null ? map.get(column.getFieldCode()).toString() : "");
} else {
//没有的新增
formInstance = new DynamicFormInstance();
buildFormInstanceData(instanceId, map, column, formInstance);
}
entrys.add(formInstance);
}
if(!entrys.isEmpty()){
dynamicFormInstanceService.saveOrUpdateBatch(entrys); dynamicFormInstanceService.saveOrUpdateBatch(entrys);
} }
//5.更新值班信息人日期数据 //5.更新值班信息人日期数据
...@@ -95,11 +82,6 @@ public class DutyCarServiceImpl extends DutyCommonServiceImpl implements IDutyCa ...@@ -95,11 +82,6 @@ public class DutyCarServiceImpl extends DutyCommonServiceImpl implements IDutyCa
} }
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) {
Bean.copyExistPropertis(column, formInstance); fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId());
formInstance.setAppKey(RequestContext.getAppKey());
formInstance.setInstanceId(instanceId);
formInstance.setSequenceNbr(sequence.nextId());
formInstance.setFormColumnId(column.getSequenceNbr());
formInstance.setFieldValue(map.get(column.getFieldCode()) != null ? map.get(column.getFieldCode()).toString() : "");
} }
} }
...@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Sequence; import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.common.api.dto.DutyPersonShiftDto;
import com.yeejoin.amos.boot.module.common.api.entity.DutyPersonShift; import com.yeejoin.amos.boot.module.common.api.entity.DutyPersonShift;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn; import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance;
import com.yeejoin.amos.boot.module.common.api.enums.DutyViewTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.DutyViewTypeEnum;
import com.yeejoin.amos.boot.module.common.biz.service.IDutyCommonService; import com.yeejoin.amos.boot.module.common.biz.service.IDutyCommonService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
...@@ -122,7 +126,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -122,7 +126,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
Map<String, String> params = this.getRequestParamMap(); Map<String, String> params = this.getRequestParamMap();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode)); List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class); Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class);
List<Map<String, Object>> list = dynamicFormInstanceService.getBaseMapper().listAll(RequestContext.getAppKey(), fieldCodes, groupCode,params); List<Map<String, Object>> list = dynamicFormInstanceService.getBaseMapper().listAll(RequestContext.getAppKey(), fieldCodes, groupCode, params);
//2.组织值班数据 //2.组织值班数据
for (Map<String, Object> map : list) { for (Map<String, Object> map : list) {
this.fillDutyShiftData(beginDate, endDate, map); this.fillDutyShiftData(beginDate, endDate, map);
...@@ -153,4 +157,88 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -153,4 +157,88 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
public String getGroupCode() { public String getGroupCode() {
return null; return null;
} }
public void saveImportData(List<Map<String, Object>> dataList) {
List<DynamicFormInstance> formInstanceList = new ArrayList<>();
List<DutyPersonShift> dutyPersonShifts = new ArrayList<>();
dataList.forEach(d -> {
//TODO: 业务唯一索引,用户id
String userId = d.get("userId").toString();
List<DynamicFormInstance> instances = dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>()
.eq(DynamicFormInstance::getFieldCode, userId)
.eq(DynamicFormInstance::getGroupCode, this.getGroupCode()));
Long instanceId = null;
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, this.getGroupCode()));
//1.组装动态表单数据
if (!instances.isEmpty()) {
//0.定位instanceId,准备进行更新操作
instanceId = instances.get(0).getInstanceId();
//1.查询已有数据
List<DynamicFormInstance> instancesInDb = dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>().eq(DynamicFormInstance::getInstanceId, instanceId));
//2.list 转 map
Map<Object, DynamicFormInstance> instanceMap = Bean.listToMap(instancesInDb, "fieldCode", DynamicFormInstance.class);
//3.待更新数据组装,待批量入库
this.updateFormValue(formInstanceList, d, instanceId, columns, instanceMap);
} else {
//0.新数据,生成id
instanceId = sequence.nextId();
Long finalInstanceId1 = instanceId;
//1.组装数据
List<DynamicFormInstance> newInstances = columns.stream().map(column -> {
DynamicFormInstance instance = new DynamicFormInstance();
buildFormInstanceData(finalInstanceId1, d, column, instance);
return instance;
}).collect(Collectors.toList());
//2.待更新数据组装,待批量入库
formInstanceList.addAll(newInstances);
}
//2.组装值班数据
List<DutyPersonShiftDto> shiftDtos = (List<DutyPersonShiftDto>) d.get("dutyShift");
Long finalInstanceId = instanceId;
//todo: 只更新当天及值班之后数据
Set<DutyPersonShift> needToDb = shiftDtos.stream().filter(s -> DateUtils.dateCompare(s.getDutyDate(), new Date()) >= 0).map(shiftDto -> {
DutyPersonShift dutyPersonShift = new DutyPersonShift();
Bean.copyExistPropertis(shiftDto, dutyPersonShift);
dutyPersonShift.setInstanceId(finalInstanceId);
dutyPersonShift.setAppKey(RequestContext.getAppKey());
return dutyPersonShift;
}).collect(Collectors.toSet());
dutyPersonShifts.addAll(needToDb);
});
if (!formInstanceList.isEmpty()) {
dynamicFormInstanceService.saveOrUpdateBatch(formInstanceList);
}
if (!dutyPersonShifts.isEmpty()) {
dutyPersonShiftService.saveOrUpdateBatch(dutyPersonShifts);
}
}
public void updateFormValue(List<DynamicFormInstance> formInstanceList, Map<String, Object> d, Long instanceId, List<DynamicFormColumn> columns, Map<Object, DynamicFormInstance> instanceMap) {
for (DynamicFormColumn column : columns) {
DynamicFormInstance formInstance = instanceMap.get(column.getFieldCode());
if (!ObjectUtils.isEmpty(formInstance)) {
//有的更新
formInstance.setFieldValue(d.get(column.getFieldCode()) != null ? d.get(column.getFieldCode()).toString() : "");
} else {
//没有的新增
formInstance = new DynamicFormInstance();
buildFormInstanceData(instanceId, d, column, formInstance);
}
formInstanceList.add(formInstance);
}
}
private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance) {
DutyCarServiceImpl.fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId());
}
static void fillFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance, long l) {
Bean.copyExistPropertis(column, formInstance);
formInstance.setAppKey(RequestContext.getAppKey());
formInstance.setInstanceId(instanceId);
formInstance.setSequenceNbr(l);
formInstance.setFormColumnId(column.getSequenceNbr());
formInstance.setFieldValue(map.get(column.getFieldCode()) != null ? map.get(column.getFieldCode()).toString() : "");
}
} }
...@@ -95,11 +95,6 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut ...@@ -95,11 +95,6 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut
} }
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) {
Bean.copyExistPropertis(column, formInstance); fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId());
formInstance.setAppKey(RequestContext.getAppKey());
formInstance.setInstanceId(instanceId);
formInstance.setSequenceNbr(sequence.nextId());
formInstance.setFormColumnId(column.getSequenceNbr());
formInstance.setFieldValue(map.get(column.getFieldCode()) != null ? map.get(column.getFieldCode()).toString() : "");
} }
} }
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