Browse Source

Merge remote-tracking branch 'origin/dev_tripreport1109'

master
yinzuomei 3 years ago
parent
commit
2f0385d9e6
  1. 10
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcTripReportRecordDTO.java
  2. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcTripReportFormDTO.java
  3. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java
  4. 21
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/EmphasisTripListResultDTO.java
  5. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java
  6. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcTripReportRecordEntity.java
  7. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcPsTripReportRecordExcel.java
  8. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcPsTripReportRecordExportExcel.java
  9. 81
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcPsTripReportExcelImportListener.java
  10. 38
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcTripReportExcelImportListener.java
  11. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcTripReportRecordServiceImpl.java
  12. 3
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.86__alter_ic_trip_report.sql
  13. BIN
      epmet-user/epmet-user-server/src/main/resources/excel/ps_trip_report_import_template.xlsx
  14. 27
      epmet-user/epmet-user-server/src/main/resources/mapper/IcTripReportRecordDao.xml

10
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcTripReportRecordDTO.java

@ -289,6 +289,11 @@ public class IcTripReportRecordDTO implements Serializable {
*/
@ExcelIgnore
private String registeredResidence;
/**
* 7天内到达或途径磐石
*/
@ExcelIgnore
private String passBy;
/**
* 来曹事由磐石
*/
@ -365,4 +370,9 @@ public class IcTripReportRecordDTO implements Serializable {
*/
@ExcelIgnore
private String tripDataTypeName;
/**
* 上报人姓名(createdBy对应人名)
*/
@ExcelIgnore
private String createdByName;
}

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcTripReportFormDTO.java

@ -209,6 +209,10 @@ public class IcTripReportFormDTO implements Serializable {
*/
@NotBlank(message = "户籍地不能为空", groups = {PsAdd.class})
private String registeredResidence;
/**
* 7天内到达或途径磐石
*/
private String passBy;
/**
* 来曹事由磐石
*/

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java

@ -60,4 +60,9 @@ public class PageTripReportFormDTO extends PageFormDTO implements Serializable {
*/
private String sojournHistory;
/**
* 隔离状态字典表(isolate_type)磐石
*/
private String isolateType;
}

21
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/EmphasisTripListResultDTO.java

@ -22,6 +22,7 @@ public class EmphasisTripListResultDTO implements Serializable {
* 来源地
*/
private String sourceAddress;
private String sourceDetailAddress;
/**
* 来曹事由
@ -68,4 +69,24 @@ public class EmphasisTripListResultDTO implements Serializable {
private String remark;
/**
* 返回方式
*/
private String trafficTypeName;
/**
* 疫苗接种针次
*/
private Integer vaccineNum;
/**
* 交通方式
*/
private String trafficType;
/**
* 其他返回方式交通方式为其他时此列需要有值
*/
private String trafficTypeExplain;
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java

@ -469,7 +469,7 @@ public class IcTripReportRecordController implements ResultDataResolver {
}
/**
* @Description 重点行程详情
* @Description 可视化重点行程名单统计-详情 已废弃不用这个接口了改用管理平台详情
* @param formDTO
* @Author zxc
* @Date 2022/11/1 16:05

4
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcTripReportRecordEntity.java

@ -139,6 +139,10 @@ public class IcTripReportRecordEntity extends BaseEpmetEntity {
* 户籍地 磐石
*/
private String registeredResidence;
/**
* 7天内到达或途径磐石
*/
private String passBy;
/**
* 来曹事由磐石
*/

7
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcPsTripReportRecordExcel.java

@ -39,6 +39,9 @@ public class IcPsTripReportRecordExcel {
@NotBlank(message = "来自地区详细地址不能为空")
private String sourceDetailAddress;
@ExcelProperty("7天内到达或途径")
private String passBy;
@ExcelProperty("来曹事由(100字以内)")
@NotBlank(message = "来曹事由不能为空")
@Length(max = 500,message = "来曹事由不能超过100字")
@ -84,10 +87,10 @@ public class IcPsTripReportRecordExcel {
@ExcelProperty("是否达到曹县")
private String isArrive;
@ExcelProperty("上报时间\n" +
/*@ExcelProperty("上报时间\n" +
"(2022-01-01)")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date reportingTime;
private Date reportingTime;*/
@ExcelProperty("管控措施\n" +
"(500字以内)")

8
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcPsTripReportRecordExportExcel.java

@ -55,11 +55,17 @@ public class IcPsTripReportRecordExportExcel implements Serializable {
@ColumnWidth(30)
@ExcelProperty(value = "来自地区详细地址",order = 6)
private String sourceDetailAddress;
/**
* 7天内到达或途径磐石
*/
@ColumnWidth(25)
@ExcelProperty(value = "7天内到达或途径")
private String passBy;
/**
* 来曹事由100字以内磐石
*/
@ColumnWidth(25)
@ExcelProperty(value = "来曹事由(100字以内)",order = 7)
@ExcelProperty(value = "来曹事由(100字以内)")
private String describeContent;
/**
* 48小时核酸检测 0:阴性 1:阳性 -中国字

81
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcPsTripReportExcelImportListener.java

@ -6,17 +6,18 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.entity.IcTripReportRecordEntity;
import com.epmet.excel.IcPsTripReportRecordExcel;
import com.epmet.excel.data.IcTripReportExcelData;
import com.epmet.excel.error.IcPsTripReportRecordErrorExcel;
import com.epmet.service.impl.IcTripReportRecordServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
@ -78,18 +79,45 @@ public class IcPsTripReportExcelImportListener implements ReadListener<IcPsTripR
AtomicBoolean bl = new AtomicBoolean(false);
StringBuffer errMsg = new StringBuffer("");
IcTripReportRecordEntity e = ConvertUtils.sourceToTarget(data, IcTripReportRecordEntity.class);
e.setCustomerId(customerId);
e.setAgencyId(staffInfo.getAgencyId());
e.setPids(staffInfo.getAgencyPIds());
e.setUserType(IcResiUserConstant.USER_TYPE_IMPORT);
e.setNatOutcome("阳性".equals(e.getNatOutcome()) ? "1" : "0");
if (trafficTypeMap.containsKey(data.getTrafficType())) {
e.setTrafficType(trafficTypeMap.get(data.getTrafficType()));
//先对一下字段值填写是否正确做判断
if (!"阳性".equals(e.getNatOutcome()) && !"阴性".equals(e.getNatOutcome())) {
errMsg.append("‘48小时核酸检测’值填写错误;");
bl.set(true);
}
if (!trafficTypeMap.containsKey(e.getTrafficType())) {
errMsg.append("‘返回方式’值填写错误;");
bl.set(true);
}
if ("其他".equals(e.getTrafficType()) && StringUtils.isBlank(e.getTrafficTypeExplain())) {
errMsg.append("返回方式为其他时,请补充‘其他返回方式’;");
bl.set(true);
}
if (StringUtils.isNotBlank(e.getSojournHistory()) && !sojournHistoryMap.containsKey(e.getSojournHistory())) {
errMsg.append("‘7天内旅居史情况’值填写错误;");
bl.set(true);
}
if ("其他".equals(data.getTrafficType()) && StringUtils.isBlank(data.getTrafficTypeExplain())) {
errMsg.append("返回方式为其他时,请补充“其他返回方式”;");
if (StringUtils.isNotBlank(e.getIsolateType()) && !isolateTypeMap.containsKey(e.getIsolateType())) {
errMsg.append("‘隔离状态’值填写错误;");
bl.set(true);
}
if (StringUtils.isNotBlank(e.getIsArriveCheck()) && !"是".equals(e.getIsArriveCheck()) && !"否".equals(e.getIsArriveCheck())) {
errMsg.append("‘是否落实“落地检”’值填写错误;");
bl.set(true);
}
if (StringUtils.isNotBlank(e.getIsArrive()) && !"是".equals(e.getIsArrive()) && !"否".equals(e.getIsArrive())) {
errMsg.append("‘是否达到曹县’值填写错误;");
bl.set(true);
}
if (StringUtils.isNotBlank(e.getTripDataType()) && !tripDataTypeMap.containsKey(e.getTripDataType())) {
errMsg.append("‘类型(省内、省外、市内、县内)’值填写错误;");
bl.set(true);
}
/*//必要字段没值的
if (StringUtils.isEmpty(e.getSourceAddress()) || StringUtils.isEmpty(e.getPresentAddress())
|| StringUtils.isEmpty(e.getTrafficType())) {
errMsg.append("数据不完整,请检查‘来源地’、‘在曹居住地点’、‘返回方式’信息是否填写完整;");
bl.set(true);
}*/
if (StringUtils.isNotBlank(data.getSojournHistory())) {
e.setSojournHistory(sojournHistoryMap.get(data.getSojournHistory()));
} else {
@ -103,20 +131,7 @@ public class IcPsTripReportExcelImportListener implements ReadListener<IcPsTripR
e.setSojournHistory(areaMap.get(str[2]));
}
}
if (StringUtils.isNotBlank(data.getIsolateType())) {
e.setIsolateType(isolateTypeMap.get(data.getIsolateType()));
}
if (StringUtils.isNotBlank(data.getTripDataType())) {
e.setTripDataType(tripDataTypeMap.get(data.getTripDataType()));
}
e.setIsArriveCheck("是".equals(data.getIsArriveCheck()) ? "1" : "0");
e.setIsArrive("是".equals(data.getIsArrive()) ? "1" : "0");
//必要字段没值的
if (StringUtils.isEmpty(e.getSourceAddress()) || StringUtils.isEmpty(e.getPresentAddress())
|| StringUtils.isEmpty(e.getTrafficType())) {
errMsg.append("数据不完整,请检查‘来源地’、‘在曹居住地点’、‘返回方式’信息是否填写完整;");
bl.set(true);
}
//错误数据记录到错误文件
if (bl.get()) {
IcPsTripReportRecordErrorExcel errorRow = new IcPsTripReportRecordErrorExcel();
errorRow.setName(data.getName());
@ -126,6 +141,24 @@ public class IcPsTripReportExcelImportListener implements ReadListener<IcPsTripR
errorRows.add(errorRow);
return;
}
e.setCustomerId(customerId);
e.setAgencyId(staffInfo.getAgencyId());
e.setPids(staffInfo.getAgencyPIds());
e.setUserType(IcResiUserConstant.USER_TYPE_IMPORT);
e.setNatOutcome("阳性".equals(e.getNatOutcome()) ? "1" : "0");
if (trafficTypeMap.containsKey(data.getTrafficType())) {
e.setTrafficType(trafficTypeMap.get(data.getTrafficType()));
}
if (StringUtils.isNotBlank(data.getIsolateType())) {
e.setIsolateType(isolateTypeMap.get(data.getIsolateType()));
}
if (StringUtils.isNotBlank(data.getTripDataType())) {
e.setTripDataType(tripDataTypeMap.get(data.getTripDataType()));
}
e.setIsArriveCheck("是".equals(data.getIsArriveCheck()) ? "1" : "0");
e.setIsArrive("是".equals(data.getIsArrive()) ? "1" : "0");
e.setReportingTime(DateUtils.integrate(new Date(), "yyyy-MM-dd"));
datas.add(e);
if (datas.size() == MAX_THRESHOLD) {

38
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcTripReportExcelImportListener.java

@ -10,7 +10,6 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.entity.IcTripReportRecordEntity;
import com.epmet.excel.data.IcTripReportExcelData;
import com.epmet.excel.error.IcPsTripReportRecordErrorExcel;
import com.epmet.service.impl.IcTripReportRecordServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -65,24 +64,28 @@ public class IcTripReportExcelImportListener implements ReadListener<IcTripRepor
try {
// 先校验数据
ValidatorUtils.validateEntity(data);
AtomicBoolean bl = new AtomicBoolean(false);
StringBuffer errMsg = new StringBuffer("");
IcTripReportRecordEntity tripReportRecordEntity = ConvertUtils.sourceToTarget(data, IcTripReportRecordEntity.class);
tripReportRecordEntity.setCustomerId(customerId);
tripReportRecordEntity.setAgencyId(staffInfo.getAgencyId());
tripReportRecordEntity.setPids(staffInfo.getAgencyPIds());
tripReportRecordEntity.setUserType(IcResiUserConstant.USER_TYPE_IMPORT);
tripReportRecordEntity.setIsNatRecord("是".equals(data.getIsNatRecord()) ? "1" : "0");
tripReportRecordEntity.setVaccineNum(tripReportRecordEntity.getVaccineNum().replace("次",""));
if (trafficTypeMap.containsKey(data.getTrafficType())) {
tripReportRecordEntity.setTrafficType(trafficTypeMap.get(data.getTrafficType()));
IcTripReportRecordEntity e = ConvertUtils.sourceToTarget(data, IcTripReportRecordEntity.class);
//先对一下字段值填写是否正确做判断
if (!trafficTypeMap.containsKey(data.getTrafficType())) {
errMsg.append("‘返回方式’值填写错误;");
bl.set(true);
}
if ("其他".equals(data.getTrafficType()) && StringUtils.isBlank(data.getTrafficTypeExplain())) {
errMsg.append("返回方式为其他时,请补充“其他返回方式”;");
bl.set(true);
}
if (!"是".equals(e.getIsNatRecord()) && !"否".equals(e.getIsNatRecord())) {
errMsg.append("‘48小时核酸检测’值填写错误;");
bl.set(true);
}
if (!"0次".equals(e.getVaccineNum()) && !"1次".equals(e.getVaccineNum())
&& !"2次".equals(e.getVaccineNum()) && !"3次".equals(e.getVaccineNum())) {
errMsg.append("‘疫苗接种针次’值填写错误;");
bl.set(true);
}
//错误数据记录到错误文件
if (bl.get()) {
IcTripReportExcelData.ErrorRow errorRow = new IcTripReportExcelData.ErrorRow();
errorRow.setName(data.getName());
@ -93,7 +96,16 @@ public class IcTripReportExcelImportListener implements ReadListener<IcTripRepor
return;
}
datas.add(tripReportRecordEntity);
e.setCustomerId(customerId);
e.setAgencyId(staffInfo.getAgencyId());
e.setPids(staffInfo.getAgencyPIds());
e.setUserType(IcResiUserConstant.USER_TYPE_IMPORT);
e.setIsNatRecord("是".equals(data.getIsNatRecord()) ? "1" : "0");
e.setVaccineNum(e.getVaccineNum().replace("次", ""));
if (trafficTypeMap.containsKey(data.getTrafficType())) {
e.setTrafficType(trafficTypeMap.get(data.getTrafficType()));
}
datas.add(e);
if (datas.size() == MAX_THRESHOLD) {
execPersist();

5
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcTripReportRecordServiceImpl.java

@ -203,6 +203,7 @@ public class IcTripReportRecordServiceImpl extends BaseServiceImpl<IcTripReportR
public String save(IcTripReportFormDTO formDTO) {
//磐石
if(StrConstant.PS_CUSTOMER_ID.equals(formDTO.getCustomerId())){
formDTO.setReportingTime(DateUtils.integrate(new Date(), "yyyy-MM-dd"));
//判断是磐石客户的7天内旅居史情况没值的按逻辑赋值
if (StringUtils.isEmpty(formDTO.getSojournHistory())) {
//风险地区数据
@ -352,6 +353,7 @@ public class IcTripReportRecordServiceImpl extends BaseServiceImpl<IcTripReportR
public String resiSave(IcTripReportFormDTO formDTO) {
//磐石
if(StrConstant.PS_CUSTOMER_ID.equals(formDTO.getCustomerId())){
formDTO.setReportingTime(DateUtils.integrate(new Date(), "yyyy-MM-dd"));
//判断是磐石客户的7天内旅居史情况没值的按逻辑赋值
if (StringUtils.isEmpty(formDTO.getSojournHistory())) {
//风险地区数据
@ -759,6 +761,8 @@ public class IcTripReportRecordServiceImpl extends BaseServiceImpl<IcTripReportR
// 7天旅居史字典
Result<List<SysDictDataDTO>> sojournMapRes = adminOpenFeignClient.dictDataList(DictTypeEnum.SOJOURN_HISTORY.getCode());
Map<String, String> sojournMap = sojournMapRes.success() && CollectionUtils.isNotEmpty(sojournMapRes.getData()) ? sojournMapRes.getData().stream().collect(Collectors.toMap(SysDictDataDTO::getDictValue, SysDictDataDTO::getDictLabel)) : new HashMap<>();
//交通方式
Map<String, String> trafficTypeMap = adminOpenFeignClient.dictMap(DictTypeEnum.TRAFFIC_TYPE.getCode()).getData();
// 隔离状态字典
Map<String, String> isolateMap = new HashMap<>();
@ -768,6 +772,7 @@ public class IcTripReportRecordServiceImpl extends BaseServiceImpl<IcTripReportR
result.getList().forEach(l -> {
l.setIsolateTypeName(isolateMap.get(l.getIsolateType()));
l.setSojournHistoryName(sojournMap.get(l.getSojournHistory()));
l.setTrafficTypeName(trafficTypeMap.containsKey(l.getTrafficType()) ? trafficTypeMap.get(l.getTrafficType()) : "无");
});
}
return result;

3
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.86__alter_ic_trip_report.sql

@ -0,0 +1,3 @@
ALTER TABLE `ic_trip_report_record`
ADD COLUMN `pass_by` varchar(255) NULL COMMENT '7天内到达或途径【磐石】' AFTER `registered_residence`;

BIN
epmet-user/epmet-user-server/src/main/resources/excel/ps_trip_report_import_template.xlsx

Binary file not shown.

27
epmet-user/epmet-user-server/src/main/resources/mapper/IcTripReportRecordDao.xml

@ -7,9 +7,17 @@
<select id="selectMyReported" parameterType="map" resultType="com.epmet.dto.IcTripReportRecordDTO">
SELECT
r.*,
r.CREATED_TIME AS reportTime
r.CREATED_TIME AS reportTime,
(
CASE
WHEN r.USER_TYPE = 'resi' THEN IFNULL(ubi.REAL_NAME, '无')
ELSE IFNULL(cs.REAL_NAME, '无')
END
) AS createdByName
FROM
ic_trip_report_record r
LEFT JOIN customer_staff cs on r.user_type != 'resi' AND r.created_by = cs.user_id AND r.customer_id = cs.customer_id
LEFT JOIN user_base_info ubi ON r.user_type = 'resi' AND r.created_by = ubi.user_id AND r.customer_id = ubi.customer_id
WHERE
r.DEL_FLAG = '0'
AND r.CUSTOMER_ID = #{customerId}
@ -29,11 +37,19 @@
a.ID AS epidemicId,
r.CREATED_TIME AS reportTime,
r.ID_CARD as realIdCard,
r.MOBILE as realMobile
r.MOBILE as realMobile,
(
CASE
WHEN r.USER_TYPE = 'resi' THEN IFNULL(ubi.REAL_NAME, '无')
ELSE IFNULL(cs.REAL_NAME, '无')
END
) AS createdByName
FROM ic_trip_report_record r
LEFT JOIN (
select * from ic_epidemic_special_attention GROUP BY id_card ORDER BY created_time DESC
) a ON (a.ID_CARD = r.ID_CARD AND a.DEL_FLAG = 0 AND a.IS_ATTENTION = 1 AND a.ATTENTION_TYPE = 2)
LEFT JOIN customer_staff cs on r.user_type != 'resi' AND r.created_by = cs.user_id AND r.customer_id = cs.customer_id
LEFT JOIN user_base_info ubi ON r.user_type = 'resi' AND r.created_by = ubi.user_id AND r.customer_id = ubi.customer_id
WHERE
r.DEL_FLAG = '0'
AND r.CUSTOMER_ID = #{customerId}
@ -67,6 +83,9 @@
<if test='null != sojournHistory and "" != sojournHistory'>
AND r.sojourn_history = #{sojournHistory}
</if>
<if test='null != isolateType and "" != isolateType'>
AND r.isolate_type = #{isolateType}
</if>
ORDER BY
r.ARRIVE_DATE DESC, r.CREATED_TIME DESC
</select>
@ -87,6 +106,10 @@
LEAVE_DATE,
PRESENT_ADDRESS,
DETAIL_ADDRESS,
IFNULL(source_detail_address,'') AS sourceDetailAddress,
IFNULL(vaccine_num,0) AS vaccineNum,
traffic_type,
IFNULL(traffic_type_explain,'') AS trafficTypeExplain,
REMARK,
IFNULL(nat_outcome,'0') as natOutcome,
(case when nat_outcome = '1' then '阳性' when nat_outcome = '0' then '阴性' else '阴性' end) as natOutComeName

Loading…
Cancel
Save