Commit ccee761a authored by 麻笑宇's avatar 麻笑宇

Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register

# Conflicts: # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/mapper/JgUseRegistrationMapper.java
parents f3fb7805 d1c567cb
......@@ -134,6 +134,9 @@ public class ESEquipmentCategoryDto {
@Field(type = FieldType.Text)
private String WHETHER_SKID_MOUNTED_PRESSURE_VESSEL;
@Field(type = FieldType.Text)
private String CYLINDER_CATEGORY;
/**
* 问题状态
*/
......
......@@ -26,7 +26,7 @@ public enum UserPostEnum {
//质量保证体系人员(非字典表字段,后期修改code)
ZLBZTXRY("质量保证体系人员","nullnull","1,3,4"),
ZLBZTXRY("质量保证体系人员","6619","1,3,4"),
;
String name;
......
package com.yeejoin.amos.boot.module.jg.api.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
public class CylinderCategoryConverter implements Converter<String> {
private static final String LPG_CYLINDER = "液化石油气瓶";
private static final String INDUSTRY_CYLINDER = "工业气瓶";
private static final String OTHER = "其他";
@Override
public Class<?> supportJavaTypeKey() {
// 实体类中对象属性类型
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty,
GlobalConfiguration globalConfiguration) {
// 从Cell中读取数据
String cellValue = cellData.getStringValue();
// 判断Excel中的值,将其转换为预期的数值
if (LPG_CYLINDER.equals(cellValue)) {
return "0";
} else if (INDUSTRY_CYLINDER.equals(cellValue)) {
return "1";
}else if (OTHER.equals(cellValue)){
return "2";
}
return null;
}
@Override
public CellData convertToExcelData(String o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
// 判断实体类中获取的值,转换为Excel预期的值,并封装为CellData对象
if (o == null) {
return new CellData("");
} else if (o.equals("0")) {
return new CellData(LPG_CYLINDER);
} else if (o.equals("1")) {
return new CellData(INDUSTRY_CYLINDER);
}else if (o.equals("2")) {
return new CellData(OTHER);
}
return new CellData("");
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.api.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
public class InformationSituationConverter implements Converter<String> {
private static final String TYPE_QR_CODE = "二维码";
private static final String TYPE_STAMP = "电子标签";
private static final String TYPE_NO = "无";
@Override
public Class<?> supportJavaTypeKey() {
// 实体类中对象属性类型
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty,
GlobalConfiguration globalConfiguration) {
// 从Cell中读取数据
String cellValue = cellData.getStringValue();
// 判断Excel中的值,将其转换为预期的数值
if (TYPE_QR_CODE.equals(cellValue)) {
return "1";
} else if (TYPE_STAMP.equals(cellValue)) {
return "2";
}
return "99";
}
@Override
public CellData convertToExcelData(String o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
// 判断实体类中获取的值,转换为Excel预期的值,并封装为CellData对象
if (o == null) {
return new CellData("");
} else if (o.equals("1")) {
return new CellData(TYPE_QR_CODE);
} else if (o.equals("2")) {
return new CellData(TYPE_STAMP);
}
return new CellData(TYPE_NO);
}
}
\ No newline at end of file
......@@ -61,214 +61,230 @@ public class EquipInfoCylinderExcelDto extends BaseDto {
@ExcelProperty(value = "设备代码", index = 6)
private String equCode;//判断是否必填和位数
@ApiModelProperty(value = "气瓶分类")
@ExcelProperty(value = "气瓶分类", index = 7, converter = CylinderCategoryConverter.class)
private String cylinderCategory;
@ApiModelProperty(value = "设备总价值(万元)")
@ExcelProperty(value = "设备总价值(万元)", index = 7)
@ExcelProperty(value = "设备总价值(万元)", index = 8)
@NotBlank(message = "设备总价值(万元)不能为空")
private String equPrice;
//设计信息
@ApiModelProperty(value = "设计单位统一社会信用代码")
@ExcelProperty(value = "设计单位统一社会信用代码", index = 8)
@ExcelProperty(value = "设计单位统一社会信用代码", index = 9)
@NotBlank(message = "设计单位统一社会信用代码不能为空")
private String designUnitCreditCode;
@ApiModelProperty(value = "设计单位名称")
@ExcelProperty(value = "设计单位名称", index = 9)
@ExcelProperty(value = "设计单位名称", index = 10)
@NotBlank(message = "设计单位名称不能为空")
private String designUnitName;
@ApiModelProperty(value = "设计许可编号")
@ExcelProperty(value = "设计许可编号", index = 10)
@ExcelProperty(value = "设计许可编号", index = 11)
private String designLicenseNum;
@ApiModelProperty(value = "设计使用年限(年)")
@ExcelProperty(value = "设计使用年限(年)", index = 11)
@ExcelProperty(value = "设计使用年限(年)", index = 12)
private String designUseDate;
@ApiModelProperty(value = "设计日期")
@ExcelProperty(value = "设计日期", index = 12)
@ExcelProperty(value = "设计日期", index = 13)
@DateTimeFormat("yyyy-MM-dd")
private String designDate;
@ApiModelProperty(value = "总图图号")
@ExcelProperty(value = "总图图号", index = 13)
@ExcelProperty(value = "总图图号", index = 14)
private String drawingDo;
@ApiModelProperty(value = "设计文件鉴定单位")
@ExcelProperty(value = "设计文件鉴定单位", index = 14)
@ExcelProperty(value = "设计文件鉴定单位", index = 15)
private String appraisalUnit;
@ApiModelProperty(value = "设计文件鉴定日期")
@ExcelProperty(value = "设计文件鉴定日期", index = 15)
@ExcelProperty(value = "设计文件鉴定日期", index = 16)
@DateTimeFormat("yyyy-MM-dd")
private String appraisalDate;
//制造信息
@ApiModelProperty(value = "制造单位统一社会信用代码")
@ExcelProperty(value = "制造单位统一社会信用代码", index = 16)
@ExcelProperty(value = "制造单位统一社会信用代码", index = 17)
@NotBlank(message = "制造单位统一社会信用代码不能为空")
private String produceUnitCreditCode;
@ApiModelProperty(value = "制造单位名称")
@ExcelProperty(value = "制造单位名称", index = 17)
@ExcelProperty(value = "制造单位名称", index = 18)
@NotBlank(message = "制造单位名称不能为空")
private String produceUnitName;
@ApiModelProperty(value = "制造许可编号")
@ExcelProperty(value = "制造许可编号", index = 18)
@ExcelProperty(value = "制造许可编号", index = 19)
@NotBlank(message = "制造许可编号不能为空")
private String produceLicenseNum;
@ApiModelProperty(value = "出厂编号/产品编码")
@ExcelProperty(value = "出厂编号/产品编码", index = 19)
@ExcelProperty(value = "出厂编号/产品编码", index = 20)
@NotBlank(message = "出厂编号/产品编码不能为空")
private String factoryNum;
@ApiModelProperty(value = "制造日期")
@ExcelProperty(value = "制造日期", index = 20)
@ExcelProperty(value = "制造日期", index = 21)
@NotBlank(message = "制造日期不能为空")
@DateTimeFormat("yyyy-MM-dd")
private String produceDate;
@ApiModelProperty(value = "是否进口")
@ExcelProperty(value = "是否进口", index = 21, converter = ImportedConverter.class)
@ExcelProperty(value = "是否进口", index = 22, converter = ImportedConverter.class)
private String imported;
@ApiModelProperty(value = "制造国")
@ExcelProperty(value = "制造国", index = 22)
@ExcelProperty(value = "制造国", index = 23)
private String produceCountry;
//检验检测
@ApiModelProperty(value = "检测机构名称")
@ExcelProperty(value = "检测机构名称", index = 23)
@ExcelProperty(value = "检测机构名称", index = 24)
@NotBlank(message = "检测机构名称不能为空")
private String inspectOrgName;
@ApiModelProperty(value = "检测机构代码")
@ExcelProperty(value = "检测机构代码", index = 24)
@ExcelProperty(value = "检测机构代码", index = 25)
@NotBlank(message = "检测机构代码不能为空")
private String inspectOrgCode;
@ApiModelProperty(value = "检测人员名称")
@ExcelProperty(value = "检测人员名称", index = 25)
@ExcelProperty(value = "检测人员名称", index = 26)
@NotBlank(message = "检测人员名称不能为空")
private String inspectStaff;
@ApiModelProperty(value = "检测日期")
@ExcelProperty(value = "检测日期", index = 26)
@ExcelProperty(value = "检测日期", index = 27)
@NotBlank(message = "检测日期不能为空")
@DateTimeFormat("yyyy-MM-dd")
private String inspectDate;
//技术参数
@ExcelProperty(value = "额定质量(kg)", index = 27)
@ExcelProperty(value = "额定质量(kg)", index = 28)
@ApiModelProperty(value = "额定质量(kg)")
private String ratedQuality;
@ExcelProperty(value = "使用环境温度(℃)", index = 28)
@ExcelProperty(value = "使用环境温度(℃)", index = 29)
@ApiModelProperty(value = "使用环境温度(℃)")
private String ambientTemperature;
@ExcelProperty(value = "单瓶容积(m3)", index = 29)
@ExcelProperty(value = "单瓶容积(m3)", index = 30)
@ApiModelProperty(value = "单瓶容积(m3)")
@NotBlank(message = "单瓶容积(m3)不能为空")
private String singleBottleVolume;
@ExcelProperty(value = "型号", index = 30)
@ExcelProperty(value = "型号", index = 31)
@ApiModelProperty(value = "型号")
private String modelNumber;
@ExcelProperty(value = "充装介质", index = 31)
@ExcelProperty(value = "充装介质", index = 32)
@ApiModelProperty(value = "充装介质")
@NotBlank(message = "充装介质不能为空")
private String chargingMedium;
@ExcelProperty(value = "规格", index = 32)
@ExcelProperty(value = "规格", index = 33)
@ApiModelProperty(value = "规格")
private String specification;
@ExcelProperty(value = "外径", index = 33)
@ExcelProperty(value = "外径", index = 34)
@ApiModelProperty(value = "外径")
private String outsideDiameter;
@ExcelProperty(value = "壁厚", index = 34)
@ExcelProperty(value = "壁厚", index = 35)
@ApiModelProperty(value = "壁厚")
private String wallThickness;
@ExcelProperty(value = "长度", index = 35)
@ExcelProperty(value = "长度", index = 36)
@ApiModelProperty(value = "长度")
private String length;
@ExcelProperty(value = "公称工作压力(MPa)", index = 36)
@ExcelProperty(value = "公称工作压力(MPa)", index = 37)
@ApiModelProperty(value = "公称工作压力(MPa)")
@NotBlank(message = "公称工作压力(MPa)不能为空")
private String nominalWorkingPressure;
@ExcelProperty(value = "材料(管路)", index = 37)
@ExcelProperty(value = "材料(管路)", index = 38)
@ApiModelProperty(value = "材料(管路)")
private String piping;
@ExcelProperty(value = "无损检测方法(气瓶)", index = 38, converter = NondestructConverter.class)
@ExcelProperty(value = "无损检测方法(气瓶)", index = 39, converter = NondestructConverter.class)
@ApiModelProperty(value = "无损检测方法(气瓶)")
private String qpLossless;//5988
@ExcelProperty(value = "材料(瓶体)", index = 39)
@ExcelProperty(value = "材料(瓶体)", index = 40)
@ApiModelProperty(value = "材料(瓶体)")
private String bottleBody;
@ExcelProperty(value = "材料(端塞)", index = 40)
@ExcelProperty(value = "材料(端塞)", index = 41)
@ApiModelProperty(value = "材料(端塞)")
private String endPlug;
@ExcelProperty(value = "无损检测比例(管路)(%)", index = 41)
@ExcelProperty(value = "无损检测比例(管路)(%)", index = 42)
@ApiModelProperty(value = "无损检测比例(管路)(%)")
private String glRatio;
@ExcelProperty(value = "无损检测比例(气瓶)(%)", index = 42)
@ExcelProperty(value = "无损检测比例(气瓶)(%)", index = 43)
@ApiModelProperty(value = "无损检测比例(气瓶)(%)")
private String qpRatio;
@ExcelProperty(value = "无损检测方法(管路)", index = 43, converter = NondestructConverter.class)
@ExcelProperty(value = "无损检测方法(管路)", index = 44, converter = NondestructConverter.class)
@ApiModelProperty(value = "无损检测方法(管路)")
private String glLossless;
@ExcelProperty(value = "耐压实验压力(气瓶)(Mpa)", index = 44)
@ExcelProperty(value = "耐压实验压力(气瓶)(Mpa)", index = 45)
@ApiModelProperty(value = "耐压实验压力(气瓶)(Mpa)")
private String qpPressure;
@ExcelProperty(value = "耐压实验压力(管路)(Mpa)", index = 45)
@ExcelProperty(value = "耐压实验压力(管路)(Mpa)", index = 46)
@ApiModelProperty(value = "耐压实验压力(管路)(Mpa)")
private String glPressure;
@ExcelProperty(value = "气密性试验压力(气瓶)(Mpa)", index = 46)
@ExcelProperty(value = "气密性试验压力(气瓶)(Mpa)", index = 47)
@ApiModelProperty(value = "气密性试验压力(气瓶)(Mpa)")
private String qpAirTightness;
@ExcelProperty(value = "气体置换后压力(MPa)", index = 47)
@ExcelProperty(value = "气体置换后压力(MPa)", index = 48)
@ApiModelProperty(value = "气体置换后压力(MPa)")
private String displacementPressure;
@ExcelProperty(value = "热处理方式", index = 48)
@ExcelProperty(value = "热处理方式", index = 49)
@ApiModelProperty(value = "热处理方式")
private String heatTreatmentMethod;
@ExcelProperty(value = "气密性实验压力(管路)(MPa)", index = 49)
@ExcelProperty(value = "气密性实验压力(管路)(MPa)", index = 50)
@ApiModelProperty(value = "气密性实验压力(管路)(MPa)")
private String glAirTightness;
@ExcelProperty(value = "气瓶安装位置", index = 50)
@ExcelProperty(value = "气瓶安装位置", index = 51)
@ApiModelProperty(value = "气瓶安装位置")
private String installationPosition;
@ExcelProperty(value = "瓶体内含氧量(%)", index = 51)
@ExcelProperty(value = "瓶体内含氧量(%)", index = 52)
@ApiModelProperty(value = "瓶体内含氧量(%)")
private String oxygen;
@ExcelProperty(value = "热处理温度(℃)", index = 52)
@ExcelProperty(value = "热处理温度(℃)", index = 53)
@ApiModelProperty(value = "热处理温度(℃)")
private String qpHeatTreatmentTemperature;
/**
* 信息化管理字段-信息化管理情况
*/
@ExcelProperty(value = "信息化管理情况",index = 54, converter = InformationSituationConverter.class)
private String informationSituation;
/**
* 信息化管理字段-二维码或者电子标签编号
*/
@ExcelProperty(value = "二维码或者电子标签编号",index = 55)
private String informationManageCode;
@ExcelIgnore
private List fileData;
}
\ No newline at end of file
......@@ -168,4 +168,7 @@ public class JgUseRegistrationDto extends BaseDto {
@ApiModelProperty(value = "工程装置名称")
private String projectContraption;
@ApiModelProperty(value = "气瓶类别(0液化石油气瓶、1工业气瓶、2其他)")
private String cylinderCategory;
}
......@@ -246,4 +246,13 @@ public class JgUseRegistration extends BaseEntity {
*/
@TableField("project_contraption")
private String projectContraption;
/**
* 气瓶类别(液化石油气瓶、工业气瓶、其他)
* 0:液化石油气瓶
* 1:工业气瓶
* 2:其他
*/
@TableField("cylinder_category")
private String cylinderCategory;
}
......@@ -95,6 +95,16 @@ public interface JgUseRegistrationMapper extends BaseMapper<JgUseRegistration> {
List<Map<String, Object>> getCylinderInfoList(@Param("records") List<String> records);
/**
* 批量更新 CYLINDER_CATEGORY 根据 equCode
*
* @param cylinderCategory 需要更新的参数列表
* @param equCodeList equCode列表
* @return 更新成功返回 true,失败返回 false
*/
Boolean updateByEquCodeList(@Param("cylinderCategory") String cylinderCategory, @Param("equCodeList") List<String> equCodeList);
List<Map> stopStateCount(@Param("orgCode") String orgCode);
List<Map> cancelStateCount(@Param("orgCode") String orgCode, @Param("cancelType") int cancelType);
......
......@@ -210,7 +210,8 @@
ibjui.USE_INNER_CODE as useInnerCode,
ibjui.LONGITUDE_LATITUDE as longitudeLatitude,
ibjui.FACTORY_USE_SITE_STREET as factoryUseSiteStreet
FROM "idx_biz_jg_use_info" ibjui left join tzs_user_info tzi on ibjui."PHONE" = tzi."phone" where RECORD = #{id}
FROM "idx_biz_jg_use_info" ibjui left join tzs_user_info tzi on ibjui."PHONE" = tzi."phone"
where RECORD = #{id} AND tzi.is_delete = 'f'
</select>
<select id="getEquipListPage" resultType="java.util.Map">
SELECT jri.EQU_CODE as equCode,
......@@ -873,4 +874,19 @@
LEFT JOIN idx_biz_jg_factory_info fi on ri."RECORD" = fi."RECORD"
LEFT JOIN idx_biz_jg_tech_params_vessel pv ON pv."RECORD" = ui."RECORD"
</sql>
<update id="updateByEquCodeList" parameterType="java.util.Map">
UPDATE "tzs_jg_use_registration" tjur
SET tjur."cylinderCategory" = #{cylinderCategory}
WHERE tjur."sequence_nbr" IN (
SELECT tjure."equip_transfer_id"
FROM "tzs_jg_use_registration_eq" tjure
LEFT JOIN idx_biz_jg_register_info ri ON ri."RECORD" = tjure."equ_id"
WHERE ri."EQU_CODE" IN
<foreach collection="equCodeList" separator="," item="equCode" open="(" close=")">
#{equCode}
</foreach>
)
</update>
</mapper>
......@@ -177,7 +177,7 @@ public class PressureVesselListener extends AnalysisEventListener<EquipInfoCylin
}
private void checkInspectOrg(String inspectOrgCode){
List<Map<String, Object>> InspectOrgList = commonService.getAllInspectionInfo("inspection");
List<Map<String, Object>> InspectOrgList = commonService.getAllInspectionInfo("检验检测机构");
if (findUseCode(InspectOrgList, inspectOrgCode) == null) {
result.append("未查询到该检验机构");
}
......
......@@ -10,6 +10,7 @@ import com.yeejoin.amos.boot.module.jg.api.dto.JgChangeRegistrationNameDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationManageDto;
import com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgChangeRegistrationNameServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.common.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -91,7 +92,6 @@ public class JgChangeRegistrationNameController extends BaseController {
@PostMapping(value = "/flowExecute")
@ApiOperation(httpMethod = "POST", value = "执行流程", notes = "执行流程")
public ResponseModel<Object> flowExecute(@RequestBody JSONObject map) {
LinkedHashMap model1 = (LinkedHashMap) map.get("model");
LinkedHashMap jgRegistrationInfoMap = (LinkedHashMap) model1.get("jgRegistrationInfo");
JgChangeRegistrationNameDto jgScrapCancelDto = JSON.parseObject(JSON.toJSONString(jgRegistrationInfoMap), JgChangeRegistrationNameDto.class);
......@@ -99,11 +99,16 @@ public class JgChangeRegistrationNameController extends BaseController {
jgChangeRegistrationNameService.flowExecute(Long.valueOf(String.valueOf(jgScrapCancelDto.getSequenceNbr())),
jgScrapCancelDto.getInstanceId(),
String.valueOf(map.get("operate")),
String.valueOf(map.get("remark")),
this.getComment(map),
String.valueOf(map.get("nextTaskId")));
return ResponseHelper.buildResponse("ok");
}
private String getComment(JSONObject map){
// 驳回(opinion)和通过(remark)字段不一样 ,兼容修改
return StringUtil.isNotEmpty(map.getString("remark")) ? map.getString("remark") : map.getString("opinion");
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "列表全部数据查询", notes = "列表全部数据查询")
@PostMapping(value = "/getList")
......
......@@ -287,4 +287,20 @@ public class JgUseRegistrationController extends BaseController {
map.put("useUnitCreditCode", useUnitCreditCode);
return ResponseHelper.buildResponse(jgUseRegistrationServiceImpl.queryByRegistrationCode(map));
}
/**
* 根据equCode更新气瓶分类历史数据
* @param cylinderCategory 气瓶类别(0:液化石油气瓶、1:工业气瓶、2其他)
* @param equCodeList 设备代码集合
* @return o
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/updateCylinderCategory")
@ApiOperation(httpMethod = "POST", value = "根据equCode更新气瓶分类历史数据", notes = "根据equCode更新气瓶分类历史数据")
public ResponseModel<Object> handleErrorForm(@RequestParam("cylinderCategory") String cylinderCategory,
@RequestParam("equCodeList") List<String> equCodeList) {
return ResponseHelper.buildResponse(jgUseRegistrationServiceImpl.updateCylinderCategoryByEquCodeBatch(cylinderCategory, equCodeList));
}
}
......@@ -791,7 +791,7 @@ public class CommonServiceImpl implements ICommonService {
@Override
public List<Map<String, Object>> getAllInspectionInfo(String type) {
List<Map<String, Object>> unitList = new ArrayList<>();
if ("inspection".equals(type)) {
if ("检验检测机构".equals(type)) {
Systemctl.dictionarieClient.dictValues("OLD_INSPECTION_TESTING_UNIT").getResult()
.forEach(x -> convertAndAddToUnitList(x, unitList));
}
......@@ -964,11 +964,15 @@ public class CommonServiceImpl implements ICommonService {
}
map.put("supervisoryCode", ImageUtils.generateQRCode(Optional.ofNullable(map.get("applyNo")).orElse("").toString(), 100, 100));
map.put("printingType", PrintingTypeEnum.REGULAR.getCode());
map.put("printingType", PrintingTypeEnum.OVERPLAY.getCode());
String manageType = Optional.ofNullable(map.get("manageType")).orElse("").toString();
String templateFileName = "use-registration-model.ftl";
if ("unit".equals(manageType)) {
templateFileName = "unit-use-registration-model.ftl";
}
File file = null;
try (ServletOutputStream out = response.getOutputStream()) {
file = WordTemplateUtils.createDoc("/templates/use-registration-model.ftl", map, configuration.getTemplate("use-registration-model.ftl", "UTF-8"));
file = WordTemplateUtils.createDoc("/templates/use-registration-model.ftl", map, configuration.getTemplate(templateFileName, "UTF-8"));
try (InputStream fin = Files.newInputStream(file.toPath())) {
response.setCharacterEncoding("utf-8");
......
......@@ -499,7 +499,10 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
equipInfoMap.put("EQU_CODE_TYPE", "1");
equipInfoMap.put("SUPERVISORY_CODE", null);
equipInfoMap.put("CAR_NUMBER", null);
equIpClassMap.put("CAR_NUMBER", null);
// 气瓶的部分信息赋空
equipInfoMap.put("INFORMATION_SITUATION", null);
equipInfoMap.put("INFORMATION_MANAGE_CODE", null);
equipInfoMap.put("CYLINDER_STAMP_ATTACHMENT", null);
}
return resultMap;
}
......@@ -984,9 +987,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (!ValidationUtil.isEmpty(fieldType)) {
otherInfoMap = Bean.BeantoMap(otherInfo);
otherInfoMap.put("otherinfoSeq", otherInfo.getSequenceNbr());
otherInfoMap.put("cylinderStampAttachment", JSON.parse(otherInfo.getCylinderStampAttachment()));
} else {
otherInfoMap = convertCamelToUnderscore(otherInfo, null);
otherInfoMap.put("OTHERINFO_SEQ", otherInfo.getSequenceNbr());
otherInfoMap.put("CYLINDER_STAMP_ATTACHMENT", JSON.parse(otherInfo.getCylinderStampAttachment()));
}
if (!otherInfoMap.isEmpty()) {
Map<String, Object> filterMap = otherInfoMap.entrySet()
......@@ -2368,6 +2373,9 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 96333码和监管码置空
otherInfo.setCode96333(null);
otherInfo.setSupervisoryCode(null);
otherInfo.setCylinderStampAttachment(null);
otherInfo.setInformationSituation(null);
otherInfo.setInformationManageCode(null);
}
iIdxBizJgOtherInfoService.saveOrUpdateData(otherInfo);
......@@ -2820,6 +2828,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
registerInfo.setProductPhoto(productPhoto);
registerInfo.setOtherAccessoriesReg(otherAccessoriesReg);
registerInfo.setUseOrgCode(equipInfoDto.getUseOrgCode());
registerInfo.setCylinderCategory(data.getCylinderCategory());
if ("his".equals(equipInfoDto.getDataSource())) {
registerInfo.setEquCode(this.getEquCode(registerInfo, factoryInfo, equipInfoDto.getReceiveOrgCode()));
}
......@@ -2843,10 +2852,12 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
inspectionDetectionInfoList.add(inspectionDetectionInfo);
// 其他信息
String cylinderStampAttachment = getUrlByKey(fileDataList, "CYLINDER_STAMP_ATTACHMENT");
IdxBizJgOtherInfo otherInfo = new IdxBizJgOtherInfo();
BeanUtils.copyProperties(data, otherInfo);
otherInfo.setRecord(record);
otherInfo.setRecDate(new Date());
otherInfo.setCylinderStampAttachment(cylinderStampAttachment);
if ("his".equals(equipInfoDto.getDataSource())) {
otherInfo.setSupervisoryCode(this.getSupervisoryCode(equipInfoDto.getPossession(), registerInfo));
otherInfo.setClaimStatus("已认领");
......@@ -3068,8 +3079,12 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
checkNotBlank(data.getProduceUnitName(), "制造单位名称不能为空;", result);
checkNotBlank(data.getProduceLicenseNum(), "制造许可编号不能为空;", result);
checkNotBlank(data.getFactoryNum(), "出厂编号/产品编码不能为空;", result);
if ("0".equals(data.getWhetherVehicleCylinder()) && factoryNumList.contains(data.getFactoryNum()))
if ("0".equals(data.getWhetherVehicleCylinder())) {
if (factoryNumList.contains(data.getFactoryNum())) {
result.append("出厂编号/产品编码不能重复;");
}
checkNotBlank(data.getCylinderCategory(), "气瓶分类不能为空;", result);
}
checkFactoryNumUniqueness(data.getFactoryNum(), null, result);
checkNotBlank(data.getProduceDate(), "制造日期不能为空;", result);
Optional.ofNullable(data.getProduceDate()).ifPresent(v -> checkDateFormatCorrect(v, "制造日期格式不正确;", result));
......@@ -3082,6 +3097,9 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
checkNotBlank(data.getSingleBottleVolume(), "单瓶容积不能为空;", result);
checkNotBlank(data.getChargingMedium(), "充装介质不能为空;", result);
checkNotBlank(data.getNominalWorkingPressure(), "公称工作压力不能为空;", result);
checkNotBlank(data.getInformationSituation(), "信息化管理情况(二维码、电子标签、无)不能为空;", result);
// 信息化管理情况校验
checkInformatManageInfo(data, result);
// 如果存在错误信息,则抛出 BadRequest 异常
if (result.length() > 0) {
result.insert(0, "Excel第[" + rowIndex + "]行 -> ");
......@@ -3094,6 +3112,13 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
return result;
}
private void checkInformatManageInfo(EquipInfoCylinderExcelDto data, StringBuilder result) {
// 非车用气瓶时(0)时且信息化管理情况非无时检验二维码编号/电子标签编号必填
if(data.getInformationSituation() != null && !"99".equals(data.getInformationSituation()) && "0".equals(data.getWhetherVehicleCylinder())){
checkNotBlank(data.getInformationManageCode(), "二维码编号/电子标签编号不能为空;", result);
}
}
private void checkEquCodeUniqueness(String equCode, StringBuilder result) {
// 根据设备代码检查唯一性
LambdaQueryWrapper<RegistrationInfo> wrapper = new LambdaQueryWrapper<>();
......@@ -3112,7 +3137,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
private void checkInspectOrg(String inspectOrgCode, StringBuilder result) {
List<Map<String, Object>> InspectOrgList = commonService.getAllInspectionInfo("inspection");
List<Map<String, Object>> InspectOrgList = commonService.getAllInspectionInfo("检验检测机构");
if (findUseCode(InspectOrgList, inspectOrgCode) == null) {
result.append("未查询到该检验机构;");
}
......
......@@ -29,9 +29,11 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgOtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
......@@ -100,6 +102,8 @@ public class JgChangeVehicleRegistrationUnitServiceImpl extends BaseService<JgCh
@Autowired
private IdxBizJgOtherInfoMapper otherInfoMapper;
private volatile Map<String, Object> fillingMediumMap;
public void changeData(JgChangeVehicleRegistrationUnit dto, CompanyBo company) {
if (!ObjectUtils.isEmpty(dto.getReceiveCompanyCode())) {
......@@ -713,6 +717,9 @@ public class JgChangeVehicleRegistrationUnitServiceImpl extends BaseService<JgCh
if (!ObjectUtils.isEmpty(registrationManage) && !ObjectUtils.isEmpty(registrationManage.getCarNumber())) {
a.put("carNumber", registrationManage.getCarNumber());
}
if(!ObjectUtils.isEmpty(registrationManage.getCarNumber())){
a.put("chargingMedium", getFillingMediumMap().get(a.getOrDefault("chargingMedium", "") + ""));
}
});
map.put("dataList", equList);
// 组件回显
......@@ -723,6 +730,20 @@ public class JgChangeVehicleRegistrationUnitServiceImpl extends BaseService<JgCh
return map;
}
private Map<String, Object> getFillingMediumMap() {
if (fillingMediumMap == null) {
synchronized (this) {
if (fillingMediumMap == null) {
List<DictionarieValueModel> fillingMedium = FeignUtil.remoteCall(() -> Systemctl.dictionarieClient.dictValues("FILLING_MEDIUM"));
fillingMediumMap = fillingMedium.stream().collect(Collectors.toMap(DictionarieValueModel::getDictDataKey, DictionarieValueModel::getDictDataValue));
}
return fillingMediumMap;
}
}
return fillingMediumMap;
}
@Transactional(rollbackFor = Exception.class)
public Boolean deleteMessage(String sequenceNbr) {
JgChangeVehicleRegistrationUnit jgChangeVehicleRegistrationUnit = this.baseMapper.selectById(sequenceNbr);
......
......@@ -19,6 +19,7 @@ import com.yeejoin.amos.boot.module.ymt.api.common.StringUtil;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgMaintenanceRecordInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentCategoryEnum;
import org.apache.commons.io.IOUtils;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.elasticsearch.action.search.SearchRequest;
......@@ -393,9 +394,15 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.trackTotalHits(true);
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
// 且登记证筛选
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery("USE_ORG_CODE", useOrgCodes);
boolQuery.must(termsQuery);
// 且已认领状态
boolQuery.must(QueryBuilders.termQuery("STATUS", EquipmentCategoryEnum.YRL.getName()));
// 且已纳管状态
boolQuery.must(QueryBuilders.termQuery("IS_INTO_MANAGEMENT", true));
// 设备状态 对应枚举EquimentEnum
if (!ObjectUtils.isEmpty(enableType)) {
......
......@@ -40,10 +40,7 @@ import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgInspectionDetectionI
import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil;
import com.yeejoin.amos.boot.module.ymt.api.common.StringUtil;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquCodeTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.*;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
......@@ -334,7 +331,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
this.updateOrCreateInspectionDetection(map);
// 更新注册登记信息表
LambdaUpdateWrapper<IdxBizJgRegisterInfo> IdxBizJgRegLambda = new UpdateWrapper<IdxBizJgRegisterInfo>().lambda();
IdxBizJgRegLambda.eq(IdxBizJgRegisterInfo::getRecord, map.get("equipId")).set(IdxBizJgRegisterInfo::getRegisterState, this.getRegCode());
IdxBizJgRegLambda.eq(IdxBizJgRegisterInfo::getRecord, map.get("equipId"))
.set(IdxBizJgRegisterInfo::getRegisterState, this.getRegCode()).set(IdxBizJgRegisterInfo::getCylinderCategory, map.get("cylinderCategory"));
idxBizJgRegisterInfoService.update(IdxBizJgRegLambda);
// 更新设备监管部门
IdxBizJgSupervisionInfo idxBizJgSupervisionInfo = new IdxBizJgSupervisionInfo();
......@@ -705,6 +703,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
useRegistration.setPromoter(reginParams.getUserModel().getUserId());
useRegistration.setCreateUserId(reginParams.getUserModel().getUserId());
useRegistration.setCreateUserName(reginParams.getUserModel().getUserName());
useRegistration.setCylinderCategory(map.getString("cylinderCategory"));//气瓶分类
// 使用单位信息
useRegistration.setUseUnitName(CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
company.getCompanyName().split("_")[1] : company.getCompanyName());
......@@ -1409,6 +1408,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
param.put("USC_UNIT_NAME", "");
param.put("EQU_CODE", dataMap.get("equCode"));
param.put("USE_ORG_CODE", jgUseRegistration.getUseRegistrationCode());
param.put("CYLINDER_CATEGORY", dataMap.get("cylinderCategory"));
objMap.put((String) dataMap.get("equipId"), param);
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
}
......@@ -2079,14 +2079,29 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
int end = ((current - 1) * size + size) < total ? (current - 1) * size + size : (int) total;
// 数据截取
List<Object> equData = equipmentLists.subList(start, end);
Map<String, String> recordInformationMap = this.getInformationManageInfo(equData);
// 设备数据填充
this.fillInCylinderEquData(exportParamsMap, equData, size);
this.fillInCylinderEquData(exportParamsMap, equData, size, recordInformationMap);
return commonService.generateSummaryOfCylinderInfo(exportParamsMap, wordPath, filePrefix);
})).collect(Collectors.toList());
CompletableFuture.allOf(futures.toArray(new CompletableFuture[page])).join();
return futures;
}
private Map<String, String> getInformationManageInfo(List<Object> equData) {
List<String> records = new ArrayList<>();
equData.forEach(e->{
JSONObject jsonObject = (JSONObject)e;
String record = jsonObject.getString("record");
records.add(record);
});
LambdaQueryWrapper<IdxBizJgOtherInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.select(IdxBizJgOtherInfo::getRecord,IdxBizJgOtherInfo::getInformationSituation);
wrapper.in(IdxBizJgOtherInfo::getRecord, records);
List<IdxBizJgOtherInfo> jgOtherInfos = otherInfoMapper.selectList(wrapper);
return jgOtherInfos.stream().collect(Collectors.toMap(IdxBizJgOtherInfo::getRecord, d-> InformationManageTypeEnum.getName(d.getInformationSituation()),(k1, k2) ->k2));
}
/**
* 压力管道数据
*
......@@ -2140,14 +2155,16 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
/**
* 气瓶设备数据填充
*/
public void fillInCylinderEquData(Map<String, Object> exportParamsMap, List<Object> equData, int size) {
private void fillInCylinderEquData(Map<String, Object> exportParamsMap, List<Object> equData, int size, Map<String, String> recordInformationMap) {
String[] fieldNames = {"equDefineName", "factoryNum", "chargingMedium",
"produceUnitName", "produceDate", "nominalWorkingPressure",
"singleBottleVolume", "inspectDate", "nextInspectDate", "useInnerCode"};
"singleBottleVolume", "inspectDate", "nextInspectDate", "useInnerCode","informationSituation"};
// 填充有效数据
for (int curr = 0; curr < equData.size(); curr++) {
JSONObject obj = (JSONObject) equData.get(curr);
// 新增字段信息化管理情况
obj.put("informationSituation", recordInformationMap.get(obj.getString("record")));
int serialNum = curr + 1;
for (String fieldName : fieldNames) {
exportParamsMap.put(fieldName + serialNum, ValidationUtil.isEmpty(obj.get(fieldName)) ? "" : obj.get(fieldName));
......@@ -2862,7 +2879,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
useInfo.setIsNotXiXian(String.valueOf(map.get("isXixian")));
useInfo.setEstateUnitCreditCode(String.valueOf(map.get("estateUnitName")).split("_")[0]);
useInfo.setEstateUnitName(String.valueOf(map.get("estateUnitName")).split("_")[1]);
useInfo.setPhone(String.valueOf(map.get("safetyManager")).split("_")[0]);
useInfo.setPhone(String.valueOf(map.get("phone")));
useInfo.setSafetyManager(String.valueOf(map.get("safetyManager")).split("_")[1]);
useInfo.setUseDate(String.valueOf(map.get("useDate")));
useInfo.setLongitudeLatitude(JSON.toJSONString(map.get("longitudeLatitude")));
......@@ -3236,4 +3253,12 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
}
}
@Transactional
public Object updateCylinderCategoryByEquCodeBatch(String cylinderCategory, List<String> equCodeList) {
if (idxBizJgRegisterInfoMapper.updateCylinderCategoryByEquCodeBatch(cylinderCategory, equCodeList)){
return this.baseMapper.updateByEquCodeList(cylinderCategory, equCodeList);
}
return true;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData"><o:DocumentProperties><o:Author>刘林</o:Author><o:LastAuthor>田博</o:LastAuthor><o:Revision>1</o:Revision><o:LastPrinted>2024-02-27T10:27:00Z</o:LastPrinted><o:Created>2024-02-27T08:26:00Z</o:Created><o:LastSaved>2024-09-04T13:23:51Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>0</o:Words><o:Characters>0</o:Characters><o:Lines>0</o:Lines><o:Paragraphs>0</o:Paragraphs><o:CharactersWithSpaces>0</o:CharactersWithSpaces><o:Version>14</o:Version></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt="string">2052-12.1.0.17827</o:KSOProductBuildVer><o:ICV dt:dt="string">4B5366AAC3D942C2B50D61991D2CC3A2_12</o:ICV></o:CustomDocumentProperties><w:fonts><w:defaultFonts w:ascii="Calibri" w:fareast="宋体" w:h-ansi="Calibri" w:cs="Times New Roman"/><w:font w:name="Times New Roman"><w:panose-1 w:val="02020603050405020304"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="宋体"><w:panose-1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000203" w:usb-1="288F0000" w:usb-2="00000006" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Arial"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="01"/><w:family w:val="SWiss"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="黑体"><w:panose-1 w:val="02010609060101010101"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="800002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/></w:font><w:font w:name="Courier New"><w:panose-1 w:val="02070309020205020404"/><w:charset w:val="01"/><w:family w:val="Modern"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C0007843" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="Symbol"><w:panose-1 w:val="05050102010706020507"/><w:charset w:val="02"/><w:family w:val="Roman"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Calibri"><w:panose-1 w:val="020F0502020204030204"/><w:charset w:val="00"/><w:family w:val="SWiss"/><w:pitch w:val="Default"/><w:sig w:usb-0="E4002EFF" w:usb-1="C200247B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="200001FF" w:csb-1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Arial"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="Courier New"><w:panose-1 w:val="02070309020205020404"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C0007843" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="Symbol"><w:panose-1 w:val="05050102010706020507"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="微软雅黑"><w:panose-1 w:val="020B0503020204020204"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="80000287" w:usb-1="2ACF3C50" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004001F" w:csb-1="00000000"/></w:font><w:font w:name="Tahoma"><w:panose-1 w:val="020B0604030504040204"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="E1002EFF" w:usb-1="C000605B" w:usb-2="00000029" w:usb-3="00000000" w:csb-0="200101FF" w:csb-1="20280000"/></w:font></w:fonts><w:styles><w:latentStyles w:defLockedState="off" w:latentStyleCount="260"><w:lsdException w:name="Normal"/><w:lsdException w:name="heading 1"/><w:lsdException w:name="heading 2"/><w:lsdException w:name="heading 3"/><w:lsdException w:name="heading 4"/><w:lsdException w:name="heading 5"/><w:lsdException w:name="heading 6"/><w:lsdException w:name="heading 7"/><w:lsdException w:name="heading 8"/><w:lsdException w:name="heading 9"/><w:lsdException w:name="index 1"/><w:lsdException w:name="index 2"/><w:lsdException w:name="index 3"/><w:lsdException w:name="index 4"/><w:lsdException w:name="index 5"/><w:lsdException w:name="index 6"/><w:lsdException w:name="index 7"/><w:lsdException w:name="index 8"/><w:lsdException w:name="index 9"/><w:lsdException w:name="toc 1"/><w:lsdException w:name="toc 2"/><w:lsdException w:name="toc 3"/><w:lsdException w:name="toc 4"/><w:lsdException w:name="toc 5"/><w:lsdException w:name="toc 6"/><w:lsdException w:name="toc 7"/><w:lsdException w:name="toc 8"/><w:lsdException w:name="toc 9"/><w:lsdException w:name="Normal Indent"/><w:lsdException w:name="footnote text"/><w:lsdException w:name="annotation text"/><w:lsdException w:name="header"/><w:lsdException w:name="footer"/><w:lsdException w:name="index heading"/><w:lsdException w:name="caption"/><w:lsdException w:name="table of figures"/><w:lsdException w:name="envelope address"/><w:lsdException w:name="envelope return"/><w:lsdException w:name="footnote reference"/><w:lsdException w:name="annotation reference"/><w:lsdException w:name="line number"/><w:lsdException w:name="page number"/><w:lsdException w:name="endnote reference"/><w:lsdException w:name="endnote text"/><w:lsdException w:name="table of authorities"/><w:lsdException w:name="macro"/><w:lsdException w:name="toa heading"/><w:lsdException w:name="List"/><w:lsdException w:name="List Bullet"/><w:lsdException w:name="List Number"/><w:lsdException w:name="List 2"/><w:lsdException w:name="List 3"/><w:lsdException w:name="List 4"/><w:lsdException w:name="List 5"/><w:lsdException w:name="List Bullet 2"/><w:lsdException w:name="List Bullet 3"/><w:lsdException w:name="List Bullet 4"/><w:lsdException w:name="List Bullet 5"/><w:lsdException w:name="List Number 2"/><w:lsdException w:name="List Number 3"/><w:lsdException w:name="List Number 4"/><w:lsdException w:name="List Number 5"/><w:lsdException w:name="Title"/><w:lsdException w:name="Closing"/><w:lsdException w:name="Signature"/><w:lsdException w:name="Default Paragraph Font"/><w:lsdException w:name="Body Text"/><w:lsdException w:name="Body Text Indent"/><w:lsdException w:name="List Continue"/><w:lsdException w:name="List Continue 2"/><w:lsdException w:name="List Continue 3"/><w:lsdException w:name="List Continue 4"/><w:lsdException w:name="List Continue 5"/><w:lsdException w:name="Message Header"/><w:lsdException w:name="Subtitle"/><w:lsdException w:name="Salutation"/><w:lsdException w:name="Date"/><w:lsdException w:name="Body Text First Indent"/><w:lsdException w:name="Body Text First Indent 2"/><w:lsdException w:name="Note Heading"/><w:lsdException w:name="Body Text 2"/><w:lsdException w:name="Body Text 3"/><w:lsdException w:name="Body Text Indent 2"/><w:lsdException w:name="Body Text Indent 3"/><w:lsdException w:name="Block Text"/><w:lsdException w:name="Hyperlink"/><w:lsdException w:name="FollowedHyperlink"/><w:lsdException w:name="Strong"/><w:lsdException w:name="Emphasis"/><w:lsdException w:name="Document Map"/><w:lsdException w:name="Plain Text"/><w:lsdException w:name="E-mail Signature"/><w:lsdException w:name="Normal (Web)"/><w:lsdException w:name="HTML Acronym"/><w:lsdException w:name="HTML Address"/><w:lsdException w:name="HTML Cite"/><w:lsdException w:name="HTML Code"/><w:lsdException w:name="HTML Definition"/><w:lsdException w:name="HTML Keyboard"/><w:lsdException w:name="HTML Preformatted"/><w:lsdException w:name="HTML Sample"/><w:lsdException w:name="HTML Typewriter"/><w:lsdException w:name="HTML Variable"/><w:lsdException w:name="Normal Table"/><w:lsdException w:name="annotation subject"/><w:lsdException w:name="Table Simple 1"/><w:lsdException w:name="Table Simple 2"/><w:lsdException w:name="Table Simple 3"/><w:lsdException w:name="Table Classic 1"/><w:lsdException w:name="Table Classic 2"/><w:lsdException w:name="Table Classic 3"/><w:lsdException w:name="Table Classic 4"/><w:lsdException w:name="Table Colorful 1"/><w:lsdException w:name="Table Colorful 2"/><w:lsdException w:name="Table Colorful 3"/><w:lsdException w:name="Table Columns 1"/><w:lsdException w:name="Table Columns 2"/><w:lsdException w:name="Table Columns 3"/><w:lsdException w:name="Table Columns 4"/><w:lsdException w:name="Table Columns 5"/><w:lsdException w:name="Table Grid 1"/><w:lsdException w:name="Table Grid 2"/><w:lsdException w:name="Table Grid 3"/><w:lsdException w:name="Table Grid 4"/><w:lsdException w:name="Table Grid 5"/><w:lsdException w:name="Table Grid 6"/><w:lsdException w:name="Table Grid 7"/><w:lsdException w:name="Table Grid 8"/><w:lsdException w:name="Table List 1"/><w:lsdException w:name="Table List 2"/><w:lsdException w:name="Table List 3"/><w:lsdException w:name="Table List 4"/><w:lsdException w:name="Table List 5"/><w:lsdException w:name="Table List 6"/><w:lsdException w:name="Table List 7"/><w:lsdException w:name="Table List 8"/><w:lsdException w:name="Table 3D effects 1"/><w:lsdException w:name="Table 3D effects 2"/><w:lsdException w:name="Table 3D effects 3"/><w:lsdException w:name="Table Contemporary"/><w:lsdException w:name="Table Elegant"/><w:lsdException w:name="Table Professional"/><w:lsdException w:name="Table Subtle 1"/><w:lsdException w:name="Table Subtle 2"/><w:lsdException w:name="Table Web 1"/><w:lsdException w:name="Table Web 2"/><w:lsdException w:name="Table Web 3"/><w:lsdException w:name="Balloon Text"/><w:lsdException w:name="Table Grid"/><w:lsdException w:name="Table Theme"/><w:lsdException w:name="Light Shading"/><w:lsdException w:name="Light List"/><w:lsdException w:name="Light Grid"/><w:lsdException w:name="Medium Shading 1"/><w:lsdException w:name="Medium Shading 2"/><w:lsdException w:name="Medium List 1"/><w:lsdException w:name="Medium List 2"/><w:lsdException w:name="Medium Grid 1"/><w:lsdException w:name="Medium Grid 2"/><w:lsdException w:name="Medium Grid 3"/><w:lsdException w:name="Dark List"/><w:lsdException w:name="Colorful Shading"/><w:lsdException w:name="Colorful List"/><w:lsdException w:name="Colorful Grid"/><w:lsdException w:name="Light Shading Accent 1"/><w:lsdException w:name="Light List Accent 1"/><w:lsdException w:name="Light Grid Accent 1"/><w:lsdException w:name="Medium Shading 1 Accent 1"/><w:lsdException w:name="Medium Shading 2 Accent 1"/><w:lsdException w:name="Medium List 1 Accent 1"/><w:lsdException w:name="Medium List 2 Accent 1"/><w:lsdException w:name="Medium Grid 1 Accent 1"/><w:lsdException w:name="Medium Grid 2 Accent 1"/><w:lsdException w:name="Medium Grid 3 Accent 1"/><w:lsdException w:name="Dark List Accent 1"/><w:lsdException w:name="Colorful Shading Accent 1"/><w:lsdException w:name="Colorful List Accent 1"/><w:lsdException w:name="Colorful Grid Accent 1"/><w:lsdException w:name="Light Shading Accent 2"/><w:lsdException w:name="Light List Accent 2"/><w:lsdException w:name="Light Grid Accent 2"/><w:lsdException w:name="Medium Shading 1 Accent 2"/><w:lsdException w:name="Medium Shading 2 Accent 2"/><w:lsdException w:name="Medium List 1 Accent 2"/><w:lsdException w:name="Medium List 2 Accent 2"/><w:lsdException w:name="Medium Grid 1 Accent 2"/><w:lsdException w:name="Medium Grid 2 Accent 2"/><w:lsdException w:name="Medium Grid 3 Accent 2"/><w:lsdException w:name="Dark List Accent 2"/><w:lsdException w:name="Colorful Shading Accent 2"/><w:lsdException w:name="Colorful List Accent 2"/><w:lsdException w:name="Colorful Grid Accent 2"/><w:lsdException w:name="Light Shading Accent 3"/><w:lsdException w:name="Light List Accent 3"/><w:lsdException w:name="Light Grid Accent 3"/><w:lsdException w:name="Medium Shading 1 Accent 3"/><w:lsdException w:name="Medium Shading 2 Accent 3"/><w:lsdException w:name="Medium List 1 Accent 3"/><w:lsdException w:name="Medium List 2 Accent 3"/><w:lsdException w:name="Medium Grid 1 Accent 3"/><w:lsdException w:name="Medium Grid 2 Accent 3"/><w:lsdException w:name="Medium Grid 3 Accent 3"/><w:lsdException w:name="Dark List Accent 3"/><w:lsdException w:name="Colorful Shading Accent 3"/><w:lsdException w:name="Colorful List Accent 3"/><w:lsdException w:name="Colorful Grid Accent 3"/><w:lsdException w:name="Light Shading Accent 4"/><w:lsdException w:name="Light List Accent 4"/><w:lsdException w:name="Light Grid Accent 4"/><w:lsdException w:name="Medium Shading 1 Accent 4"/><w:lsdException w:name="Medium Shading 2 Accent 4"/><w:lsdException w:name="Medium List 1 Accent 4"/><w:lsdException w:name="Medium List 2 Accent 4"/><w:lsdException w:name="Medium Grid 1 Accent 4"/><w:lsdException w:name="Medium Grid 2 Accent 4"/><w:lsdException w:name="Medium Grid 3 Accent 4"/><w:lsdException w:name="Dark List Accent 4"/><w:lsdException w:name="Colorful Shading Accent 4"/><w:lsdException w:name="Colorful List Accent 4"/><w:lsdException w:name="Colorful Grid Accent 4"/><w:lsdException w:name="Light Shading Accent 5"/><w:lsdException w:name="Light List Accent 5"/><w:lsdException w:name="Light Grid Accent 5"/><w:lsdException w:name="Medium Shading 1 Accent 5"/><w:lsdException w:name="Medium Shading 2 Accent 5"/><w:lsdException w:name="Medium List 1 Accent 5"/><w:lsdException w:name="Medium List 2 Accent 5"/><w:lsdException w:name="Medium Grid 1 Accent 5"/><w:lsdException w:name="Medium Grid 2 Accent 5"/><w:lsdException w:name="Medium Grid 3 Accent 5"/><w:lsdException w:name="Dark List Accent 5"/><w:lsdException w:name="Colorful Shading Accent 5"/><w:lsdException w:name="Colorful List Accent 5"/><w:lsdException w:name="Colorful Grid Accent 5"/><w:lsdException w:name="Light Shading Accent 6"/><w:lsdException w:name="Light List Accent 6"/><w:lsdException w:name="Light Grid Accent 6"/><w:lsdException w:name="Medium Shading 1 Accent 6"/><w:lsdException w:name="Medium Shading 2 Accent 6"/><w:lsdException w:name="Medium List 1 Accent 6"/><w:lsdException w:name="Medium List 2 Accent 6"/><w:lsdException w:name="Medium Grid 1 Accent 6"/><w:lsdException w:name="Medium Grid 2 Accent 6"/><w:lsdException w:name="Medium Grid 3 Accent 6"/><w:lsdException w:name="Dark List Accent 6"/><w:lsdException w:name="Colorful Shading Accent 6"/><w:lsdException w:name="Colorful List Accent 6"/><w:lsdException w:name="Colorful Grid Accent 6"/></w:latentStyles><w:style w:type="paragraph" w:styleId="a1" w:default="on"><w:name w:val="Normal"/><w:pPr><w:widowControl w:val="off"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Calibri" w:h-ansi="Calibri" w:fareast="宋体" w:cs="Times New Roman" w:hint="default"/><w:kern w:val="2"/><w:sz w:val="21"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="a4" w:default="on"><w:name w:val="Default Paragraph Font"/></w:style><w:style w:type="table" w:styleId="a3" w:default="on"><w:name w:val="Normal Table"/><w:semiHidden/><w:tblPr><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="paragraph" w:styleId="a2"><w:name w:val="Body Text"/><w:basedOn w:val="a1"/><w:rPr><w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="黑体" w:hint="default"/><w:sz w:val="36"/><w:sz-cs w:val="36"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style></w:styles><w:shapeDefaults><o:shapedefaults fillcolor="#FFFFFF" fill="t" stroke="t"><v:fill on="t" focussize="0,0"/><v:stroke color="#000000"/></o:shapedefaults></w:shapeDefaults><w:bgPict><w:background/><v:background id="_x0000_s1025"><v:fill on="f" focussize="0,0"/></v:background></w:bgPict><w:docPr><w:view w:val="print"/><w:zoom w:percent="143"/><w:characterSpacingControl w:val="CompressPunctuation"/><w:documentProtection w:enforcement="off"/><w:punctuationKerning/><w:bordersDontSurroundHeader/><w:bordersDontSurroundFooter/><w:defaultTabStop w:val="480"/><w:drawingGridVerticalSpacing w:val="156"/><w:displayHorizontalDrawingGridEvery w:val="0"/><w:displayVerticalDrawingGridEvery w:val="2"/><w:compat><w:adjustLineHeightInTable/><w:ulTrailSpace/><w:doNotExpandShiftReturn/><w:balanceSingleByteDoubleByteWidth/><w:useFELayout/><w:spaceForUL/><w:wrapTextWithPunct/><w:breakWrappedTables/><w:useAsianBreakRules/><w:dontGrowAutofit/><w:useFELayout/></w:compat></w:docPr><w:body><wx:sect><w:p><w:pPr><w:rPr><w:rFonts w:fareast="宋体" w:hint="fareast"/><w:lang w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:sz w:val="24"/></w:rPr><w:pict><v:shape id="_x0000_s1026" o:spt="202" type="#_x0000_t202" style="position:absolute;left:0pt;margin-left:35.25pt;margin-top:535.75pt;height:115.7pt;width:125.55pt;z-index:252707840;mso-width-relative:page;mso-height-relative:page;" fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600"><v:path/><v:fill on="t" color2="#FFFFFF" focussize="0,0"/><v:stroke on="f" weight="0.5pt"/><v:imagedata o:title=""/><o:lock v:ext="edit" aspectratio="f"/><v:textbox><w:txbxContent><w:p><w:pPr><w:keepNext w:val="off"/><w:keepLines w:val="off"/><w:pageBreakBefore w:val="off"/><w:widowControl w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="120" w:line-rule="auto"/><w:jc w:val="center"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:keepNext w:val="off"/><w:keepLines w:val="off"/><w:pageBreakBefore w:val="off"/><w:widowControl w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="120" w:line-rule="auto"/><w:jc w:val="center"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:fareast="宋体" w:hint="default"/></w:rPr></w:pPr><w:r><w:pict><w:binData w:name="wordml://1.png">iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAABTElEQVR42u3c0Q3CMAwFQDYp+y8J
EyBRxc+N27P4RFFyldw4Drw+4u94IYAFCxYsWLAQFGC9j6P882v8s3PonCcsWLDmYa0kxcQiO+cJ
Cxas2VjpxZxNup3zhAUL1nOxEuPAggULVsckVopbWLBgweouUKsO/2576gALFqxtGxaJzedtuzuw
YMFqi8Ri0gELFqx9sc4m1KrCOLEpXVkLLFiwZmAlGp/pQrrqO7BgwZqHlUjSK5vSlYdRNQ4sWLD2
xUok7KuS+srLChYsWDOwEhc0qhDTLyVYsGDNw9qtYZFGvFWTFRasB2J1XgxJND6qim1YsGDNw0ps
JhMbyPTGFRYsWPOwdviDnqqHCgsWLFipHwckxow0LGDBggUrVBhHujuwYMHaCitR3FYdCqYLdViw
YM3A6mxYXHWRBBYsWLOxBCxYsGDBgiVgLcUX00i5kgHiiqAAAAAASUVORK5CYII=
</w:binData><v:shape id="_x0000_s1027" o:spt="75" alt="wordml://2.png" type="#_x0000_t75" style="height:62.35pt;width:62.35pt;" filled="f" o:preferrelative="f" stroked="f" coordsize="21600,21600"><v:path/><v:fill on="f" focussize="0,0"/><v:stroke on="f"/><v:imagedata src="wordml://1.png" o:title="wordml://2.png"/><o:lock v:ext="edit" aspectratio="f"/><w10:wrap type="none"/><w10:anchorlock/></v:shape></w:pict></w:r></w:p><w:p><w:pPr><w:keepNext w:val="off"/><w:keepLines w:val="off"/><w:pageBreakBefore w:val="off"/><w:widowControl w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="120" w:line-rule="auto"/><w:jc w:val="center"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:pPr></w:p></w:txbxContent></v:textbox></v:shape></w:pict></w:r><w:r><w:rPr><w:sz w:val="24"/></w:rPr><w:pict><v:shape id="_x0000_s1028" o:spt="202" type="#_x0000_t202" style="position:absolute;left:0pt;margin-left:275.9pt;margin-top:623pt;height:38.95pt;width:265pt;z-index:-251658240;mso-width-relative:page;mso-height-relative:page;" fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600"><v:path/><v:fill on="t" color2="#FFFFFF" focussize="0,0"/><v:stroke on="f" weight="0.5pt"/><v:imagedata o:title=""/><o:lock v:ext="edit" aspectratio="f"/><v:textbox><w:txbxContent><w:p><w:pPr><w:keepNext w:val="off"/><w:keepLines w:val="off"/><w:pageBreakBefore w:val="off"/><w:widowControl w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:adjustRightInd w:val="off"/><w:snapToGrid/><w:spacing w:line="400" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:cs="宋体" w:hint="default"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> ${(giveOutYear)!''} ${(giveOutMonth)!''} ${(giveOutDay)!''}</w:t></w:r></w:p></w:txbxContent></v:textbox></v:shape></w:pict></w:r><w:r><w:rPr><w:sz w:val="24"/></w:rPr><w:pict><v:shape id="_x0000_s1029" o:spt="202" type="#_x0000_t202" style="position:absolute;left:0pt;margin-left:254.45pt;margin-top:132.1pt;height:37.5pt;width:205.5pt;z-index:251658240;mso-width-relative:page;mso-height-relative:page;" fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600"><v:path/><v:fill on="t" color2="#FFFFFF" focussize="0,0"/><v:stroke on="f" weight="0.5pt"/><v:imagedata o:title=""/><o:lock v:ext="edit" aspectratio="f"/><v:textbox><w:txbxContent><w:p><w:pPr><w:rPr><w:rFonts w:hint="default"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${(useRegistrationCode)!''}</w:t></w:r></w:p></w:txbxContent></v:textbox></v:shape></w:pict></w:r><w:r><w:rPr><w:sz w:val="24"/></w:rPr><w:pict><v:shape id="_x0000_s1030" o:spt="202" type="#_x0000_t202" style="position:absolute;left:0pt;margin-left:135.2pt;margin-top:362.95pt;height:40.5pt;width:382.5pt;z-index:-251658240;mso-width-relative:page;mso-height-relative:page;" fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600"><v:path/><v:fill on="t" color2="#FFFFFF" focussize="0,0"/><v:stroke on="f" weight="0.5pt"/><v:imagedata o:title=""/><o:lock v:ext="edit" aspectratio="f"/><v:textbox><w:txbxContent><w:p><w:pPr><w:keepNext w:val="off"/><w:keepLines w:val="off"/><w:pageBreakBefore w:val="off"/><w:widowControl w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="120" w:line-rule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${(fullAddress)!''}</w:t></w:r></w:p></w:txbxContent></v:textbox></v:shape></w:pict></w:r><w:r><w:rPr><w:sz w:val="24"/></w:rPr><w:pict><v:shape id="_x0000_s1031" o:spt="202" type="#_x0000_t202" style="position:absolute;left:0pt;margin-left:134.45pt;margin-top:313.45pt;height:40.5pt;width:382.5pt;z-index:-251658240;mso-width-relative:page;mso-height-relative:page;" fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600"><v:path/><v:fill on="t" color2="#FFFFFF" focussize="0,0"/><v:stroke on="f" weight="0.5pt"/><v:imagedata o:title=""/><o:lock v:ext="edit" aspectratio="f"/><v:textbox><w:txbxContent><w:p><w:pPr><w:keepNext w:val="off"/><w:keepLines w:val="off"/><w:pageBreakBefore w:val="off"/><w:widowControl w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="120" w:line-rule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${(useUnitName)!''}</w:t></w:r></w:p></w:txbxContent></v:textbox></v:shape></w:pict></w:r><w:r><w:rPr><w:sz w:val="24"/></w:rPr><w:pict><v:shape id="_x0000_s1032" o:spt="202" type="#_x0000_t202" style="position:absolute;left:0pt;margin-left:135.25pt;margin-top:409.7pt;height:38.2pt;width:368.45pt;z-index:-251658240;mso-width-relative:page;mso-height-relative:page;" filled="f" stroked="f" coordsize="21600,21600"><v:path/><v:fill on="f" focussize="0,0"/><v:stroke on="f" weight="0.5pt"/><v:imagedata o:title=""/><o:lock v:ext="edit" aspectratio="f"/><v:textbox><w:txbxContent><w:p><w:pPr><w:keepNext w:val="off"/><w:keepLines w:val="off"/><w:pageBreakBefore w:val="off"/><w:widowControl w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="120" w:line-rule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${(equCategory)!''}</w:t></w:r></w:p></w:txbxContent></v:textbox></v:shape></w:pict></w:r></w:p><w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="624" w:right="510" w:bottom="624" w:left="624" w:header="851" w:footer="992" w:gutter="0"/><w:cols w:space="0"/><w:docGrid w:type="lines" w:line-pitch="312"/></w:sectPr></wx:sect></w:body></w:wordDocument>
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.tcm.api.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.tcm.api.dto.GroupAndPersonInfoDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzIndividualityDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzsEquipListDto;
......@@ -35,6 +36,8 @@ public interface ITzsUserInfoService extends IService<TzsUserInfo> {
Map<String,Object> getCompanyType();
Map<String,Object> getCompanyTypeForRedis(ReginParams selectedOrgInfo);
Page<TzsEquipListDto> getEquipList(String type,String userSeq,TzsEquipListDto dto, Page<TzsEquipListDto> page);
Boolean equipBind(String type, String userSeq, String creditCode, Map<String,Object> map);
......
......@@ -43,6 +43,12 @@ public class TzsUserInfoVo {
private JSONArray post;
/**
* 岗位 (后期post迁移数组至此)
*/
@TableField("new_post")
private JSONArray newPost;
/**
* 联系电话
*/
@TableField("phone")
......
......@@ -50,7 +50,7 @@
<if test="dto.menuTypeUnderPost != null and dto.menuTypeUnderPost.size() > 0">
AND (
<foreach collection="dto.menuTypeUnderPost" separator="or" item="postType">
post like concat('%',#{postType},'%')
new_post like concat('%',#{postType},'%')
</foreach>
)
</if>
......
......@@ -181,6 +181,14 @@ public class TzsUserInfoController extends BaseController {
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getCompanyTypeForRedis")
@ApiOperation(httpMethod = "GET", value = "从redis获取当前登录用户单位类型获取,避免多角色的单位获取到多个单位类型", notes = "从redis获取当前登录用户单位类型获取,避免多角色的单位获取到多个单位类型")
public ResponseModel<Map<String, Object>> getCompanyTypeForRedis() {
ReginParams selectedOrgInfo = getSelectedOrgInfo();
return ResponseHelper.buildResponse(tzsUserInfoService.getCompanyTypeForRedis(selectedOrgInfo));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getUserType")
@ApiOperation(httpMethod = "GET", value = "根据单位类型获取人员类型", notes = "根据单位类型获取人员类型")
public ResponseModel<List<Map<String, Object>>> getUserType(@RequestParam(value = "unitType") String unitType) {
......
......@@ -109,7 +109,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 安全总监管理
menuMap.put("aqzj", Collections.singletonList("6547"));
// 质量保证体系人员管理
menuMap.put("zlbztxry", Arrays.asList("6551","6550"));
menuMap.put("zlbztxry", Collections.singletonList("6619"));
// 质量安全员管理
menuMap.put("zlaqy", Collections.singletonList("6551"));
// 质量安全总监管理
......@@ -119,12 +119,17 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 检验人员管理
menuMap.put("jyry", Collections.singletonList("66151"));
// 其他人员管理
menuMap.put("qtry", Arrays.asList("6546","6617","6553"));
menuMap.put("qtry", Collections.singletonList("6546"));
}
@Override
public Page<TzsUserInfoDto> page(TzsUserInfoDto dto, Page<TzsUserInfoDto> page) {
dto.setMenuTypeUnderPost(menuMap.get(dto.getMenuType()));
// 其他人员管理 包含 普通员工、安全管理员、安改维负责人
// 上面menuMap中的其他人员只是在新增人员时为页面赋默认值
if ("qtry".equals(dto.getMenuType())){
dto.setMenuTypeUnderPost(Arrays.asList("6546","6617","6553"));
}
Page<TzsUserInfoDto> tzsUserInfoDtoPage = tzsUserInfoMapper.selectPageMessage(page, dto);
tzsUserInfoDtoPage.getRecords().forEach(item -> {
if (!ObjectUtils.isEmpty(item.getProfile())) {
......@@ -247,6 +252,9 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
if (!ObjectUtils.isEmpty(tzsUserInfo.getPost())) {
tzsUserInfoVo.setPost(JSON.parseArray(tzsUserInfo.getPost()));
}
if (!ObjectUtils.isEmpty(tzsUserInfo.getNewPost())) {
tzsUserInfoVo.setNewPost(JSON.parseArray(tzsUserInfo.getNewPost()));
}
if (!ObjectUtils.isEmpty(tzsUserInfo.getEquipType())) {
tzsUserInfoVo.setEquipType(JSON.parseArray(tzsUserInfo.getEquipType()));
}
......@@ -477,6 +485,50 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
@Override
public Map<String, Object> getCompanyTypeForRedis(ReginParams selectedOrgInfo) {
Map<String, Object> result = new HashMap<>();
result.put("companyType", null);
CompanyBo company = selectedOrgInfo.getCompany();
if (ObjectUtils.isEmpty(company)) {
return result;
}
result.put("creditCode", company.getCompanyCode());
boolean productCompany = false;
boolean useCompany = false;
boolean installCompany = false;
boolean inspectionCompany = false;
String companyType = company.getCompanyType();
if (companyType.contains("使用单位") || companyType.contains("个人主体")) {
useCompany = true;
}
if (companyType.contains("充装单位") || companyType.contains("安装改造维修单位") || companyType.contains("制造单位") || companyType.contains("设计单位")) {
productCompany = true;
}
if (companyType.contains("安装改造维修单位")) {
installCompany = true;
}
if (companyType.contains("检验检测机构")) {
inspectionCompany = true;
}
StringBuilder companyTypeStr = new StringBuilder();
if (useCompany) {
companyTypeStr.append("use-");
}
if (productCompany) {
companyTypeStr.append("pro-");
}
if (installCompany) {
companyTypeStr.append("install-");
}
if (inspectionCompany) {
companyTypeStr.append("inspection");
}
result.put("companyType", companyTypeStr);
return result;
}
@Override
public Page<TzsEquipListDto> getEquipList(String type, String userSeq, TzsEquipListDto dto, Page<TzsEquipListDto> page) {
List<CompanyModel> companyModels = FeignUtil.remoteCall(() -> Privilege.companyClient.queryListByChild(RequestContext.getExeUserId()));
if (companyModels.isEmpty()) {
......@@ -779,7 +831,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
tzsUserInfo.setAppointDoc(tzsUserInfo.getAppointDoc());
tzsUserInfo.setRecDate(new Date());
// 兼容前端只传一个值,并且非json类型的情况
JSONArray postArray = JSONArray.parseArray(this.isJSONValid(tzsUserInfo.getPost()) ? tzsUserInfo.getPost() : "[\"" + tzsUserInfo.getPost() + "\"]");
JSONArray postArray = JSONArray.parseArray(this.isJSONValid(tzsUserInfo.getNewPost()) ? tzsUserInfo.getNewPost() : "[\"" + tzsUserInfo.getNewPost() + "\"]");
tzsUserInfo.setNewPost(JSONArray.toJSONString(postArray));
// 兼容 人员类型为【作业人员】且 【作业项目】含有【电梯修理】项目的为【维保人员】post为“6618”
JSONArray permissionData6552 = tzsUserInfo.getPermissionData6552();
......@@ -791,7 +843,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
}
tzsUserInfo.setPost(JSONArray.toJSONString(postArray));
tzsUserInfo.setPostName(this.setPostName(tzsUserInfo.getPost()));
tzsUserInfo.setPostName(this.setPostName(tzsUserInfo.getNewPost()));
tzsUserInfo = this.createWithModel(tzsUserInfo);
// 保存资质
tzsUserPermissionServiceImpl.savePermissionData(tzsUserInfo);
......@@ -842,7 +894,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
tzsUserInfoDto.setSequenceNbr(rowId);
tzsUserInfoDto.setRecDate(new Date());
// 兼容前端只传一个值,并且非json类型的情况
JSONArray postArray = JSONArray.parseArray(this.isJSONValid(tzsUserInfoDto.getPost()) ? tzsUserInfoDto.getPost() : "[\"" + tzsUserInfoDto.getPost() + "\"]");
JSONArray postArray = JSONArray.parseArray(this.isJSONValid(tzsUserInfoDto.getNewPost()) ? tzsUserInfoDto.getNewPost() : "[\"" + tzsUserInfoDto.getNewPost() + "\"]");
tzsUserInfoDto.setNewPost(JSONArray.toJSONString(postArray));
// 兼容 人员类型为【作业人员】且 【作业项目】含有【电梯修理】项目的为【维保人员】post为“6618”
JSONArray permissionData6552 = tzsUserInfoDto.getPermissionData6552();
......@@ -854,7 +906,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
}
tzsUserInfoDto.setPost(JSONArray.toJSONString(postArray));
String postName = this.setPostName(tzsUserInfoDto.getPost());
String postName = this.setPostName(tzsUserInfoDto.getNewPost());
tzsUserInfoDto.setPostName(postName);
if (!ObjectUtils.isEmpty(selectOne.getAmosUserId())) {
// 添加新的人员与组的关系
......@@ -878,7 +930,8 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
if (userTypeCode.isEmpty()) {
return Collections.emptyList();
}
return iDataDictionaryService.getBaseMapper().selectBatchIds(userTypeCode);
List<String> act = new ArrayList<>(userTypeCode);
return iDataDictionaryService.getBaseMapper().selectBatchIds(act);
}
}
......@@ -151,17 +151,21 @@ public class TzsUserPermissionServiceImpl extends BaseService<TzsUserPermissionD
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.toFormatter();
String expiryDateString = String.valueOf(permissionData.get("expiryDate"));
String expiryDateString = String.valueOf(Optional.ofNullable(permissionData.get("expiryDate")).orElse(""));
if (!ValidationUtil.isEmpty(expiryDateString)) {
LocalDate localDate1 = LocalDate.parse(expiryDateString, formatter);
LocalDateTime localDateTime1 = localDate1.atStartOfDay();
Date expiryDate = Date.from(localDateTime1.atZone(ZoneId.systemDefault()).toInstant());
permission.setExpiryDate(expiryDate);
}
String issueDateString = String.valueOf(permissionData.get("issueDate"));
String issueDateString = String.valueOf(Optional.ofNullable(permissionData.get("issueDate")).orElse(""));
if (!ValidationUtil.isEmpty(issueDateString)) {
LocalDate localDate2 = LocalDate.parse(issueDateString, formatter);
LocalDateTime localDateTime2 = localDate2.atStartOfDay();
Date issueDate = Date.from(localDateTime2.atZone(ZoneId.systemDefault()).toInstant());
permission.setIssueDate(issueDate);
}
permission.setApprovedOrgan((String) permissionData.get("approvedOrgan"));
permission.setCertAttachment(JSONArray.toJSONString(permissionData.get("certAttachment")));
......
......@@ -111,4 +111,23 @@ public class IdxBizJgOtherInfo extends TzsBaseEntity {
@TableField("\"EDIT_STATUS\"")
private String editStatus;
/**
* 信息化管理情况:1-二维码;2-电子标签;99-无
*/
@TableField(value = "\"INFORMATION_SITUATION\"")
private String informationSituation;
/**
* 信息化管理二维码或者电子标签编号
*/
@TableField(value = "\"INFORMATION_MANAGE_CODE\"")
private String informationManageCode;
/**
* 气瓶钢印标识
*/
@TableField(value = "\"CYLINDER_STAMP_ATTACHMENT\"")
private String cylinderStampAttachment;
}
......@@ -200,4 +200,13 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
@TableField("\"WHETHER_SPHERICAL_TANK\"")
private String whetherSphericalTank;
/**
* 气瓶类别(液化石油气瓶、工业气瓶、其他)
* 0:液化石油气瓶
* 1:工业气瓶
* 2:其他
*/
@TableField("\"CYLINDER_CATEGORY\"")
private String cylinderCategory;
}
......@@ -64,5 +64,24 @@ public class OtherInfo extends AbstractEquipBaseEntity {
@TableField(value ="\"SUPERVISORY_CODE\"")
private String supervisoryCode;
/**
* 信息化管理情况:1-二维码;2-电子标签;99-无
*/
@TableField(value = "\"INFORMATION_SITUATION\"")
private String informationSituation;
/**
* 信息化管理二维码或者电子标签编号
*/
@TableField(value = "\"INFORMATION_MANAGE_CODE\"")
private String informationManageCode;
/**
* 气瓶钢印标识
*/
@TableField(value = "\"CYLINDER_STAMP_ATTACHMENT\"")
private String cylinderStampAttachment;
}
package com.yeejoin.amos.boot.module.ymt.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
@AllArgsConstructor
@Getter
public enum InformationManageTypeEnum {
/**
* 信息化管理情况枚举
*/
TYPE_QR_CODE("1", "二维码"),
TYPE_STAMP("2", "二维码"),
TYPE_NO("99", "无");
private String code;
private String name;
public static String getName(String code) {
Optional<String> op = Arrays.stream(InformationManageTypeEnum.values()).filter(e -> e.getCode().equals(code)).map(InformationManageTypeEnum::getName).findFirst();
return op.orElse("");
}
}
......@@ -45,4 +45,15 @@ public interface IdxBizJgRegisterInfoMapper extends BaseMapper<IdxBizJgRegisterI
"GROUP BY " +
"jui.PROJECT_CONTRAPTION")
List<Map<String, Object>> getProjectContraptionList(String useUnitCreditCode);
void updateCylinderCategoryByRecordBatch(@Param("recordList") List<String> recordList, @Param("cylinderCategory") String cylinderCategory);
/**
* 批量更新 CYLINDER_CATEGORY 根据 equCode
*
* @param cylinderCategory 需要更新的参数列表
* @param equCodeList equCode列表
* @return 更新成功返回 true,失败返回 false
*/
Boolean updateCylinderCategoryByEquCodeBatch(@Param("cylinderCategory") String cylinderCategory, @Param("equCodeList") List<String> equCodeList);
}
......@@ -17,6 +17,24 @@
</where>
GROUP BY jui.PROJECT_CONTRAPTION
</select>
<update id="updateCylinderCategoryByRecordBatch">
UPDATE idx_biz_jg_register_info
SET "CYLINDER_CATEGORY" = #{cylinderCategory}
WHERE "RECORD" IN
<foreach collection="recordList" separator="," item="record" open="(" close=")">
#{record}
</foreach>
</update>
<update id="updateCylinderCategoryByEquCodeBatch" parameterType="java.util.List">
UPDATE idx_biz_jg_register_info
SET "CYLINDER_CATEGORY" = #{cylinderCategory}
WHERE "EQU_CODE" IN
<foreach collection="equCodeList" separator="," item="equCode" open="(" close=")">
#{equCode}
</foreach>
</update>
</mapper>
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