Commit f3dc92b1 authored by LiuLin's avatar LiuLin

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

parents 2229af8f 792c9b7d
...@@ -12,10 +12,7 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; ...@@ -12,10 +12,7 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.utils.FeignUtil; import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.*;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
...@@ -41,10 +38,12 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil; ...@@ -41,10 +38,12 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors;
/** /**
* controller层切面 用于用户数据缓存 供 sql自动填充使用 (使用粒度过大的Aop会创建大量代理对象,影响性能,占用内存,考虑使用 * controller层切面 用于用户数据缓存 供 sql自动填充使用 (使用粒度过大的Aop会创建大量代理对象,影响性能,占用内存,考虑使用
...@@ -283,6 +282,14 @@ public class ControllerAop { ...@@ -283,6 +282,14 @@ public class ControllerAop {
stopWatch5.stop(); stopWatch5.stop();
logger.info("获取用户信息====>{}s", stopWatch5.getTotalTimeSeconds()); logger.info("获取用户信息====>{}s", stopWatch5.getTotalTimeSeconds());
List<String> appCodes = new ArrayList<>();
try {
List<ApplicationModel> applicationModelList = Privilege.agencyUserClient.listApps(userList.get(0).getUserId()).getResult();
appCodes = applicationModelList.stream().map(ApplicationModel::getAppCode).collect(Collectors.toList());
} catch (Exception e) {
throw new RuntimeException("获取listApps失败");
}
userList.get(0).setAppCodes(appCodes);
ReginParams regionParams = new ReginParams(); ReginParams regionParams = new ReginParams();
regionParams.setCompany(company); regionParams.setCompany(company);
regionParams.setRole(role); regionParams.setRole(role);
......
...@@ -186,6 +186,23 @@ public class DataDictionaryController extends BaseController { ...@@ -186,6 +186,23 @@ public class DataDictionaryController extends BaseController {
} }
} }
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/getDataDictionary/{type}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据字典类型查询字典", notes = "根据字典类型查询字典")
public ResponseModel<Object> getDataDictionary(@PathVariable String type) throws Exception {
// 数据字典生成树方法 原先通过getCode做主键 现修改为 getSequenceNbr 后期数据字典parent字段保存id 而不要保存code by
// kongfm 2021-09-08
// 数据字典还原 by kongfm 2021-09-09
QueryWrapper<DataDictionary> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", type);
queryWrapper.eq("is_delete", false);
queryWrapper.orderByAsc("sort_num");
Collection<DataDictionary> list = iDataDictionaryService.list(queryWrapper);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY) @TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/dataDictionaryIdFillMenu", method = RequestMethod.GET) @RequestMapping(value = "/dataDictionaryIdFillMenu", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据字典类型查询字典,id为SequenceNbr", notes = "根据字典类型查询字典,id为SequenceNbr") @ApiOperation(httpMethod = "GET", value = "根据字典类型查询字典,id为SequenceNbr", notes = "根据字典类型查询字典,id为SequenceNbr")
......
...@@ -25,6 +25,7 @@ public class DateUtils { ...@@ -25,6 +25,7 @@ public class DateUtils {
public static final String MINUTE_ONLY_PATTERN = "mm"; public static final String MINUTE_ONLY_PATTERN = "mm";
public static final String HOUR_ONLY_PATTERN = "HH"; public static final String HOUR_ONLY_PATTERN = "HH";
public static final String DATE_PATTERN_NUM = "yyyyMMdd"; public static final String DATE_PATTERN_NUM = "yyyyMMdd";
public static final String DATE_PATTERN_MM = "yyyyMM";
public static final String CHN_DATE_PATTERN_YEAR = "yyyy年"; public static final String CHN_DATE_PATTERN_YEAR = "yyyy年";
public static final String CHN_DATE_PATTERN_MONTH = "MM月"; public static final String CHN_DATE_PATTERN_MONTH = "MM月";
public static final String CHN_DATE_PATTERN = "yyyy年MM月dd日"; public static final String CHN_DATE_PATTERN = "yyyy年MM月dd日";
......
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Getter;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.nio.file.Files;
@Getter
public class ByteArrayMultipartFile implements MultipartFile {
private byte[] bytes;
private String name;
private String originalFilename;
private String contentType;
public ByteArrayMultipartFile() {
}
public ByteArrayMultipartFile(String name, String originalFilename, String contentType, byte[] bytes) {
super();
this.name = name;
this.originalFilename = originalFilename;
this.contentType = contentType;
this.bytes = bytes;
}
@Override
public boolean isEmpty() {
return bytes.length == 0;
}
@Override
public long getSize() {
return bytes.length;
}
@Override
public InputStream getInputStream() {
return new ByteArrayInputStream(bytes);
}
@Override
public void transferTo(File destination) throws IOException {
try (OutputStream outputStream = Files.newOutputStream(destination.toPath())) {
outputStream.write(bytes);
}
}
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "JgInstallationAccDto", description = "")
public class JgInstallationAccDto {
String opinion;
JgInstallationNoticeDto model;
}
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.dto; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.dto;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto; import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -95,13 +96,13 @@ public class JgInstallationNoticeDto extends BaseDto { ...@@ -95,13 +96,13 @@ public class JgInstallationNoticeDto extends BaseDto {
private String propertyUnitName; private String propertyUnitName;
@ApiModelProperty(value = "使用单位id") @ApiModelProperty(value = "使用单位id")
private String useUnitId; private String useUnitCreditCode;
@ApiModelProperty(value = "使用单位") @ApiModelProperty(value = "使用单位")
private String useUnitName; private String useUnitName;
@ApiModelProperty(value = "接收机构ID") @ApiModelProperty(value = "接收机构ID")
private String receiveOrgId; private String receiveOrgCreditCode;
@ApiModelProperty(value = "接收机构") @ApiModelProperty(value = "接收机构")
private String receiveOrgName; private String receiveOrgName;
...@@ -200,10 +201,16 @@ public class JgInstallationNoticeDto extends BaseDto { ...@@ -200,10 +201,16 @@ public class JgInstallationNoticeDto extends BaseDto {
@ApiModelProperty(value = "告知设备列表") @ApiModelProperty(value = "告知设备列表")
private List<Map<String, Object>> deviceList; private List<Map<String, Object>> deviceList;
@ApiModelProperty(value = "告知单PDF URL")
private String noticeReportUrl;
public String getFullAddress() { public String getFullAddress() {
return (StringUtils.isEmpty(this.provinceName) ? "" : this.provinceName) return (StringUtils.isEmpty(this.provinceName) ? "" : this.provinceName)
+ (StringUtils.isEmpty(this.cityName) ? "" : this.cityName) + (StringUtils.isEmpty(this.cityName) ? "" : this.cityName)
+ (StringUtils.isEmpty(this.countyName) ? "" : this.countyName) + (StringUtils.isEmpty(this.countyName) ? "" : this.countyName)
+ (StringUtils.isEmpty(this.address) ? "" : this.address); + (StringUtils.isEmpty(this.address) ? "" : this.address);
} }
@ApiModelProperty(value = "设备注册代码")
private String equRegisterCode;
} }
...@@ -335,4 +335,17 @@ public class JgInstallationNotice extends BaseEntity { ...@@ -335,4 +335,17 @@ public class JgInstallationNotice extends BaseEntity {
@TableField("instance_id") @TableField("instance_id")
private String instanceId; private String instanceId;
/**
* 告知单PDF URL
*/
@TableField("notice_report_url")
private String noticeReportUrl;
/**
* 设备注册编码
*/
@TableField("equ_register_code")
private String equRegisterCode;
} }
...@@ -25,7 +25,12 @@ public enum FlowStatusEnum { ...@@ -25,7 +25,12 @@ public enum FlowStatusEnum {
/** /**
* 已驳回 * 已驳回
*/ */
REJECTED(6614, "已驳回"); REJECTED(6614, "已驳回"),
/**
* 已撤回
*/
ROBACK(6615, "已撤回");
private final int code; private final int code;
......
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.api.service; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.api.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto; import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice; import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
...@@ -13,7 +14,7 @@ import java.util.Map; ...@@ -13,7 +14,7 @@ import java.util.Map;
* @author system_generator * @author system_generator
* @date 2023-12-12 * @date 2023-12-12
*/ */
public interface IJgInstallationNoticeService { public interface IJgInstallationNoticeService extends IService<JgInstallationNotice> {
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
...@@ -56,4 +57,12 @@ public interface IJgInstallationNoticeService { ...@@ -56,4 +57,12 @@ public interface IJgInstallationNoticeService {
* @param submitType 保存类型 * @param submitType 保存类型
*/ */
void saveNotice(String submitType, Map<String, JgInstallationNoticeDto> model); void saveNotice(String submitType, Map<String, JgInstallationNoticeDto> model);
/**
* 打印告知单
*
* @param sequenceNbr 主键
* @return pdf文件路径
*/
String generateInstallationNoticeReport(Long sequenceNbr);
} }
...@@ -16,7 +16,8 @@ ...@@ -16,7 +16,8 @@
isn.province_name AS provinceName, isn.province_name AS provinceName,
isn.city_name AS cityName, isn.city_name AS cityName,
isn.county_name AS countyName, isn.county_name AS countyName,
isn.instance_id AS instanceId isn.instance_id AS instanceId,
isn.notice_report_url AS noticeReportUrl
FROM FROM
tzs_jg_installation_notice isn tzs_jg_installation_notice isn
<where> <where>
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
</if> </if>
</if> </if>
<if test="type == 'supervision'"> <if test="type == 'supervision'">
AND isn.notice_status in ('6612', '6613', '6614') AND (isn.notice_status in ('6612', '6613', '6614') or isn.status in('6614') )
</if> </if>
</where> </where>
ORDER BY ORDER BY
...@@ -49,10 +50,22 @@ ...@@ -49,10 +50,22 @@
<select id="queryEquipInformation" resultType="java.util.Map"> <select id="queryEquipInformation" resultType="java.util.Map">
select select
isn.sequence_nbr AS sequenceNbr, isn.sequence_nbr AS sequenceNbr,
isn.install_unit_name AS installUnitName,
isn.apply_no AS applyNo,
isn.province_name AS provinceName,
isn.city_name AS cityName,
isn.county_name AS countyName,
isn.address AS address,
isn.install_start_date AS installStartDate,
isn.install_license_no AS installLicenseNo,
isn.install_license_expiration_date AS installLicenseExpirationDate,
isn.install_leader_name AS installLeaderName,
isn.install_leader_phone AS installLeaderPhone,
isn.use_unit_name AS useUnitName,
isn.equ_register_code AS equRegisterCode,
ri.equ_list AS equList, ri.equ_list AS equList,
ri.equ_category AS equCategory, ri.equ_category AS equCategory,
ri.EQU_DEFINE AS equDefine, ri.EQU_DEFINE AS equDefine,
-- 产品编号
ri.product_name AS productName, ri.product_name AS productName,
ri.brand_name AS brandName, ri.brand_name AS brandName,
ri.equ_type AS equType, ri.equ_type AS equType,
...@@ -77,7 +90,13 @@ ...@@ -77,7 +90,13 @@
fi.produce_country AS produceCountry, fi.produce_country AS produceCountry,
fi.factory_standard AS factoryStandard, fi.factory_standard AS factoryStandard,
fi.product_quality_yield_prove AS productQualityYieldProve, fi.product_quality_yield_prove AS productQualityYieldProve,
fi.ins_use_maintain_explain AS insUseMaintainExplain fi.ins_use_maintain_explain AS insUseMaintainExplain,
ui.safety_manager AS safetyManager,
ui.phone AS safetyManagerPhone,
ui.PROVINCE_NAME AS useUnitProvinceName,
ui.CITY_NAME AS useUnitCityName,
ui.COUNTY_NAME AS useUnitCountyName,
ui.ADDRESS AS useUnitAddress
FROM FROM
tzs_jg_installation_notice isn tzs_jg_installation_notice isn
LEFT JOIN tzs_jg_relation_equip re ON re.business_id = isn.sequence_nbr LEFT JOIN tzs_jg_relation_equip re ON re.business_id = isn.sequence_nbr
...@@ -85,7 +104,9 @@ ...@@ -85,7 +104,9 @@
LEFT JOIN idx_biz_jg_design_info di ON di.record = re.equip_id LEFT JOIN idx_biz_jg_design_info di ON di.record = re.equip_id
LEFT JOIN idx_biz_jg_factory_info fi ON fi.record = re.equip_id LEFT JOIN idx_biz_jg_factory_info fi ON fi.record = re.equip_id
LEFT JOIN idx_biz_jg_inspection_detection_info idi ON idi.record = re.equip_id LEFT JOIN idx_biz_jg_inspection_detection_info idi ON idi.record = re.equip_id
LEFT JOIN idx_biz_jg_use_info ui ON ui.record = re.equip_id
WHERE WHERE
isn.sequence_nbr = #{sequenceNbr} isn.sequence_nbr = #{sequenceNbr}
LIMIT 1
</select> </select>
</mapper> </mapper>
...@@ -31,6 +31,12 @@ ...@@ -31,6 +31,12 @@
<version>1.10.1</version> <version>1.10.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>19.5jdk</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
package com.yeejoin.amos.boot.module.jg.biz.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationAccDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
/**
* 安装告知
*
* @author system_generator
* @date 2023-12-12
*/
@RestController
@Api(tags = "安装告知工作流相关Api")
@RequestMapping(value = "/jg-installation-workflow")
public class JgInstallationByWorkFlowController {
@Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeServiceImpl;
/**
* 提交
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/submit")
@ApiOperation(httpMethod = "POST", value = "安装告知提交", notes = "安装告知提交")
public ResponseModel<JgInstallationNoticeDto> submit(@RequestBody JgInstallationNoticeDto model, String op) {
// TODO 发起安装告知流程
// jgInstallationNoticeServiceImpl.submit(model, op);
return ResponseHelper.buildResponse(model);
}
/**
* 撤销
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/cancel")
@ApiOperation(httpMethod = "POST", value = "安装告知撤销", notes = "安装告知撤销")
public ResponseModel<JgInstallationNoticeDto> cancel(@RequestBody Map<String, Object> model) {
JgInstallationNoticeDto installationInfo = BeanUtil.mapToBean(((LinkedHashMap) model.get("installationInfo")), JgInstallationNoticeDto.class, true);
if (Objects.isNull(installationInfo)) {
throw new IllegalArgumentException("参数installationInfo不能为空");
}
jgInstallationNoticeServiceImpl.cancel(installationInfo);
return ResponseHelper.buildResponse(installationInfo);
}
/**
* 受理
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/accept")
@ApiOperation(httpMethod = "POST", value = "安装告知受理", notes = "安装告知受理")
public ResponseModel<JgInstallationNoticeDto> accept(@RequestBody Map<String, Object> model, String op) {
// TODO 受理安装告知流程
LinkedHashMap model1 = (LinkedHashMap)model.get("model");
LinkedHashMap form = (LinkedHashMap)model1.get("form");
LinkedHashMap installationInfo = (LinkedHashMap)form.get("installationInfo");
JgInstallationNoticeDto jgInstallationNoticeDto = JSON.parseObject(JSON.toJSONString(installationInfo), JgInstallationNoticeDto.class);
jgInstallationNoticeServiceImpl.accept(jgInstallationNoticeDto,op);
return ResponseHelper.buildResponse(null);
}
}
package com.yeejoin.amos.boot.module.jg.biz.controller; package com.yeejoin.amos.boot.module.jg.biz.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import org.omg.PortableInterceptor.SUCCESSFUL;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil; import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto; import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice; import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl; import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
...@@ -24,8 +18,6 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper; ...@@ -24,8 +18,6 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
...@@ -41,7 +33,7 @@ import java.util.Objects; ...@@ -41,7 +33,7 @@ import java.util.Objects;
public class JgInstallationNoticeController extends BaseController { public class JgInstallationNoticeController extends BaseController {
@Autowired @Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeServiceImpl; private IJgInstallationNoticeService iJgInstallationNoticeService;
/** /**
* 新增 * 新增
...@@ -49,12 +41,12 @@ public class JgInstallationNoticeController extends BaseController { ...@@ -49,12 +41,12 @@ public class JgInstallationNoticeController extends BaseController {
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save") @PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增安装告知", notes = "新增安装告知") @ApiOperation(httpMethod = "POST", value = "新增安装告知", notes = "新增安装告知")
public ResponseModel<String> save(@RequestParam String submitType,@RequestBody Map<String, JgInstallationNoticeDto> model) { public ResponseModel<String> save(@RequestParam String submitType, @RequestBody Map<String, JgInstallationNoticeDto> model) {
jgInstallationNoticeServiceImpl.saveNotice(submitType, model); iJgInstallationNoticeService.saveNotice(submitType, model);
return ResponseHelper.buildResponse(""); return ResponseHelper.buildResponse("");
} }
/** /**
* 根据sequenceNbr更新 * 根据sequenceNbr更新
...@@ -69,7 +61,7 @@ public class JgInstallationNoticeController extends BaseController { ...@@ -69,7 +61,7 @@ public class JgInstallationNoticeController extends BaseController {
if (Objects.isNull(installationInfo)) { if (Objects.isNull(installationInfo)) {
throw new IllegalArgumentException("参数installationInfo不能为空"); throw new IllegalArgumentException("参数installationInfo不能为空");
} }
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.updateInstallationNotice(installationInfo, op)); return ResponseHelper.buildResponse(iJgInstallationNoticeService.updateInstallationNotice(installationInfo, op));
} }
/** /**
...@@ -81,7 +73,7 @@ public class JgInstallationNoticeController extends BaseController { ...@@ -81,7 +73,7 @@ public class JgInstallationNoticeController extends BaseController {
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除安装告知", notes = "根据sequenceNbr删除安装告知") @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除安装告知", notes = "根据sequenceNbr删除安装告知")
public ResponseModel<Boolean> deleteBySequenceNbr(@RequestParam(value = "sequenceNbr") Long[] sequenceNbr) { public ResponseModel<Boolean> deleteBySequenceNbr(@RequestParam(value = "sequenceNbr") Long[] sequenceNbr) {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.removeById(sequenceNbr)); return ResponseHelper.buildResponse(iJgInstallationNoticeService.removeById(sequenceNbr));
} }
/** /**
...@@ -94,7 +86,7 @@ public class JgInstallationNoticeController extends BaseController { ...@@ -94,7 +86,7 @@ public class JgInstallationNoticeController extends BaseController {
@ApiOperation(value = "根据sequenceNbr删除维保合同备案", notes = "根据sequenceNbr删除维保合同备案") @ApiOperation(value = "根据sequenceNbr删除维保合同备案", notes = "根据sequenceNbr删除维保合同备案")
public ResponseModel<Boolean> deleteForBatch(@RequestParam("sequenceNbrs") Long[] sequenceNbrs) { public ResponseModel<Boolean> deleteForBatch(@RequestParam("sequenceNbrs") Long[] sequenceNbrs) {
try { try {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.deleteForBatch(sequenceNbrs)); return ResponseHelper.buildResponse(iJgInstallationNoticeService.deleteForBatch(sequenceNbrs));
} catch (Exception e) { } catch (Exception e) {
return CommonResponseUtil.failure(e.getMessage()); return CommonResponseUtil.failure(e.getMessage());
} }
...@@ -110,7 +102,7 @@ public class JgInstallationNoticeController extends BaseController { ...@@ -110,7 +102,7 @@ public class JgInstallationNoticeController extends BaseController {
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个安装告知", notes = "根据sequenceNbr查询单个安装告知") @ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个安装告知", notes = "根据sequenceNbr查询单个安装告知")
public ResponseModel<Map<String, public ResponseModel<Map<String,
Map<String, Object>>> selectOne(@RequestParam("sequenceNbr") Long sequenceNbr) { Map<String, Object>>> selectOne(@RequestParam("sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.queryBySequenceNbr(sequenceNbr)); return ResponseHelper.buildResponse(iJgInstallationNoticeService.queryBySequenceNbr(sequenceNbr));
} }
...@@ -131,18 +123,16 @@ public class JgInstallationNoticeController extends BaseController { ...@@ -131,18 +123,16 @@ public class JgInstallationNoticeController extends BaseController {
@RequestBody(required = false) JgInstallationNoticeDto model @RequestBody(required = false) JgInstallationNoticeDto model
) { ) {
Page<JgInstallationNotice> page = new Page<>(current, size); Page<JgInstallationNotice> page = new Page<>(current, size);
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.queryForJgInstallationNoticePage(page, model, type)); return ResponseHelper.buildResponse(iJgInstallationNoticeService.queryForJgInstallationNoticePage(page, model, type));
} }
/** /**
* 列表全部数据查询 * 生成告知单
*
* @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "安装告知列表全部数据查询", notes = "安装告知列表全部数据查询") @ApiOperation(httpMethod = "GET", value = "安装告知列表全部数据查询", notes = "安装告知列表全部数据查询")
@GetMapping(value = "/list") @GetMapping(value = "/generate-report")
public ResponseModel<List<JgInstallationNoticeDto>> selectForList() { public ResponseModel<String> generateReport(@RequestParam("sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.queryForJgInstallationNoticeList()); return ResponseHelper.buildResponse(iJgInstallationNoticeService.generateInstallationNoticeReport(sequenceNbr));
} }
} }
package com.yeejoin.amos.boot.module.jg.biz.feign;
import com.yeejoin.amos.boot.biz.common.feign.FeignConfiguration;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.Map;
@FeignClient(name = "TZS-YMT-LL", url = "172.16.3.155:11000", path = "/ymt", configuration =
{FeignConfiguration.class})
public interface TzsServiceFeignClient {
/**
* 创建监管码及96333
*
* @param map 请求体
* @return
*/
@RequestMapping(value = "/equipment-category/createSupervisorCode", method = RequestMethod.POST)
ResponseModel<Map<String, Object>> createCode(@RequestBody Map<String, Object> map);
}
...@@ -3,11 +3,11 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl; ...@@ -3,11 +3,11 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.biz.dao.ESElavtorRepository;
import com.yeejoin.amos.boot.module.jg.biz.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.jg.biz.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgConstructionInfoService; import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgConstructionInfoService;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgDesignInfoService; import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgDesignInfoService;
...@@ -38,7 +38,6 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo; ...@@ -38,7 +38,6 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.CategoryOtherInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.CategoryOtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgTechParamsElevatorMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.SuperviseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.SuperviseInfoMapper;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.classic.QueryParser;
...@@ -54,15 +53,16 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -54,15 +53,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
...@@ -163,7 +163,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -163,7 +163,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
/** /**
* 删除设备注册信息(批量删除) * 删除设备注册信息(批量删除)
* *
* @param sequenceNbrList * @param map
* @return * @return
*/ */
public boolean batchDeleteByRecord(Map<String, Object> map) { public boolean batchDeleteByRecord(Map<String, Object> map) {
...@@ -204,63 +204,118 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -204,63 +204,118 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
//使用信息 //使用信息
IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.getOneData(record); IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(useInfo)) { if (!ValidationUtil.isEmpty(useInfo)) {
Map<String, Object> useInfoMap = Bean.BeantoMap(useInfo); Map<String, Object> useInfoMap = new HashMap<>();
String[] fields = null;
try {
useInfoMap = this.convertCamelToUnderscore(useInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
useInfoMap.put("USEINFO_SEQ", useInfo.getSequenceNbr()); useInfoMap.put("USEINFO_SEQ", useInfo.getSequenceNbr());
objMap.putAll(useInfoMap); objMap.putAll(useInfoMap);
} }
//设计制造 //设计制造
IdxBizJgDesignInfo designInfo = iIdxBizJgDesignInfoService.getOneData(record); IdxBizJgDesignInfo designInfo = iIdxBizJgDesignInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(designInfo)) { if (!ValidationUtil.isEmpty(designInfo)) {
Map<String, Object> designInfoMap = Bean.BeantoMap(designInfo); Map<String, Object> designInfoMap = new HashMap<>();
String[] fields = {"DESIGN_DOC", "DESIGN_STANDARD"};
try {
designInfoMap = this.convertCamelToUnderscore(designInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
designInfoMap.put("DESIGNINFO_SEQ", designInfo.getSequenceNbr()); designInfoMap.put("DESIGNINFO_SEQ", designInfo.getSequenceNbr());
objMap.putAll(designInfoMap); objMap.putAll(designInfoMap);
} }
//制造信息 //制造信息
IdxBizJgFactoryInfo factoryInfo = iIdxBizJgFactoryInfoService.getOneData(record); IdxBizJgFactoryInfo factoryInfo = iIdxBizJgFactoryInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(factoryInfo)) { if (!ValidationUtil.isEmpty(factoryInfo)) {
Map<String, Object> factoryInfoMap = Bean.BeantoMap(factoryInfo); Map<String, Object> factoryInfoMap = new HashMap<>();
String[] fields = {"FACTORY_STANDARD", "PRODUCT_QUALITY_YIELD_PROVE", "INS_USE_MAINTAIN_EXPLAIN"};
try {
factoryInfoMap = this.convertCamelToUnderscore(factoryInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
factoryInfoMap.put("FACTORYINFO_SEQ", factoryInfo.getSequenceNbr()); factoryInfoMap.put("FACTORYINFO_SEQ", factoryInfo.getSequenceNbr());
objMap.putAll(factoryInfoMap); objMap.putAll(factoryInfoMap);
} }
//施工信息 //施工信息
IdxBizJgConstructionInfo constructionInfo = iIdxBizJgConstructionInfoService.getOneData(record); IdxBizJgConstructionInfo constructionInfo = iIdxBizJgConstructionInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(constructionInfo)) { if (!ValidationUtil.isEmpty(constructionInfo)) {
Map<String, Object> constructionInfoMap = Bean.BeantoMap(constructionInfo); Map<String, Object> constructionInfoMap = new HashMap<>();
String[] fields = null;
try {
constructionInfoMap = this.convertCamelToUnderscore(constructionInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
constructionInfoMap.put("CONSTRUCTIONINFO_SEQ", constructionInfo.getSequenceNbr()); constructionInfoMap.put("CONSTRUCTIONINFO_SEQ", constructionInfo.getSequenceNbr());
objMap.putAll(constructionInfoMap); objMap.putAll(constructionInfoMap);
} }
//注册登记 //注册登记
IdxBizJgRegisterInfo registerInfo = this.getOne(new QueryWrapper<IdxBizJgRegisterInfo>().eq("RECORD", record)); IdxBizJgRegisterInfo registerInfo = this.getOne(new QueryWrapper<IdxBizJgRegisterInfo>().eq("RECORD", record));
if (!ValidationUtil.isEmpty(registerInfo)) { if (!ValidationUtil.isEmpty(registerInfo)) {
Map<String, Object> registerInfoMap = Bean.BeantoMap(registerInfo); Map<String, Object> registerInfoMap = new HashMap<>();
String[] fields = {"PRODUCT_PHOTO"};
try {
registerInfoMap = this.convertCamelToUnderscore(registerInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
registerInfoMap.put("REGISTERINFO_SEQ", registerInfo.getSequenceNbr()); registerInfoMap.put("REGISTERINFO_SEQ", registerInfo.getSequenceNbr());
registerInfoMap.put("SEQUENCE_NBR", registerInfo.getSequenceNbr());
objMap.putAll(registerInfoMap); objMap.putAll(registerInfoMap);
} }
//维保备案 //维保备案
IdxBizJgMaintenanceRecordInfo maintenanceRecordInfo = iIdxBizJgMaintenanceRecordInfoService.getOneData(record); IdxBizJgMaintenanceRecordInfo maintenanceRecordInfo = iIdxBizJgMaintenanceRecordInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(maintenanceRecordInfo)) { if (!ValidationUtil.isEmpty(maintenanceRecordInfo)) {
Map<String, Object> maintenanceRecordInfoMap = Bean.BeantoMap(maintenanceRecordInfo); Map<String, Object> maintenanceRecordInfoMap = new HashMap<>();
String[] fields = null;
try {
maintenanceRecordInfoMap = this.convertCamelToUnderscore(maintenanceRecordInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
maintenanceRecordInfoMap.put("MAINTENANCERECORDINFO_SEQ", maintenanceRecordInfo.getSequenceNbr()); maintenanceRecordInfoMap.put("MAINTENANCERECORDINFO_SEQ", maintenanceRecordInfo.getSequenceNbr());
objMap.putAll(maintenanceRecordInfoMap); objMap.putAll(maintenanceRecordInfoMap);
} }
//监督管理 //监督管理
IdxBizJgSupervisionInfo supervisionInfo = iIdxBizJgSupervisionInfoService.getOneData(record); IdxBizJgSupervisionInfo supervisionInfo = iIdxBizJgSupervisionInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(supervisionInfo)) { if (!ValidationUtil.isEmpty(supervisionInfo)) {
Map<String, Object> supervisionInfoMap = Bean.BeantoMap(supervisionInfo); Map<String, Object> supervisionInfoMap = new HashMap<>();
String[] fields = null;
try {
supervisionInfoMap = this.convertCamelToUnderscore(supervisionInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
supervisionInfoMap.put("SUPERVISIONINFO_SEQ", supervisionInfo.getSequenceNbr()); supervisionInfoMap.put("SUPERVISIONINFO_SEQ", supervisionInfo.getSequenceNbr());
objMap.putAll(supervisionInfoMap); objMap.putAll(supervisionInfoMap);
} }
//其他信息 //其他信息
IdxBizJgOtherInfo otherInfo = iIdxBizJgOtherInfoService.getOneData(record); IdxBizJgOtherInfo otherInfo = iIdxBizJgOtherInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(otherInfo)) { if (!ValidationUtil.isEmpty(otherInfo)) {
Map<String, Object> otherInfoMap = Bean.BeantoMap(otherInfo); Map<String, Object> otherInfoMap = new HashMap<>();
String[] fields = null;
try {
otherInfoMap = this.convertCamelToUnderscore(otherInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
otherInfoMap.put("OTHERINFO_SEQ", otherInfo.getSequenceNbr()); otherInfoMap.put("OTHERINFO_SEQ", otherInfo.getSequenceNbr());
objMap.putAll(otherInfoMap); objMap.putAll(otherInfoMap);
} }
//检验检测 //检验检测
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.getOneData(record); IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(inspectionDetectionInfo)) { if (!ValidationUtil.isEmpty(inspectionDetectionInfo)) {
Map<String, Object> inspectionDetectionInfoMap = Bean.BeantoMap(inspectionDetectionInfo); Map<String, Object> inspectionDetectionInfoMap = new HashMap<>();
String[] fields = {"INSPECT_REPORT"};
try {
inspectionDetectionInfoMap = this.convertCamelToUnderscore(inspectionDetectionInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
inspectionDetectionInfoMap.put("INSPECTIONDETECTIONINFO_SEQ", inspectionDetectionInfo.getSequenceNbr()); inspectionDetectionInfoMap.put("INSPECTIONDETECTIONINFO_SEQ", inspectionDetectionInfo.getSequenceNbr());
objMap.putAll(inspectionDetectionInfoMap); objMap.putAll(inspectionDetectionInfoMap);
} }
...@@ -268,7 +323,13 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -268,7 +323,13 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
//电梯 //电梯
IdxBizJgTechParamsElevator elevator = iIdxBizJgTechParamsElevatorService.getOneData(record); IdxBizJgTechParamsElevator elevator = iIdxBizJgTechParamsElevatorService.getOneData(record);
if (!ValidationUtil.isEmpty(elevator)) { if (!ValidationUtil.isEmpty(elevator)) {
Map<String, Object> elevatorMap = Bean.BeantoMap(elevator); Map<String, Object> elevatorMap = new HashMap<>();
String[] fields = {"EXPLOSIONPROOF_SIGN_COMPLETE"};
try {
elevatorMap = this.convertCamelToUnderscore(elevator, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
elevatorMap.put("ELEVATOR_SEQ", elevator.getSequenceNbr()); elevatorMap.put("ELEVATOR_SEQ", elevator.getSequenceNbr());
objMap.putAll(elevatorMap); objMap.putAll(elevatorMap);
} }
...@@ -283,14 +344,26 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -283,14 +344,26 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
//主要零部件 //主要零部件
IdxBizJgMainParts mainParts = iIdxBizJgMainPartsService.getOneData(record); IdxBizJgMainParts mainParts = iIdxBizJgMainPartsService.getOneData(record);
if (!ValidationUtil.isEmpty(mainParts)) { if (!ValidationUtil.isEmpty(mainParts)) {
Map<String, Object> mainPartsMap = Bean.BeantoMap(mainParts); Map<String, Object> mainPartsMap = new HashMap<>();
String[] fields = null;
try {
mainPartsMap = this.convertCamelToUnderscore(mainParts, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
mainPartsMap.put("MAINPARTS_SEQ", mainParts.getSequenceNbr()); mainPartsMap.put("MAINPARTS_SEQ", mainParts.getSequenceNbr());
objMap.putAll(mainPartsMap); objMap.putAll(mainPartsMap);
} }
//安全附件 //安全附件
IdxBizJgProtectionDevices protectionDevices = iIdxBizJgProtectionDevicesService.getOneData(record); IdxBizJgProtectionDevices protectionDevices = iIdxBizJgProtectionDevicesService.getOneData(record);
if (!ValidationUtil.isEmpty(protectionDevices)) { if (!ValidationUtil.isEmpty(protectionDevices)) {
Map<String, Object> protectionDevicesMap = Bean.BeantoMap(protectionDevices); Map<String, Object> protectionDevicesMap = new HashMap<>();
String[] fields = null;
try {
protectionDevicesMap = this.convertCamelToUnderscore(protectionDevices, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
protectionDevicesMap.put("PROTECTIONDEVICES_SEQ", protectionDevices.getSequenceNbr()); protectionDevicesMap.put("PROTECTIONDEVICES_SEQ", protectionDevices.getSequenceNbr());
objMap.putAll(protectionDevicesMap); objMap.putAll(protectionDevicesMap);
} }
...@@ -358,31 +431,36 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -358,31 +431,36 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
} }
} }
// 默认条件【STATUS===""】 // 默认条件【STATUS==="" || null
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.matchQuery("STATUS", "null")); meBuilder.must(QueryBuilders.boolQuery()
.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("STATUS")))
.should(QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery("STATUS",""))));
boolMust.must(meBuilder); boolMust.must(meBuilder);
String queryType = map.getString("QUERY_TYPE"); String queryType = map.getString("QUERY_TYPE");
// //查询 安装告知【可告知设备列表】【EQU_STATE==="" // //查询 安装告知【可告知设备列表】【EQU_STATE=== null
if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "AZ")) { if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "AZ")) {
BoolQueryBuilder azBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder azBuilder = QueryBuilders.boolQuery();
azBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE")); azBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
boolMust.must(azBuilder); boolMust.must(azBuilder);
} }
//查询 维保备案【可绑定设备列表】【EQU_STATE==="" && INSPECT_REPORT!==9999(默认占位值)】 //查询 维保备案【可绑定设备列表】【(EQU_STATE=== null) && (INSPECT_REPORT!=="" && !null)】
if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "WB")) { if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "WB")) {
BoolQueryBuilder wbBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder wbBuilder = QueryBuilders.boolQuery();
wbBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE")); wbBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
wbBuilder.mustNot(QueryBuilders.matchQuery("INSPECT_REPORT", 9999)); wbBuilder.must(QueryBuilders.existsQuery("INSPECT_REPORT"));
wbBuilder.mustNot(QueryBuilders.matchPhraseQuery("INSPECT_REPORT",""));
boolMust.must(wbBuilder); boolMust.must(wbBuilder);
} }
//查询 使用登记【可选设备列表】【EQU_STATUS==="" && INSPECT_REPORT!==9999(默认占位值) && USE_ORG_CODE!=="" //查询 使用登记【可选设备列表】【EQU_STATUS=== null && (INSPECT_REPORT!=="" && !null) && (USE_ORG_CODE!=="" && !null)
if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "SY")) { if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "SY")) {
BoolQueryBuilder syBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder syBuilder = QueryBuilders.boolQuery();
syBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE")); syBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
syBuilder.mustNot(QueryBuilders.matchQuery("INSPECT_REPORT", 9999)); syBuilder.must(QueryBuilders.existsQuery("INSPECT_REPORT"));
syBuilder.mustNot(QueryBuilders.matchQuery("USE_ORG_CODE", "")); syBuilder.mustNot(QueryBuilders.matchPhraseQuery("INSPECT_REPORT",""));
syBuilder.must(QueryBuilders.existsQuery("USE_ORG_CODE"));
syBuilder.mustNot(QueryBuilders.matchPhraseQuery("USE_ORG_CODE",""));
boolMust.must(syBuilder); boolMust.must(syBuilder);
} }
...@@ -455,7 +533,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -455,7 +533,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String record = null; String record = null;
LinkedHashMap equipmentInfoForm = (LinkedHashMap) map.get(EQUIPMENT_INFO_FORM_ID); LinkedHashMap equipmentInfoForm = (LinkedHashMap) map.get(EQUIPMENT_INFO_FORM_ID);
//操作类型 //操作类型
String operateType = ValidationUtil.isEmpty(String.valueOf(equipmentInfoForm.get("SEQUENCE_NBR"))) ? OPERATESAVE : OPERATEEDIT; String operateType = ValidationUtil.isEmpty(equipmentInfoForm.get("SEQUENCE_NBR")) ? OPERATESAVE : OPERATEEDIT;
record = OPERATESAVE.equals(operateType) ? UUID.randomUUID().toString() : equipmentInfoForm.get("RECORD").toString(); record = OPERATESAVE.equals(operateType) ? UUID.randomUUID().toString() : equipmentInfoForm.get("RECORD").toString();
//使用信息 //使用信息
...@@ -565,9 +643,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -565,9 +643,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
Map<String, Object> map = categoryOtherInfoMapper.selectDataById(id); Map<String, Object> map = categoryOtherInfoMapper.selectDataById(id);
categoryOtherInfoMapper.updateEsStatus(id); categoryOtherInfoMapper.updateEsStatus(id);
ESEquipmentCategoryDto dto = JSON.parseObject(toJSONString(map), ESEquipmentCategoryDto.class); ESEquipmentCategoryDto dto = JSON.parseObject(toJSONString(map), ESEquipmentCategoryDto.class);
// 默认赋值占位,方便es条件搜索时使用
dto.setSTATUS("null");
dto.setEQU_STATE(9999);
Optional<ESEquipmentCategoryDto> data = esEquipmentCategory.findById(id); Optional<ESEquipmentCategoryDto> data = esEquipmentCategory.findById(id);
if (!ObjectUtils.isEmpty(data)) { if (!ObjectUtils.isEmpty(data)) {
esEquipmentCategory.deleteById(id); esEquipmentCategory.deleteById(id);
...@@ -616,4 +691,27 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -616,4 +691,27 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
} }
} }
/**
* 将对象的属性由驼峰转为纯大写下划线格式
*
* @param object
* @return
* @throws IllegalAccessException
*/
public static Map<String, Object> convertCamelToUnderscore(Object object, String[] strToJsonArrayFields) throws IllegalAccessException {
Map<String, Object> result = new HashMap<>();
Class<?> clazz = object.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
String underscoreFieldName = StringUtils.camelToUnderline(fieldName).toUpperCase();
Object value = field.get(object);
//需要转为jsonArray的字段
if (!ValidationUtil.isEmpty(strToJsonArrayFields) && Arrays.asList(strToJsonArrayFields).contains(underscoreFieldName)) {
value = JSON.parseArray((String) field.get(object));
}
result.put(underscoreFieldName.toUpperCase(), value);
}
return result;
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.biz.service.impl; package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.aspose.words.SaveFormat;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.dto.ByteArrayMultipartFile;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto; import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice; import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRelationEquip; import com.yeejoin.amos.boot.module.jg.api.entity.JgRelationEquip;
...@@ -12,23 +15,48 @@ import com.yeejoin.amos.boot.module.jg.api.enums.FlowStatusEnum; ...@@ -12,23 +15,48 @@ import com.yeejoin.amos.boot.module.jg.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgRelationEquipMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgRelationEquipMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService; import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.utils.JsonUtils; import com.yeejoin.amos.boot.module.jg.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.ymt.api.entity.OtherInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo;
import com.yeejoin.amos.boot.module.jg.biz.utils.ImageUtils;
import com.yeejoin.amos.boot.module.jg.biz.utils.WordTemplateUtils;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.boot.module.ymt.api.service.ICreateCodeService; import com.yeejoin.amos.boot.module.ymt.api.service.ICreateCodeService;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.workflow.Workflow; import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO; import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.AjaxResult; import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsJgOtherInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsJgRegistrationInfo;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO; import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.text.ParseException;
/** /**
* 服务实现类 * 服务实现类
...@@ -37,18 +65,53 @@ import java.util.stream.Collectors; ...@@ -37,18 +65,53 @@ import java.util.stream.Collectors;
* @date 2023-12-12 * @date 2023-12-12
*/ */
@Service @Service
public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationNoticeDto, JgInstallationNotice, JgInstallationNoticeMapper> implements IJgInstallationNoticeService { public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationNoticeDto,JgInstallationNotice,JgInstallationNoticeMapper> implements IJgInstallationNoticeService {
public static final String SUBMIT_TYPE_FLOW = "1"; public static final String SUBMIT_TYPE_FLOW = "1";
public static final String PROCESS_DEFINITION_KEY = "installationNotification"; public static final String PROCESS_DEFINITION_KEY = "installationNotification";
public static final String TABLE_PAGE_ID = "1734141426742095873"; public static final String TABLE_PAGE_ID = "1734141426742095873";
//西安行政区划code
private static final String XIAN = "610100";
//咸阳行政区划code
private static final String XIAN_YANG = "610400";
@Autowired @Autowired
private JgRelationEquipMapper jgRelationEquipMapper; EquipmentCategoryMapper equipmentCategoryMapper;
@Autowired @Autowired
private JgInstallationNoticeMapper jgInstallationNoticeMapper; JgRelationEquipMapper jgRelationEquipMapper;
@Autowired @Autowired
private JgInstallationNoticeMapper jgInstallationNoticeMapper;
@Autowired
private ICreateCodeService iCreateCodeService; private ICreateCodeService iCreateCodeService;
// @Autowired
// private EquipmentCategoryServiceImpl equipmentCategoryService;
@Autowired
RegistrationInfoMapper tzsJgRegistrationInfoMapper;
@Autowired
OtherInfoMapper tzsJgOtherInfoMapper;
@Autowired
TzsServiceFeignClient tzsServiceFeignClient;
public static byte[] file2byte(File file) {
try {
FileInputStream in = new FileInputStream(file);
//当文件没有结束时,每次读取一个字节显示
byte[] data = new byte[in.available()];
in.read(data);
in.close();
return data;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
...@@ -60,15 +123,34 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -60,15 +123,34 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
public Map<String, Map<String, Object>> queryBySequenceNbr(Long sequenceNbr) { public Map<String, Map<String, Object>> queryBySequenceNbr(Long sequenceNbr) {
// 安装告知信息 // 安装告知信息
JgInstallationNotice notice = jgInstallationNoticeMapper.selectById(sequenceNbr); JgInstallationNotice notice = jgInstallationNoticeMapper.selectById(sequenceNbr);
if (Objects.isNull(notice)) {
return null;
}
Map<String, Object> installationInfo = BeanUtil.beanToMap(notice); Map<String, Object> installationInfo = BeanUtil.beanToMap(notice);
installationInfo.put("province", notice.getProvince() + "_" + notice.getProvinceName()); installationInfo.put("province", notice.getProvince() + "_" + notice.getProvinceName());
installationInfo.put("city", notice.getCity() + "_" + notice.getCityName()); installationInfo.put("city", notice.getCity() + "_" + notice.getCityName());
installationInfo.put("county", notice.getCounty() + "_" + notice.getCountyName()); installationInfo.put("county", notice.getCounty() + "_" + notice.getCountyName());
installationInfo.put("useUnitCreditCode", notice.getUseUnitCreditCode() + "_" + notice.getUseUnitName());
installationInfo.put("receiveOrgCreditCode", notice.getReceiveOrgCreditCode() + "_" + notice.getReceiveOrgName());
installationInfo.put("inspectUnitId", notice.getInspectUnitId() + "_" + notice.getInspectUnitName());
String[] fields = {"productPhoto", "designDoc", "designStandard", "factoryStandard",
"productQualityYieldProve", "insUseMaintainExplain", "inspectReport",
"proxyStatementAttachment", "installContractAttachment"};
// 设备信息 // 设备信息
List<Map<String, Object>> equipmentInfos = jgInstallationNoticeMapper.queryEquipInformation(sequenceNbr); List<Map<String, Object>> equipmentInfos = jgInstallationNoticeMapper.queryEquipInformation(sequenceNbr);
for (String s:fields) {
if(installationInfo.containsKey(s)) {
installationInfo.put(s, JSON.parseArray(installationInfo.get(s).toString()));
}
if(equipmentInfos.get(0).containsKey(s)) {
equipmentInfos.get(0).put(s, JSON.parseArray(equipmentInfos.get(0).get(s).toString()));
}
}
return new HashMap<String, Map<String, Object>>() {{ return new HashMap<String, Map<String, Object>>() {{
this.put("installationInfo", installationInfo); this.put("installationInfo", installationInfo);
this.put("equipmentInfo", equipmentInfos.get(0)); this.put("equipmentInfo", equipmentInfos.get(0));
...@@ -97,13 +179,6 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -97,13 +179,6 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
dto.setBusinessKey("1"); dto.setBusinessKey("1");
try { try {
ajaxResult = Workflow.taskClient.startByVariable(dto); ajaxResult = Workflow.taskClient.startByVariable(dto);
String instanceId = ((Map) ajaxResult.get("data")).get("id").toString();
noticeDto.setInstanceId(instanceId);
noticeDto.setStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
noticeDto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
JgInstallationNotice bean = new JgInstallationNotice();
BeanUtils.copyProperties(noticeDto, bean);
jgInstallationNoticeMapper.updateById(bean);
} catch (Exception e) { } catch (Exception e) {
log.error("提交失败:{}", e); log.error("提交失败:{}", e);
} }
...@@ -124,8 +199,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -124,8 +199,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
AjaxResult ajaxResult1; AjaxResult ajaxResult1;
try { try {
ajaxResult1 = Workflow.taskClient.completeByTask(taskId, taskResultDTO); ajaxResult1 = Workflow.taskClient.completeByTask(taskId, taskResultDTO);
if (ObjectUtils.isEmpty(ajaxResult1)) { if (ajaxResult1.get("code").equals(200)) {
noticeDto.setStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode())); noticeDto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
JgInstallationNotice bean = new JgInstallationNotice(); JgInstallationNotice bean = new JgInstallationNotice();
BeanUtils.copyProperties(noticeDto, bean); BeanUtils.copyProperties(noticeDto, bean);
jgInstallationNoticeMapper.updateById(bean); jgInstallationNoticeMapper.updateById(bean);
...@@ -133,9 +208,22 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -133,9 +208,22 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
} catch (Exception e) { } catch (Exception e) {
log.error("提交失败:{}", e); log.error("提交失败:{}", e);
} }
// 生成告知单
JgInstallationNotice jgInstallationNotice = this.getById(noticeDto.getSequenceNbr());
if (String.valueOf(FlowStatusEnum.SUBMITTED.getCode()).equals(jgInstallationNotice.getNoticeStatus())) {
String reportUrl = this.generateInstallationNoticeReport(jgInstallationNotice.getSequenceNbr());
if (StringUtils.hasText(reportUrl)) {
jgInstallationNotice.setNoticeReportUrl(reportUrl);
jgInstallationNoticeMapper.updateById(jgInstallationNotice);
}
}
return noticeDto; return noticeDto;
} }
/** /**
* 分页查询 * 分页查询
* *
...@@ -194,6 +282,113 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -194,6 +282,113 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
return this.updateBatchById(jgInstallationNotices); return this.updateBatchById(jgInstallationNotices);
} }
/**
* 打印安装告知单
*
* @param sequenceNbr 主键
* @return pdf文件路径
*/
@Override
public String generateInstallationNoticeReport(Long sequenceNbr) {
if (Objects.isNull(sequenceNbr)) {
throw new IllegalArgumentException("参数不能为空");
}
JgInstallationNotice jgInstallationNotice = this.getById(sequenceNbr);
List<Map<String, Object>> informationList = jgInstallationNoticeMapper.queryEquipInformation(sequenceNbr);
if (Objects.isNull(jgInstallationNotice) || CollectionUtils.isEmpty(informationList)) {
throw new IllegalArgumentException("安装告知单不存在");
}
Map<String, Object> installation = informationList.get(0);
Function<String, String> getValue = key -> installation.getOrDefault(key, "").toString();
// 组装模板变量
Map<String, Object> placeholders = new HashMap<>();
placeholders.put("sequenceNbr", getValue.apply("sequenceNbr"));
placeholders.put("installUnitName", getValue.apply("installUnitName"));
placeholders.put("applyNo", getValue.apply("applyNo"));
placeholders.put("productName", getValue.apply("productName"));
placeholders.put("equipType", getValue.apply("equType"));
placeholders.put("equipCode", getValue.apply("equRegisterCode"));
placeholders.put("produceCode", getValue.apply("produceCode")); // TODO: 制造编号
placeholders.put("produceUnitName", getValue.apply("produceUnitName"));
placeholders.put("produceLicenseNum", getValue.apply("produceLicenseNum"));
placeholders.put("fullAddress", getValue.apply("provinceName") + getValue.apply("cityName") + getValue.apply("countyName") + getValue.apply("address"));
placeholders.put("installStartDate", getValue.apply("installStartDate"));
placeholders.put("installType", getValue.apply("installType")); // TODO: 施工类别
placeholders.put("installLicenseNo", getValue.apply("installLicenseNo"));
placeholders.put("installLicenseExpirationDate", getValue.apply("installLicenseExpirationDate"));
placeholders.put("installLeaderName", getValue.apply("installLeaderName"));
placeholders.put("installLeaderPhone", getValue.apply("installLeaderPhone"));
placeholders.put("installUnitAddress", getValue.apply("installUnitAddress")); // TODO: 施工单位地址
placeholders.put("useUnitName", getValue.apply("useUnitName"));
placeholders.put("useUnitLeaderName", getValue.apply("safetyManager"));
placeholders.put("useUnitLeaderPhone", getValue.apply("safetyManagerPhone"));
placeholders.put("useUnitLeaderAddress", getValue.apply("useUnitProvinceName") + getValue.apply("useUnitCityName") + getValue.apply("useUnitCountyName") + getValue.apply("useUnitAddress"));
// 生成二维码
String qrCode = ImageUtils.generateQRCode(getValue.apply("applyNo"), 300, 300);
placeholders.put("qrCode", qrCode);
// word转pdf
File pdfFile;
try {
pdfFile = this.wordToPdf("installation-notification-report.ftl", placeholders);
} catch (Exception e) {
throw new RuntimeException(e);
}
// 上传pdf至文件服务器
String url = this.uploadFile(pdfFile);
// 删除临时文件
try {
Files.deleteIfExists(pdfFile.toPath());
} catch (IOException e) {
log.error("删除临时文件失败:{}", e);
}
// 更新到数据库
jgInstallationNotice.setNoticeReportUrl(url);
this.updateById(jgInstallationNotice);
return url;
}
/**
* word 转 pdf
*
* @param wordPath word文件路径
*/
private File wordToPdf(String wordPath, Map<String, Object> placeholders) throws Exception {
Assert.hasText(wordPath, "word文件路径不能为空");
String tempFileName = "安装告知单_" + System.currentTimeMillis() + "_temp.pdf";
WordTemplateUtils instance = WordTemplateUtils.getInstance();
return instance.fillAndConvertDocFile(wordPath, tempFileName, placeholders, SaveFormat.PDF);
}
/**
* 上传文件至文件服务器
*
* @param file 文件
*/
private String uploadFile(File file) {
Assert.notNull(file, "文件不能为空");
MultipartFile multipartFile = new ByteArrayMultipartFile("file", "file.pdf", "application/pdf", file2byte(file));
FeignClientResult<Map<String, String>> result = Systemctl.fileStorageClient.updateCommonFile(multipartFile);
String urlString = "";
if (result != null) {
for (String s : result.getResult().keySet()) {
urlString = s;
}
}
return urlString;
}
@Override @Override
@SuppressWarnings({"Duplicates", "rawtypes"}) @SuppressWarnings({"Duplicates", "rawtypes"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -219,6 +414,24 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -219,6 +414,24 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
if (SUBMIT_TYPE_FLOW.equals(submitType)) { if (SUBMIT_TYPE_FLOW.equals(submitType)) {
// 发起流程 // 发起流程
ActWorkflowStartDTO dto = new ActWorkflowStartDTO(); ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
// String[] strIds = new String[deviceList.size()];
// String[] strKeys = new String[deviceList.size()];
//
// for (int i = 0; i<deviceList.size() ; i++
// ) {
// strIds[i] = PROCESS_DEFINITION_KEY;
// strKeys[i] = String.valueOf(i);
// }
// dto.setProcessDefinitionIds(String.join(",", strIds));
// dto.setProcessDefinitionKeys(String.join(",", strKeys));
// dto.setCompleteFirstTask(true);
//
// try {
// FeignClientResult result = Workflow.taskV2Client.startByVariable(dto);
// } catch (Exception e) {
// e.printStackTrace();
// }
for (int i = 0; i < deviceList.size(); i++) { for (int i = 0; i < deviceList.size(); i++) {
dto.setProcessDefinitionKey(PROCESS_DEFINITION_KEY); dto.setProcessDefinitionKey(PROCESS_DEFINITION_KEY);
dto.setBusinessKey("1"); dto.setBusinessKey("1");
...@@ -262,9 +475,9 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -262,9 +475,9 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
jgRelationEquip.setBusinessType(ApplicationFormTypeEnum.GZ.getCode()); jgRelationEquip.setBusinessType(ApplicationFormTypeEnum.GZ.getCode());
if (!CollectionUtils.isEmpty(instanceIdList)) { if (!CollectionUtils.isEmpty(instanceIdList)) {
dto.setInstanceId(instanceIdList.get(i)); dto.setInstanceId(instanceIdList.get(i));
dto.setStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode())); dto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
} else { } else {
dto.setStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode())); dto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
} }
list.add(dto); list.add(dto);
equipList.add(jgRelationEquip); equipList.add(jgRelationEquip);
...@@ -316,20 +529,20 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -316,20 +529,20 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
} }
// 分割单位 // 分割单位
String useUnitId = model.getUseUnitId(); String useUnitId = model.getUseUnitCreditCode();
if (!ObjectUtils.isEmpty(useUnitId)) { if (!ObjectUtils.isEmpty(useUnitId)) {
String[] useUnitList = useUnitId.split("_"); String[] useUnitList = useUnitId.split("_");
if (useUnitList.length > 1) { if (useUnitList.length > 1) {
model.setUseUnitId(useUnitList[0]); model.setUseUnitCreditCode(useUnitList[0]);
model.setUseUnitName(useUnitList[1]); model.setUseUnitName(useUnitList[1]);
} }
} }
String receiveOrgId = model.getReceiveOrgId(); String receiveOrgId = model.getReceiveOrgCreditCode();
if (!ObjectUtils.isEmpty(receiveOrgId)) { if (!ObjectUtils.isEmpty(receiveOrgId)) {
String[] receiveOrgIdList = receiveOrgId.split("_"); String[] receiveOrgIdList = receiveOrgId.split("_");
if (receiveOrgIdList.length > 1) { if (receiveOrgIdList.length > 1) {
model.setReceiveOrgId(receiveOrgIdList[0]); model.setReceiveOrgCreditCode(receiveOrgIdList[0]);
model.setReceiveOrgName(receiveOrgIdList[1]); model.setReceiveOrgName(receiveOrgIdList[1]);
} }
} }
...@@ -351,4 +564,126 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -351,4 +564,126 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
} }
return urls; return urls;
} }
public boolean submit(JgInstallationNoticeDto noticeDto,String op) {
AjaxResult ajaxResult = Workflow.taskClient.getTask(noticeDto.getInstanceId());
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
dto.setComment("提交流程");
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", op);
dto.setVariable(map);
//执行流程
AjaxResult ajaxResult1 = null;
try {
ajaxResult1 = Workflow.taskClient.completeByTask(taskId, dto);
if (ajaxResult1.get("code").equals(200)) {
return true;
} else {
return false;
}
} catch (Exception e) {
log.error("提交失败:{}", e);
return false;
}
}
public void cancel(JgInstallationNoticeDto noticeDto) {
FeignClientResult ajaxResult = Workflow.taskV2Client.rollBack(noticeDto.getInstanceId());
JgInstallationNotice jgInstallationNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr());
if(ajaxResult.getStatus() == 200) {
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
jgInstallationNotice.setStatus(String.valueOf(FlowStatusEnum.ROBACK.getCode()));
jgInstallationNoticeMapper.updateById(jgInstallationNotice);
}
}
public void accept(JgInstallationNoticeDto dto,String op) {
convertField(dto);
// 组装设备注册代码
StringBuffer stringBuffer = new StringBuffer();
String ym = null;
try {
ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM);
} catch (ParseException e) {
log.error("日期转换失败:{}", e);
}
LambdaQueryWrapper<JgRelationEquip> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgRelationEquip::getBusinessId,dto.getSequenceNbr());
JgRelationEquip jgRelationEquip = jgRelationEquipMapper.selectOne(queryWrapper);
LambdaQueryWrapper<OtherInfo> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(OtherInfo::getRecord,jgRelationEquip.getEquipId());
OtherInfo tzsJgOtherInfo = tzsJgOtherInfoMapper.selectOne(queryWrapper1);
LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(RegistrationInfo::getRecord,jgRelationEquip.getEquipId());
RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(dto.getCity()).append(ym);
String equCode = stringBuffer.toString();
String deviceRegistrationCode = iCreateCodeService.createDeviceRegistrationCode(equCode);
Map<String, Object> map = new HashMap<>();
map.put("cityCode",dto.getCity());
map.put("countyCode",dto.getCounty());
map.put("equCategory",tzsJgRegistrationInfo.getEquCategory());
map.put("isXiXian",dto.getIsXixian());
Map<String, Object> mapCode;
ResponseModel<Map<String, Object>> code = tzsServiceFeignClient.createCode(map);
mapCode = code.getResult();
boolean submit = submit(dto, op);
if(submit) {
if("0".equals(op)) {
dto.setNoticeStatus(String.valueOf(FlowStatusEnum.HAVE_PROCESSED.getCode()));
} else {
dto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
dto.setStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
}
JgInstallationNotice bean = new JgInstallationNotice();
BeanUtils.copyProperties(dto,bean);
bean.setEquRegisterCode(deviceRegistrationCode);
jgInstallationNoticeMapper.updateById(bean);
// 更新其他业务表
tzsJgOtherInfo.setCode96333(mapCode.get("code96333").toString());
tzsJgOtherInfo.setSupervisoryCode(mapCode.get("superviseCode").toString());
tzsJgRegistrationInfo.setEquCode(deviceRegistrationCode);
tzsJgOtherInfoMapper.updateById(tzsJgOtherInfo);
tzsJgRegistrationInfoMapper.updateById(tzsJgRegistrationInfo);
}
// // 组装监管码
// String division = "";
// if (((XIAN.equals(dto.getCity()) || XIAN_YANG.equals(dto.getCity())) && "1".equals(dto.getIsXixian()))) {
// division = "X";
// } else {
// //生成监管码前缀
// Map<String, Object> divisionMap = equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQH.getCode(), dto.getCounty());
// division = ObjectUtils.isEmpty(divisionMap) ? equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQH.getCode(), dto.getCity()).get("code").toString() : divisionMap.get("code").toString();
// }
//
// // 组装96333码
// String prefix = "";
// if (((XIAN.equals(dto.getCity()) || XIAN_YANG.equals(dto.getCity())) && "1".equals(dto.getIsXixian()))) {
// prefix = EquipmentCategoryEnum.XXCSM.getValue();
// } else {
// Map<String, Object> elevatorMap = equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQHDT.getCode(), dto.getCounty());
// prefix = ObjectUtils.isEmpty(elevatorMap) ? equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQHDT.getCode(), dto.getCity()).get("code").toString() : elevatorMap.get("code").toString();
// }
}
} }
\ No newline at end of file
...@@ -12,6 +12,7 @@ import java.awt.*; ...@@ -12,6 +12,7 @@ import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.*; import java.io.*;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.Base64;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -302,4 +303,35 @@ public class ImageUtils { ...@@ -302,4 +303,35 @@ public class ImageUtils {
} }
} }
/**
* 生成二维码(白色背景),并将其转换成base64
*
* @param text 二维码内容
* @param width 二维码宽度
* @param height 二维码高度
* @return base64
*/
public static String generateQRCode(String text, int width, int height) {
try {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
BitMatrix bm = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 二维码颜色:黑色
int QRCOLOR = 0x201f1f;
//二维码背景颜色:白色
int BGWHITE = 0xFFFFFF;
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
}
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", outputStream);
return Base64.getEncoder().encodeToString(outputStream.toByteArray());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
} }
package com.yeejoin.amos.boot.module.jg.biz.utils;
import com.aspose.words.Document;
import com.aspose.words.License;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Slf4j
public class WordTemplateUtils {
public static final String BASE_PACKAGE_PATH = "/templates";
private static WordTemplateUtils wordTemplateUtils;
private final Configuration configuration;
private WordTemplateUtils() {
configuration = new Configuration(Configuration.VERSION_2_3_23);
}
public static synchronized WordTemplateUtils getInstance() {
if (wordTemplateUtils == null) {
wordTemplateUtils = new WordTemplateUtils();
}
return wordTemplateUtils;
}
/**
* 创建doc并写入内容
*
* @param templatePath doc模板文件路径
* @param dataMap 内容
* @param template 模板
* @return doc文件
*/
private File createDoc(String templatePath, Map<String, ?> dataMap, Template template) throws TemplateException, IOException {
// templatePath在后缀之前加上UUID是为了防止并发时多个线程使用同一个模板文件而导致生成的Word文档内容不一致
int i = templatePath.lastIndexOf(".");
templatePath = UUID.randomUUID() + templatePath.substring(i);
if (templatePath.endsWith(".ftl")) {
templatePath = templatePath.replace(".ftl", ".doc");
}
File docFile = new File(templatePath);
try (
// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
Writer writer = new OutputStreamWriter(Files.newOutputStream(docFile.toPath()), StandardCharsets.UTF_8)
) {
template.process(dataMap, writer);
}
return docFile;
}
public File fillAndConvertDocFile(String templatePath, String targetFileName, Map<String, ?> map, int saveFormat) throws Exception {
// 指定模板所在包路径
configuration.setClassForTemplateLoading(this.getClass(), BASE_PACKAGE_PATH);
// 获取模板, 生成Word文档
Template freemarkerTemplate = configuration.getTemplate(templatePath, "UTF-8");
File docFile = createDoc(templatePath, map, freemarkerTemplate);
// 转换Word文档
File converedFile = converDocFile(docFile.getAbsolutePath(), targetFileName, saveFormat);
// 删除临时文件
Files.deleteIfExists(docFile.toPath());
return converedFile;
}
/**
* word转换
*
* @param docPath word文件路径
* @param targetPath 转换后文件路径
* @param saveFormat 目标文件类型 取自 com.aspose.words.SaveFormat
*/
private File converDocFile(String docPath, String targetPath, int saveFormat) throws Exception {
// 验证License 若不验证则转化出的pdf文档会有水印产生
if (!getLicense()) {
throw new RuntimeException("验证License失败");
}
if (StringUtils.isEmpty(docPath)) {
throw new FileNotFoundException("文档文件不存在");
}
try (
InputStream inputStream = Files.newInputStream(Paths.get(docPath));
OutputStream outputStream = Files.newOutputStream(Paths.get(targetPath));
) {
File targetFile = new File(targetPath);
Document doc = new Document(inputStream);
doc.save(outputStream, saveFormat);
return targetFile;
}
}
/**
* 获取License
*
* @return boolean
*/
private boolean getLicense() {
boolean result = false;
try {
String s = "<License><Data><Products><Product>Aspose.Total for Java</Product><Product>Aspose.Words for Java</Product></Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber></Data><Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature></License>";
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
License license = new License();
license.setLicense(is);
result = true;
} catch (Exception e) {
log.error("获取License失败", e);
}
return result;
}
}
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<logger name="com.yeejoin" level="INFO"/> <logger name="com.yeejoin" level="INFO"/>
<!-- 日志输出级别 --> <!-- 日志输出级别 -->
<root level="DEBUG"> <root level="INFO">
<!-- <appender-ref ref="FILE" /> --> <!-- <appender-ref ref="FILE" /> -->
<appender-ref ref="STDOUT" /> <appender-ref ref="STDOUT" />
<!-- <appender-ref ref="ELK" />--> <!-- <appender-ref ref="ELK" />-->
......
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage"><pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties" Target="docProps/custom.xml"/></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/><Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"><pkg:xmlData><w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData" mc:Ignorable="w14 w15 wp14"><w:body><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="300" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="default"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>ID: ${sequenceNbr}</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="300" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="default"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>附件</w:t></w:r></w:p><w:p><w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="52"/><w:szCs w:val="52"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:drawing><wp:anchor distT="0" distB="0" distL="114300" distR="114300" simplePos="0" relativeHeight="251659264" behindDoc="0" locked="0" layoutInCell="1" allowOverlap="1"><wp:simplePos x="0" y="0"/><wp:positionH relativeFrom="column"><wp:posOffset>4432300</wp:posOffset></wp:positionH><wp:positionV relativeFrom="paragraph"><wp:posOffset>545465</wp:posOffset></wp:positionV><wp:extent cx="921385" cy="921385"/><wp:effectExtent l="0" t="0" r="12065" b="12065"/><wp:wrapNone/><wp:docPr id="1" name="图片 1"/><wp:cNvGraphicFramePr><a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/></wp:cNvGraphicFramePr><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="1" name="图片 1"/><pic:cNvPicPr><a:picLocks noChangeAspect="1"/></pic:cNvPicPr></pic:nvPicPr><pic:blipFill><a:blip r:embed="rId4"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="921385" cy="921385"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln><a:noFill/></a:ln></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:anchor></w:drawing></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="52"/><w:szCs w:val="52"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>特种设备安装改造维修告知书</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="240" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t xml:space="preserve">施工单位: </w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:u w:val="single"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>${installUnitName}</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>(加盖公章)</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="720" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="10"/><w:szCs w:val="10"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>告知书编号:</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:u w:val="single"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>${applyNo}</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p><w:tbl><w:tblPr><w:tblStyle w:val="8"/><w:tblW w:w="4998" w:type="pct"/><w:jc w:val="center"/><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblLayout w:type="fixed"/><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:tblGrid><w:gridCol w:w="1736"/><w:gridCol w:w="1253"/><w:gridCol w:w="1256"/><w:gridCol w:w="1765"/><w:gridCol w:w="1253"/><w:gridCol w:w="1256"/></w:tblGrid><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="default" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备名称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="default" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${productName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="default" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>型号(参数)</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${equipType}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备代码</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${equipCode}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>制造编号</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${produceCode}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备制造单位全称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${produceUnitName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>制造许可证编号</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${produceLicenseNum}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备地点</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${fillAddress}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>安装改造维修日期</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installStartDate}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>施工单位全称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installUnitName}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>施工类别</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="735" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installType}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="736" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>许可证编号</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLicenseNo}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="735" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>许可证有效期</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="736" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLicenseExpirationDate}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>联系人</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLeaderName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>电话</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLeaderPhone}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>地址</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installUnitAddress}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>使用单位全称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitName}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>联系人</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitLeaderName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>电话</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitLeaderPhone}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><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:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>地址</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitLeaderAddress}</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>注:1、告知单按每台设备填写。</w:t></w:r></w:p><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:ind w:firstLine="480" w:firstLineChars="200"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>2、施工单位应提供特种设备许可证书复印件(加盖单位公章)。</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="0"/></w:numPr><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="300" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:sz w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="等线" w:hAnsi="等线" w:eastAsia="等线" w:cs="等线"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>按照市委政府关于“四改两拆”三年攻坚行动实施方案要求,市域范围内的建筑物和建设项目,须符合城乡建设规划要求和《土地管理法》之要求并须取得合法手续,按要求,特种设备不允许装于不符合相关法规的建筑物之内。据此要求。</w:t></w:r></w:p><w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/><w:cols w:space="0" w:num="1"/><w:rtlGutter w:val="0"/><w:docGrid w:type="lines" w:linePitch="312" w:charSpace="0"/></w:sectPr></w:body></w:document></pkg:xmlData></pkg:part><pkg:part pkg:name="/docProps/app.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"><pkg:xmlData><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Template>Normal.dotm</Template><Company>Microsoft</Company><Pages>3</Pages><Words>262</Words><Characters>534</Characters><Lines>5</Lines><Paragraphs>1</Paragraphs><TotalTime>7</TotalTime><ScaleCrop>false</ScaleCrop><LinksUpToDate>false</LinksUpToDate><CharactersWithSpaces>552</CharactersWithSpaces><Application>WPS Office_12.1.0.16120_F1E327BC-269C-435d-A152-05C5408002CA</Application><DocSecurity>0</DocSecurity></Properties></pkg:xmlData></pkg:part><pkg:part pkg:name="/docProps/core.xml" pkg:contentType="application/vnd.openxmlformats-package.core-properties+xml"><pkg:xmlData><cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dcterms:created xsi:type="dcterms:W3CDTF">2021-04-07T06:02:00Z</dcterms:created><dc:creator>徐铁龙</dc:creator><cp:lastModifiedBy>DELL</cp:lastModifiedBy><cp:lastPrinted>2021-04-07T06:46:00Z</cp:lastPrinted><dcterms:modified xsi:type="dcterms:W3CDTF">2023-12-15T11:58:19Z</dcterms:modified><cp:revision>14</cp:revision></cp:coreProperties></pkg:xmlData></pkg:part><pkg:part pkg:name="/docProps/custom.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.custom-properties+xml"><pkg:xmlData><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="KSOProductBuildVer"><vt:lpwstr>2052-12.1.0.16120</vt:lpwstr></property><property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="3" name="ICV"><vt:lpwstr>B40FDDD478184802856A4291EB47F93F_13</vt:lpwstr></property></Properties></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/fontTable.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"><pkg:xmlData><w:fonts xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14"><w:font w:name="Times New Roman"><w:panose1 w:val="02020603050405020304"/><w:charset w:val="00"/><w:family w:val="roman"/><w:pitch w:val="variable"/><w:sig w:usb0="20007A87" w:usb1="80000000" w:usb2="00000008" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/></w:font><w:font w:name="宋体"><w:panose1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="00000203" w:usb1="288F0000" w:usb2="00000006" w:usb3="00000000" w:csb0="00040001" w:csb1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="00000000" w:usb1="00000000" w:usb2="00000000" w:usb3="00000000" w:csb0="80000000" w:csb1="00000000"/></w:font><w:font w:name="Arial"><w:panose1 w:val="020B0604020202020204"/><w:charset w:val="01"/><w:family w:val="swiss"/><w:pitch w:val="default"/><w:sig w:usb0="E0002EFF" w:usb1="C000785B" w:usb2="00000009" w:usb3="00000000" w:csb0="400001FF" w:csb1="FFFF0000"/></w:font><w:font w:name="黑体"><w:panose1 w:val="02010609060101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="800002BF" w:usb1="38CF7CFA" w:usb2="00000016" w:usb3="00000000" w:csb0="00040001" w:csb1="00000000"/></w:font><w:font w:name="Courier New"><w:panose1 w:val="02070309020205020404"/><w:charset w:val="01"/><w:family w:val="modern"/><w:pitch w:val="default"/><w:sig w:usb0="E0002EFF" w:usb1="C0007843" w:usb2="00000009" w:usb3="00000000" w:csb0="400001FF" w:csb1="FFFF0000"/></w:font><w:font w:name="Symbol"><w:panose1 w:val="05050102010706020507"/><w:charset w:val="02"/><w:family w:val="roman"/><w:pitch w:val="default"/><w:sig w:usb0="00000000" w:usb1="00000000" w:usb2="00000000" w:usb3="00000000" w:csb0="80000000" w:csb1="00000000"/></w:font><w:font w:name="Calibri"><w:panose1 w:val="020F0502020204030204"/><w:charset w:val="00"/><w:family w:val="swiss"/><w:pitch w:val="default"/><w:sig w:usb0="E4002EFF" w:usb1="C000247B" w:usb2="00000009" w:usb3="00000000" w:csb0="200001FF" w:csb1="00000000"/></w:font><w:font w:name="等线"><w:panose1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="A00002BF" w:usb1="38CF7CFA" w:usb2="00000016" w:usb3="00000000" w:csb0="0004000F" w:csb1="00000000"/></w:font></w:fonts></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/media/image1.png" pkg:contentType="image/png"><pkg:binaryData>iVBORw0KGgoAAAANSUhEUgAAAJEAAACRCAIAAABMus10AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAL
mElEQVR4nO2da1BURxbH58k4M4CAgqDgC6IWAyiKIT4I+Cgkoqs7MSrvTZURgc3WRlzRuApW0ESj
frBWBqwy0RVFK2owiAuYGNzA4itb4iBSoGJRWGBRoqOjCCjsB6uYO90jt+cyA56t8/vk/DndfWb+
2DRN39Pi3t5eEQIKyVAngFgNegYPWd+/CgsLr1+7NoSp9LE+Pd3NzY2r6PX6kydOEGEpqaljxozh
Knfu3Dn8/fdE2J8+/dTPz09AGu3t7fv27hXQ0OaEzJy5fPnyvpcmz65euVJQUDAUKZGsTU4mPGtq
ajp27BgRtmr1asKz1tZWOizqo4+EeWY0GunehoSenh6uZzg3wgM9gwd6Bg/0DB6y/r8skdjX1N7e
XsG/1Pf09Lx+/ZpQWMIsIpFIxGIxb5hYLGYJGwgW3wWX/jxzdnauvnnTpvmQHD9+fMuXXwpru3zZ
MpawpMRElrB/HDgQHR3NG5a9Y0dsbCxLh4KZGhT09OnTfgJwboQHegYP9Awe6Bk80DN48Kz1aa5f
v16j1wsbLCY2VqFQCGsrmMjISK/Ro3nDxo8fL6z/zs7OguPHhbUNCAwMCQmxtpXVnv3y88+5ubnW
tnrDH7XawfcsITFx7ty59uv/5cuX27dvF9Z23bp1AjzDuREe6Bk80DN4oGfwQM/gYfW6cUgIDw//
5eJFQlyXnNzQ0MBVpk+f/u2ePUTY3j17tm3dyjvEtszMiIiIgaU5SMDwzNHR0dHRkRDpXxuUSuXE
iRMJ0WAwNDY28g7x/PnzgWQ4mODcCA/0DB7oGTzQM3jAWIO0tbXV1dURop+fn4uLC1fRaDR024CA
AOIEh9FovHHjhs2THDRgeHb16tU/p6UR4k9FRYGBgbxtN23eTCh6vf4PS5faLLlBB+dGeKBn8EDP
4IGewQM9g4fV60atVhs8fbqwwVQqlbCGM2bMyDt4kBDHjRvH0nbfvn11t29zlf5P6VqLSqWic2Nk
gqBDKFZ79t6kSe9NmiRgpIHg6enp6ekprO1/f/+9srLStvlwkcvlkZGR9uufBudGeKBn8EDP4IGe
waO/NUhPT09LS4tdhzcYDCxhHR0dT548IcSRI0fK5XKu0tnZ2d7eToSp1Wpi/dLd3f3o0SPrkxWJ
RCKDwWDvz2RAzwwajcbZs2bZNB+BXLx4kWWP+Nq1awnx8UTY0fx84hzxQPaId+/atXvXLmFtbQXO
jfBAz+CBnsEDPYMHegYP07px0aJFPj4+Q5hKH8OHDyeUyZMnb9y4kRBLSkrOnz/PVaRSKR12+fJl
Yr+xra2NMQ26tyHB39+f+1IMt07q0iVLampquMqcOXPyqUpw8XFxLHvEjPVB3gVwboQHegYP9Awe
6Bk80DN4mNaNWZmZp06d4n7Nycmp6vJlll4CLB26tjeHjxyZMmUKV5FKpUqlkgjr6OggagHW1tau
WrmSCFMoFDKZ2Y75mDFjSsvKeNMwGAxzZs8mxL9+8cWaNWsIUfCntGLFiixOOQtTll1dXcRzc1Kp
lLHTIXngTqFQ0A8S0tAu0opIJOrs7Ozs7OQqHR0djJnQb7+7u5sljJGuri7uS5wb4YGewQM9gwd6
Bg/TGiQ4OJj4ISyVyU6fPs3Si1artXFe5jQ/eHD1yhXesIcPH1ZUVBDi3LlzR40axdv2/dBQb/Nb
MRTDhtFvPzg4mC6NYFuWLF3qYH7OJTg4mPvS5NknK1d+Yr4CNhgM06ZOZRmm8f594TkyUFxczOJZ
Q0PDhvR0Qjyan8/iWWJiIrFH3NTUFP7hh0TYjp077e1ZdnY2/ZcNLjg3wgM9gwd6Bg/0DB7oGTxM
68acAweILdHXr17RDRISEz+mVvbLqGtAtFptUlIS7/AlJSU6nY4Q8/LyWJ42S1+/Xmn+EKLx2TPe
ViKRyNfXt7CwkBDHsT2+l5OTc/LkSa4yTKGgeyu7cIH+TGi0Wm0idTXK2s8+e2n+S9eiyMhUzjFq
k2fNzc03q6t5h/Hy8po6bRoh0g0ZD423t7fTbYkt0bdBFAJkR6VS0W+BkQfNzQ+am7mKs7Mz3VtJ
SQnLh+nh4UG3raurI55E1Zif4cG5ER7oGTzQM3igZ/AwrUG8vb2DzHcXX796devWLbsO7+bmFkRt
aTo4ONhwiLt37zqZ/zlbqVJNokov3L9/32D+WGL748d0bjRqtZoxE7o3iVRaTVW4470V0eRZalpa
qvlzeex7xIKJioqKioqy6xBZmZmEEhAQUHTuHCF+u3s3cZLcx8fn37/9ZsNMzp49Syg6nY578TQj
ODfCAz2DB3oGD/QMHugZPPqrNaFUKvfs3UuIAQEBdCQd1tzcnL5+PSF+lZ1NlJarqqo69cMPvFmO
GDGCHoKmvr7+YF4eIa5NTiZW9kTl6bfx6NEj+i0wMnbcOJaE58+f7+HhwRs2YcIE7kt7PTOo0+no
Oho3qquJkw6Md4ovXrz4QE4Ob1hFRQVLfRCLpKWmEmv9gbAxIyMlJcVWvRHg3AgP9Awe6Bk80DN4
2OseC7lczrJ5KpPJWMKkUqnRaOQN6+rqonvr6upiafvK0kEKwTAOahG1Wk1clkIAo9ZEcXExXVeO
ZiC1Jt4d6NU1Ac6N8EDP4IGewQM9gwd6Bg/TWv9SeXltbe0QptJHbFxc/wunN3y8YoW7uztXkUql
OmpbclpwcGBQEFdpa2s7bV5VwyJOTk5x1O7lpfLy2+Y3mVgkNDSUvqEllzoxbZHvDh0aNmwYV/H3
9w/n3J1t8qy0tLSgoIClU3sTvWQJi2dJSUlEDWnGPWK9Xs/imYuLS0ZGBiEanjxh8Sw8IoLeI2b0
bP/+/YQSExPD9QznRnigZ/BAz+CBnsEDPYNHf/v6jo6OZRcu2HX4wsJCG17lMXPmzP9UVRFiVmbm
3zZs4CoWC4h9lZ29YMECrtLa2jrrgw+IsHUpKcQQz549WyT0zrr4+PhUhr1v4hBNf55JJBIvLy9h
2TDCsqZnR6FQ0Ak/f/68tbWVt62rqyvRtru7m24ol8uJMMEXXopEIkdHRwGfMM6N8EDP4IGewQM9
g4fV50Ea6usFVySbN28ecTMgOGpra8vMK3K8ePFCcG+NjY1lDCWPvb29udePWO3ZmTNncnNzrW31
Bt6TDu8+x/Lzj+Xn26q30tLS0tJS3rCYmJidX3/d9xLnRnigZ/BAz+CBnsEDPYOHvc5+DwLbtm4l
7rHQaDSbNm+2Vf/u7u7/PHqUEL87dKi8vJyrqFSqXOpBxfFsVeqio6NXrV7NG0ZU2QPs2Q2qGopt
z7ErlcqwsDBC/Bf1XKFMJqPDGPHx8RHQFudGeKBn8EDP4IGewQPGGkStVhP1FixisYqxp6cnS1uj
0Xjv3j3eMAcHB6I3lUpFN3Rzc6MrWtBpSCQSlkGdnJy4J6ZheBYRERHBOUhrFSx1OkQiUVpq6ibq
1DDNjp07uVf+id5Sfc9irYmLv/5KKDqdbsH8+byD4h4xeNAzeKBn8EDP4IGewcPqdeOChQtZroCz
CPEo3ADJy8traWnhDUtISPD19bXVoOeKiurr67mKRCzOpEoeP378OCsri7c3vV5PixszMpTmHxRR
F89qz0JCQkJCQqxtZQ/OFRXV1NTwhi1cuNCGnlVVVVWZn/12dnauvnmTCNv1zTdHDh8WNkRsbCzW
B/l/Az2DB3oGD/QMHugZPPpbNz59+tTXzncxM54GKC4u/svnnxPimR9/JApaV1ZWJlHX9iUmJBCl
9TQazU9FRbyDent7l1+6RIh/37LlxIkTXMXip5S+YcOdu3cJ0c9Gy1eetX5PT49Nhhk4dCYSiUQq
lRIK3bC3t5f4zmD8RhGLxUT/b0SW3Cy2tRU4N8IDPYMHegYP9AwepjXI+6GhFn+GDz7E6WCRSDR2
7Ni4uDhCdHNzIxRPT086jGb06NG0GBYW5urqylWIl29g/JQ0Gg0tsuQmYrhmEUYNaYTLO/EfC7EK
9Awe/wNla5PurCXX1wAAAABJRU5ErkJggg==</pkg:binaryData></pkg:part><pkg:part pkg:name="/word/settings.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"><pkg:xmlData><w:settings xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData" mc:Ignorable="w14"><w:zoom w:percent="120"/><w:bordersDoNotSurroundHeader w:val="0"/><w:bordersDoNotSurroundFooter w:val="0"/><w:documentProtection w:enforcement="0"/><w:defaultTabStop w:val="420"/><w:hyphenationZone w:val="360"/><w:drawingGridVerticalSpacing w:val="156"/><w:displayHorizontalDrawingGridEvery w:val="1"/><w:displayVerticalDrawingGridEvery w:val="1"/><w:noPunctuationKerning w:val="1"/><w:characterSpacingControl w:val="compressPunctuation"/><w:compat><w:spaceForUL/><w:balanceSingleByteDoubleByteWidth/><w:doNotLeaveBackslashAlone/><w:ulTrailSpace/><w:doNotExpandShiftReturn/><w:adjustLineHeightInTable/><w:doNotWrapTextWithPunct/><w:doNotUseEastAsianBreakRules/><w:useFELayout/><w:doNotUseIndentAsNumberingTabStop/><w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="14"/><w:compatSetting w:name="overrideTableStyleFontSizeAndJustification" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/><w:compatSetting w:name="enableOpenTypeFeatures" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/><w:compatSetting w:name="doNotFlipMirrorIndents" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/></w:compat><w:docVars><w:docVar w:name="commondata" w:val="eyJoZGlkIjoiOGU0YzRjY2I3ZDU5NmEwMWRmZmYzOWRiMjBhMjYyZjkifQ=="/></w:docVars><w:rsids><w:rsidRoot w:val="00050023"/><w:rsid w:val="00040667"/><w:rsid w:val="00040FF7"/><w:rsid w:val="00050023"/><w:rsid w:val="000A7947"/><w:rsid w:val="000D3739"/><w:rsid w:val="000E2155"/><w:rsid w:val="00101F20"/><w:rsid w:val="001D5AAB"/><w:rsid w:val="00201B95"/><w:rsid w:val="00235D10"/><w:rsid w:val="002A2B6C"/><w:rsid w:val="003C1840"/><w:rsid w:val="00400062"/><w:rsid w:val="004155AE"/><w:rsid w:val="00481C56"/><w:rsid w:val="004C0670"/><w:rsid w:val="004D5FAC"/><w:rsid w:val="00524BEE"/><w:rsid w:val="00553854"/><w:rsid w:val="005C34ED"/><w:rsid w:val="00755289"/><w:rsid w:val="00770422"/><w:rsid w:val="00776BF9"/><w:rsid w:val="00801102"/><w:rsid w:val="0081034C"/><w:rsid w:val="008D313A"/><w:rsid w:val="009A1196"/><w:rsid w:val="00AE60A3"/><w:rsid w:val="00B000D9"/><w:rsid w:val="00B4410D"/><w:rsid w:val="00B75F74"/><w:rsid w:val="00B92B3A"/><w:rsid w:val="00D10D3E"/><w:rsid w:val="00D601E6"/><w:rsid w:val="00D90FCE"/><w:rsid w:val="00DD6429"/><w:rsid w:val="00E049D7"/><w:rsid w:val="00E32872"/><w:rsid w:val="00E5277E"/><w:rsid w:val="00E95B7F"/><w:rsid w:val="00F06FB2"/><w:rsid w:val="00F33DF0"/><w:rsid w:val="00F836D8"/><w:rsid w:val="00F97947"/><w:rsid w:val="00FA2D4F"/><w:rsid w:val="00FB24F7"/><w:rsid w:val="00FB4EDF"/><w:rsid w:val="00FC6DCA"/><w:rsid w:val="038A570F"/><w:rsid w:val="03990047"/><w:rsid w:val="07E04497"/><w:rsid w:val="0D020A0B"/><w:rsid w:val="0DCB1711"/><w:rsid w:val="0E325320"/><w:rsid w:val="0EC17220"/><w:rsid w:val="0FBC66FE"/><w:rsid w:val="0FEB1C2B"/><w:rsid w:val="11BF511D"/><w:rsid w:val="11EA2C13"/><w:rsid w:val="124456EF"/><w:rsid w:val="12635AA8"/><w:rsid w:val="12F232D0"/><w:rsid w:val="13AE3F29"/><w:rsid w:val="13B30CB1"/><w:rsid w:val="1481490C"/><w:rsid w:val="15B825AF"/><w:rsid w:val="15E0735C"/><w:rsid w:val="163B6EDA"/><w:rsid w:val="174C6527"/><w:rsid w:val="191B532F"/><w:rsid w:val="19E25E4D"/><w:rsid w:val="1D491D3F"/><w:rsid w:val="1D725739"/><w:rsid w:val="1D8B05A9"/><w:rsid w:val="1DD441B5"/><w:rsid w:val="1DFE114D"/><w:rsid w:val="1EB464E5"/><w:rsid w:val="1EF4585E"/><w:rsid w:val="20270082"/><w:rsid w:val="20A559EA"/><w:rsid w:val="21091F11"/><w:rsid w:val="212E5E1B"/><w:rsid w:val="2138272D"/><w:rsid w:val="21B756EE"/><w:rsid w:val="21DB66AD"/><w:rsid w:val="222114DC"/><w:rsid w:val="228C7D76"/><w:rsid w:val="22A04AF7"/><w:rsid w:val="23153176"/><w:rsid w:val="251D5F8B"/><w:rsid w:val="256040C9"/><w:rsid w:val="25E46AA9"/><w:rsid w:val="2624159B"/><w:rsid w:val="278542BB"/><w:rsid w:val="28C9029D"/><w:rsid w:val="28E87731"/><w:rsid w:val="291C44C8"/><w:rsid w:val="2928331E"/><w:rsid w:val="2B966A97"/><w:rsid w:val="2C680039"/><w:rsid w:val="2DFB7085"/><w:rsid w:val="2F996B56"/><w:rsid w:val="2F9E416C"/><w:rsid w:val="30874C00"/><w:rsid w:val="32700042"/><w:rsid w:val="32B06690"/><w:rsid w:val="330E0A28"/><w:rsid w:val="333F7A14"/><w:rsid w:val="349F3341"/><w:rsid w:val="34A02734"/><w:rsid w:val="36BB55B0"/><w:rsid w:val="36D87F64"/><w:rsid w:val="380D00E1"/><w:rsid w:val="39E82BB3"/><w:rsid w:val="3AF630AE"/><w:rsid w:val="3C10082C"/><w:rsid w:val="3C461E13"/><w:rsid w:val="3C9506A5"/><w:rsid w:val="3CD016DD"/><w:rsid w:val="3FCA68B7"/><w:rsid w:val="41872CB2"/><w:rsid w:val="45DB537A"/><w:rsid w:val="46BF4C9C"/><w:rsid w:val="47394A4E"/><w:rsid w:val="47685334"/><w:rsid w:val="49415E3C"/><w:rsid w:val="4BA34B8C"/><w:rsid w:val="4D185106"/><w:rsid w:val="4E9C3B15"/><w:rsid w:val="4F22226C"/><w:rsid w:val="4F756840"/><w:rsid w:val="4F7800DE"/><w:rsid w:val="50C25AB5"/><w:rsid w:val="5212025B"/><w:rsid w:val="53D31D87"/><w:rsid w:val="547B2588"/><w:rsid w:val="58BF0636"/><w:rsid w:val="59A87812"/><w:rsid w:val="59B44408"/><w:rsid w:val="5A767910"/><w:rsid w:val="5CF74D38"/><w:rsid w:val="5D991BA9"/><w:rsid w:val="5DD12653"/><w:rsid w:val="5ED23951"/><w:rsid w:val="5F830B05"/><w:rsid w:val="5FFE63DD"/><w:rsid w:val="60C26EAD"/><w:rsid w:val="61202383"/><w:rsid w:val="614B5652"/><w:rsid w:val="62CF7BBD"/><w:rsid w:val="65C71020"/><w:rsid w:val="666B70B9"/><w:rsid w:val="671E44FE"/><w:rsid w:val="691E364C"/><w:rsid w:val="695678B8"/><w:rsid w:val="6A3273AF"/><w:rsid w:val="6CDE55CC"/><w:rsid w:val="6D336B24"/><w:rsid w:val="6DA71E62"/><w:rsid w:val="6E7F7922"/><w:rsid w:val="6E95615F"/><w:rsid w:val="6FA75643"/><w:rsid w:val="70BA270C"/><w:rsid w:val="71F907B3"/><w:rsid w:val="723B701D"/><w:rsid w:val="723E2669"/><w:rsid w:val="726C367A"/><w:rsid w:val="749747AF"/><w:rsid w:val="76004806"/><w:rsid w:val="76452637"/><w:rsid w:val="76EF6628"/><w:rsid w:val="77EB3B80"/><w:rsid w:val="7866291A"/><w:rsid w:val="79767E6F"/><w:rsid w:val="79BA2F1D"/><w:rsid w:val="7A0041B6"/><w:rsid w:val="7ADE49EA"/><w:rsid w:val="7BB16DAF"/><w:rsid w:val="7BE530CE"/><w:rsid w:val="7DC600E3"/><w:rsid w:val="7E9C4EDE"/><w:rsid w:val="7EC71F75"/><w:rsid w:val="7F1B445E"/></w:rsids><m:mathPr><m:brkBin m:val="before"/><m:brkBinSub m:val="--"/><m:smallFrac m:val="0"/><m:dispDef/><m:lMargin m:val="0"/><m:rMargin m:val="0"/><m:defJc m:val="centerGroup"/><m:wrapIndent m:val="1440"/><m:intLim m:val="subSup"/><m:naryLim m:val="undOvr"/></m:mathPr><w:themeFontLang w:val="en-US" w:eastAsia="zh-CN"/><w:clrSchemeMapping w:bg1="light1" w:t1="dark1" w:bg2="light2" w:t2="dark2" w:accent1="accent1" w:accent2="accent2" w:accent3="accent3" w:accent4="accent4" w:accent5="accent5" w:accent6="accent6" w:hyperlink="hyperlink" w:followedHyperlink="followedHyperlink"/><w:shapeDefaults><o:shapedefaults/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults></w:settings></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/styles.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"><pkg:xmlData><w:styles xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData" mc:Ignorable="w14"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/></w:rPr></w:rPrDefault><w:pPrDefault/></w:docDefaults><w:latentStyles w:count="260" w:defQFormat="0" w:defUnhideWhenUsed="1" w:defSemiHidden="1" w:defUIPriority="99" w:defLockedState="0"><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="0" w:semiHidden="0" w:name="Normal"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="9" w:semiHidden="0" w:name="heading 1"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 2"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 3"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 4"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 5"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 6"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 7"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 8"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 9"/><w:lsdException w:uiPriority="99" w:name="index 1"/><w:lsdException w:uiPriority="99" w:name="index 2"/><w:lsdException w:uiPriority="99" w:name="index 3"/><w:lsdException w:uiPriority="99" w:name="index 4"/><w:lsdException w:uiPriority="99" w:name="index 5"/><w:lsdException w:uiPriority="99" w:name="index 6"/><w:lsdException w:uiPriority="99" w:name="index 7"/><w:lsdException w:uiPriority="99" w:name="index 8"/><w:lsdException w:uiPriority="99" w:name="index 9"/><w:lsdException w:uiPriority="39" w:name="toc 1"/><w:lsdException w:uiPriority="39" w:name="toc 2"/><w:lsdException w:uiPriority="39" w:name="toc 3"/><w:lsdException w:uiPriority="39" w:name="toc 4"/><w:lsdException w:uiPriority="39" w:name="toc 5"/><w:lsdException w:uiPriority="39" w:name="toc 6"/><w:lsdException w:uiPriority="39" w:name="toc 7"/><w:lsdException w:uiPriority="39" w:name="toc 8"/><w:lsdException w:uiPriority="39" w:name="toc 9"/><w:lsdException w:uiPriority="99" w:name="Normal Indent"/><w:lsdException w:uiPriority="99" w:name="footnote text"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="annotation text"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="header"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="footer"/><w:lsdException w:uiPriority="99" w:name="index heading"/><w:lsdException w:qFormat="1" w:uiPriority="35" w:name="caption"/><w:lsdException w:uiPriority="99" w:name="table of figures"/><w:lsdException w:uiPriority="99" w:name="envelope address"/><w:lsdException w:uiPriority="99" w:name="envelope return"/><w:lsdException w:uiPriority="99" w:name="footnote reference"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="annotation reference"/><w:lsdException w:uiPriority="99" w:name="line number"/><w:lsdException w:uiPriority="99" w:name="page number"/><w:lsdException w:uiPriority="99" w:name="endnote reference"/><w:lsdException w:uiPriority="99" w:name="endnote text"/><w:lsdException w:uiPriority="99" w:name="table of authorities"/><w:lsdException w:uiPriority="99" w:name="macro"/><w:lsdException w:uiPriority="99" w:name="toa heading"/><w:lsdException w:uiPriority="99" w:name="List"/><w:lsdException w:uiPriority="99" w:name="List Bullet"/><w:lsdException w:uiPriority="99" w:name="List Number"/><w:lsdException w:uiPriority="99" w:name="List 2"/><w:lsdException w:uiPriority="99" w:name="List 3"/><w:lsdException w:uiPriority="99" w:name="List 4"/><w:lsdException w:uiPriority="99" w:name="List 5"/><w:lsdException w:uiPriority="99" w:name="List Bullet 2"/><w:lsdException w:uiPriority="99" w:name="List Bullet 3"/><w:lsdException w:uiPriority="99" w:name="List Bullet 4"/><w:lsdException w:uiPriority="99" w:name="List Bullet 5"/><w:lsdException w:uiPriority="99" w:name="List Number 2"/><w:lsdException w:uiPriority="99" w:name="List Number 3"/><w:lsdException w:uiPriority="99" w:name="List Number 4"/><w:lsdException w:uiPriority="99" w:name="List Number 5"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="10" w:semiHidden="0" w:name="Title"/><w:lsdException w:uiPriority="99" w:name="Closing"/><w:lsdException w:uiPriority="99" w:name="Signature"/><w:lsdException w:qFormat="1" w:uiPriority="1" w:semiHidden="0" w:name="Default Paragraph Font"/><w:lsdException w:uiPriority="99" w:name="Body Text"/><w:lsdException w:uiPriority="99" w:name="Body Text Indent"/><w:lsdException w:uiPriority="99" w:name="List Continue"/><w:lsdException w:uiPriority="99" w:name="List Continue 2"/><w:lsdException w:uiPriority="99" w:name="List Continue 3"/><w:lsdException w:uiPriority="99" w:name="List Continue 4"/><w:lsdException w:uiPriority="99" w:name="List Continue 5"/><w:lsdException w:uiPriority="99" w:name="Message Header"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="11" w:semiHidden="0" w:name="Subtitle"/><w:lsdException w:uiPriority="99" w:name="Salutation"/><w:lsdException w:uiPriority="99" w:name="Date"/><w:lsdException w:uiPriority="99" w:name="Body Text First Indent"/><w:lsdException w:uiPriority="99" w:name="Body Text First Indent 2"/><w:lsdException w:uiPriority="99" w:name="Note Heading"/><w:lsdException w:uiPriority="99" w:name="Body Text 2"/><w:lsdException w:uiPriority="99" w:name="Body Text 3"/><w:lsdException w:uiPriority="99" w:name="Body Text Indent 2"/><w:lsdException w:uiPriority="99" w:name="Body Text Indent 3"/><w:lsdException w:uiPriority="99" w:name="Block Text"/><w:lsdException w:uiPriority="99" w:name="Hyperlink"/><w:lsdException w:uiPriority="99" w:name="FollowedHyperlink"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="22" w:semiHidden="0" w:name="Strong"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="20" w:semiHidden="0" w:name="Emphasis"/><w:lsdException w:uiPriority="99" w:name="Document Map"/><w:lsdException w:uiPriority="99" w:name="Plain Text"/><w:lsdException w:uiPriority="99" w:name="E-mail Signature"/><w:lsdException w:uiPriority="99" w:name="Normal (Web)"/><w:lsdException w:uiPriority="99" w:name="HTML Acronym"/><w:lsdException w:uiPriority="99" w:name="HTML Address"/><w:lsdException w:uiPriority="99" w:name="HTML Cite"/><w:lsdException w:uiPriority="99" w:name="HTML Code"/><w:lsdException w:uiPriority="99" w:name="HTML Definition"/><w:lsdException w:uiPriority="99" w:name="HTML Keyboard"/><w:lsdException w:uiPriority="99" w:name="HTML Preformatted"/><w:lsdException w:uiPriority="99" w:name="HTML Sample"/><w:lsdException w:uiPriority="99" w:name="HTML Typewriter"/><w:lsdException w:uiPriority="99" w:name="HTML Variable"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="Normal Table"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="annotation subject"/><w:lsdException w:uiPriority="99" w:name="Table Simple 1"/><w:lsdException w:uiPriority="99" w:name="Table Simple 2"/><w:lsdException w:uiPriority="99" w:name="Table Simple 3"/><w:lsdException w:uiPriority="99" w:name="Table Classic 1"/><w:lsdException w:uiPriority="99" w:name="Table Classic 2"/><w:lsdException w:uiPriority="99" w:name="Table Classic 3"/><w:lsdException w:uiPriority="99" w:name="Table Classic 4"/><w:lsdException w:uiPriority="99" w:name="Table Colorful 1"/><w:lsdException w:uiPriority="99" w:name="Table Colorful 2"/><w:lsdException w:uiPriority="99" w:name="Table Colorful 3"/><w:lsdException w:uiPriority="99" w:name="Table Columns 1"/><w:lsdException w:uiPriority="99" w:name="Table Columns 2"/><w:lsdException w:uiPriority="99" w:name="Table Columns 3"/><w:lsdException w:uiPriority="99" w:name="Table Columns 4"/><w:lsdException w:uiPriority="99" w:name="Table Columns 5"/><w:lsdException w:uiPriority="99" w:name="Table Grid 1"/><w:lsdException w:uiPriority="99" w:name="Table Grid 2"/><w:lsdException w:uiPriority="99" w:name="Table Grid 3"/><w:lsdException w:uiPriority="99" w:name="Table Grid 4"/><w:lsdException w:uiPriority="99" w:name="Table Grid 5"/><w:lsdException w:uiPriority="99" w:name="Table Grid 6"/><w:lsdException w:uiPriority="99" w:name="Table Grid 7"/><w:lsdException w:uiPriority="99" w:name="Table Grid 8"/><w:lsdException w:uiPriority="99" w:name="Table List 1"/><w:lsdException w:uiPriority="99" w:name="Table List 2"/><w:lsdException w:uiPriority="99" w:name="Table List 3"/><w:lsdException w:uiPriority="99" w:name="Table List 4"/><w:lsdException w:uiPriority="99" w:name="Table List 5"/><w:lsdException w:uiPriority="99" w:name="Table List 6"/><w:lsdException w:uiPriority="99" w:name="Table List 7"/><w:lsdException w:uiPriority="99" w:name="Table List 8"/><w:lsdException w:uiPriority="99" w:name="Table 3D effects 1"/><w:lsdException w:uiPriority="99" w:name="Table 3D effects 2"/><w:lsdException w:uiPriority="99" w:name="Table 3D effects 3"/><w:lsdException w:uiPriority="99" w:name="Table Contemporary"/><w:lsdException w:uiPriority="99" w:name="Table Elegant"/><w:lsdException w:uiPriority="99" w:name="Table Professional"/><w:lsdException w:uiPriority="99" w:name="Table Subtle 1"/><w:lsdException w:uiPriority="99" w:name="Table Subtle 2"/><w:lsdException w:uiPriority="99" w:name="Table Web 1"/><w:lsdException w:uiPriority="99" w:name="Table Web 2"/><w:lsdException w:uiPriority="99" w:name="Table Web 3"/><w:lsdException w:uiPriority="99" w:name="Balloon Text"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="0" w:semiHidden="0" w:name="Table Grid"/><w:lsdException w:uiPriority="99" w:name="Table Theme"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 6"/></w:latentStyles><w:style w:type="paragraph" w:default="1" w:styleId="1"><w:name w:val="Normal"/><w:autoRedefine/><w:qFormat/><w:uiPriority w:val="0"/><w:pPr><w:widowControl w:val="0"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:kern w:val="2"/><w:sz w:val="21"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="2"><w:name w:val="heading 1"/><w:basedOn w:val="1"/><w:next w:val="1"/><w:autoRedefine/><w:qFormat/><w:uiPriority w:val="9"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before="340" w:beforeLines="0" w:beforeAutospacing="0" w:after="330" w:afterLines="0" w:afterAutospacing="0" w:line="576" w:lineRule="auto"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:b/><w:kern w:val="44"/><w:sz w:val="44"/></w:rPr></w:style><w:style w:type="character" w:default="1" w:styleId="9"><w:name w:val="Default Paragraph Font"/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="1"/></w:style><w:style w:type="table" w:default="1" w:styleId="7"><w:name w:val="Normal Table"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><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="3"><w:name w:val="annotation text"/><w:basedOn w:val="1"/><w:link w:val="11"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:pPr><w:jc w:val="left"/></w:pPr></w:style><w:style w:type="paragraph" w:styleId="4"><w:name w:val="footer"/><w:basedOn w:val="1"/><w:link w:val="12"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:pPr><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:snapToGrid w:val="0"/><w:jc w:val="left"/></w:pPr><w:rPr><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="宋体" w:cs="Times New Roman"/><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="5"><w:name w:val="header"/><w:basedOn w:val="1"/><w:link w:val="13"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:pPr><w:pBdr><w:bottom w:val="single" w:color="auto" w:sz="6" w:space="1"/></w:pBdr><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:snapToGrid w:val="0"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="宋体" w:cs="Times New Roman"/><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="6"><w:name w:val="annotation subject"/><w:basedOn w:val="3"/><w:next w:val="3"/><w:link w:val="14"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:b/><w:bCs/></w:rPr></w:style><w:style w:type="table" w:styleId="8"><w:name w:val="Table Grid"/><w:basedOn w:val="7"/><w:autoRedefine/><w:qFormat/><w:uiPriority w:val="0"/><w:pPr><w:widowControl w:val="0"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:kern w:val="0"/><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr><w:tblPr><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders></w:tblPr></w:style><w:style w:type="character" w:styleId="10"><w:name w:val="annotation reference"/><w:basedOn w:val="9"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:sz w:val="21"/><w:szCs w:val="21"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="11"><w:name w:val="批注文字 字符"/><w:basedOn w:val="9"/><w:link w:val="3"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:szCs w:val="24"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="12"><w:name w:val="页脚 字符"/><w:basedOn w:val="9"/><w:link w:val="4"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="13"><w:name w:val="页眉 字符"/><w:basedOn w:val="9"/><w:link w:val="5"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="14"><w:name w:val="批注主题 字符"/><w:basedOn w:val="11"/><w:link w:val="6"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:b/><w:bCs/><w:szCs w:val="24"/></w:rPr></w:style></w:styles></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/theme/theme1.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.theme+xml"><pkg:xmlData><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS ゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Angsana New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS 明朝"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Cordia New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:satMod val="350000"/><a:shade val="99000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/></a:theme></pkg:xmlData></pkg:part></pkg:package>
\ No newline at end of file
...@@ -2,11 +2,11 @@ package com.yeejoin.amos.boot.module.jyjc.api.entity; ...@@ -2,11 +2,11 @@ package com.yeejoin.amos.boot.module.jyjc.api.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date; import java.util.Date;
/** /**
...@@ -158,6 +158,9 @@ public class JyjcInspectionApplication extends BaseEntity { ...@@ -158,6 +158,9 @@ public class JyjcInspectionApplication extends BaseEntity {
@TableField("workflow_node") @TableField("workflow_node")
private String workflowNode; private String workflowNode;
/**
* 检验结果方式
*/
@TableField("result_type")
private String resultType;
} }
package com.yeejoin.amos.boot.module.jyjc.api.entity; package com.yeejoin.amos.boot.module.jyjc.api.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date; import java.util.Date;
...@@ -155,4 +154,16 @@ public class JyjcInspectionResult extends BaseEntity { ...@@ -155,4 +154,16 @@ public class JyjcInspectionResult extends BaseEntity {
*/ */
@TableField("inspection_type_name") @TableField("inspection_type_name")
private String inspectionTypeName; private String inspectionTypeName;
/**
* 报检日期
*/
@TableField("application_date")
private Date applicationDate;
/**
* 检验结果方式
*/
@TableField("result_type")
private String resultType;
} }
...@@ -7,6 +7,9 @@ import lombok.Data; ...@@ -7,6 +7,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.List;
import java.util.Map;
/** /**
* *
* *
...@@ -45,4 +48,10 @@ public class JyjcInspectionResultAttachment extends BaseEntity { ...@@ -45,4 +48,10 @@ public class JyjcInspectionResultAttachment extends BaseEntity {
@TableField("remark") @TableField("remark")
private String remark; private String remark;
/**
* 附件地址
*/
@TableField(exist = false)
private List<Object> attachmentUrlList;
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity; import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -66,6 +67,7 @@ public class JyjcOpeningApplication extends BaseEntity { ...@@ -66,6 +67,7 @@ public class JyjcOpeningApplication extends BaseEntity {
* 有效期至 * 有效期至
*/ */
@TableField("expiry_date") @TableField("expiry_date")
@JsonFormat (pattern = "yyyy-MM-dd")
private Date expiryDate; private Date expiryDate;
/** /**
......
package com.yeejoin.amos.boot.module.jyjc.api.enums;
public enum AttachmentTypeEnum {
SPECIAL_EQUIPMENT_REPORT("特种设备检验报告","1"),
INSPECTION_CERTIFICATE("监检证书","2");
private String name;
private String code;
public String getName() {
return name;
}
AttachmentTypeEnum(String name, String code) {
this.name = name;
this.code = code;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package com.yeejoin.amos.boot.module.jyjc.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.api.enums
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:25
*/
@Getter
@AllArgsConstructor
public enum BizTypeEnum {
SUPERVISE("supervise", "监督检验"),
FIRST_INSPECTION("firstinspect", "定检"),
DETECTION("detection", "检测");
private String code;
private String name;
public static List<String> getEnumNameList() {
List<String> codeList = new ArrayList<String>();
for (BizTypeEnum c : BizTypeEnum.values()) {
codeList.add(c.getCode());
}
return codeList;
}
}
...@@ -3,6 +3,9 @@ package com.yeejoin.amos.boot.module.jyjc.api.mapper; ...@@ -3,6 +3,9 @@ package com.yeejoin.amos.boot.module.jyjc.api.mapper;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationAttachment; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationAttachment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/** /**
* Mapper 接口 * Mapper 接口
* *
...@@ -13,4 +16,6 @@ public interface JyjcInspectionApplicationAttachmentMapper extends BaseMapper<Jy ...@@ -13,4 +16,6 @@ public interface JyjcInspectionApplicationAttachmentMapper extends BaseMapper<Jy
public void deleteByApplicationSeq(Long applicationSeq); public void deleteByApplicationSeq(Long applicationSeq);
public List<Map<String,Object>> getDataByApplicationSeq(Long applicationSeq);
} }
package com.yeejoin.amos.boot.module.jyjc.api.mapper; package com.yeejoin.amos.boot.module.jyjc.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import org.springframework.data.repository.query.Param;
import java.util.Map;
/** /**
* Mapper 接口 * Mapper 接口
...@@ -14,4 +19,8 @@ public interface JyjcInspectionApplicationMapper extends BaseMapper<JyjcInspecti ...@@ -14,4 +19,8 @@ public interface JyjcInspectionApplicationMapper extends BaseMapper<JyjcInspecti
public Page<JyjcInspectionApplication> queryForDataList( Page<JyjcInspectionApplication> page, String applicationNo, String inspectionClassify, String applicationUnitCode,String applicationUnitName, String equipClassify, String inspectionUnitCode,String inspectionUnitName, String applicationDate, String acceptDate, String inspectionChargePerson, String status , String bizType); public Page<JyjcInspectionApplication> queryForDataList( Page<JyjcInspectionApplication> page, String applicationNo, String inspectionClassify, String applicationUnitCode,String applicationUnitName, String equipClassify, String inspectionUnitCode,String inspectionUnitName, String applicationDate, String acceptDate, String inspectionChargePerson, String status , String bizType);
Page<JyjcInspectionApplicationEquipModel> listByCategory(Page<JyjcInspectionApplicationEquipModel> page,@Param("equipClassify") String equipClassify);
JyjcInspectionApplicationModel selectDataBySeq(Long sequenceNbr);
} }
...@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface JyjcInspectionApplicationPushLogMapper extends BaseMapper<JyjcInspectionApplicationPushLog> { public interface JyjcInspectionApplicationPushLogMapper extends BaseMapper<JyjcInspectionApplicationPushLog> {
void deleteByApplicationSeq(Long seq);
} }
...@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface JyjcInspectionEquipStatisticsMapper extends BaseMapper<JyjcInspectionEquipStatistics> { public interface JyjcInspectionEquipStatisticsMapper extends BaseMapper<JyjcInspectionEquipStatistics> {
void deleteByApplicationSeq(Long seq);
} }
...@@ -2,22 +2,22 @@ package com.yeejoin.amos.boot.module.jyjc.api.model; ...@@ -2,22 +2,22 @@ package com.yeejoin.amos.boot.module.jyjc.api.model;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date;
/** /**
*
*
* @author system_generator * @author system_generator
* @date 2023-12-14 * @date 2023-12-14
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value="JyjcInspectionApplicationEquipModel", description="") @ApiModel(value = "JyjcInspectionApplicationEquipModel", description = "")
public class JyjcInspectionApplicationEquipModel extends BaseModel { public class JyjcInspectionApplicationEquipModel extends BaseModel {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "报检申请表主键") @ApiModelProperty(value = "报检申请表主键")
...@@ -29,4 +29,60 @@ public class JyjcInspectionApplicationEquipModel extends BaseModel { ...@@ -29,4 +29,60 @@ public class JyjcInspectionApplicationEquipModel extends BaseModel {
@ApiModelProperty(value = "备注") @ApiModelProperty(value = "备注")
private String remark; private String remark;
@ApiModelProperty(value = "业务类型(与菜单对应拆表使用)")
private String bizType;
@ApiModelProperty(value = "设备类别")
private String equCategory;
@ApiModelProperty(value = "设备类别名称")
private String equCategoryName;
@ApiModelProperty(value = "检验检测类型编码")
private String inspectionType;
@ApiModelProperty(value = "检验检测类型名称(冗余)")
private String inspectionTypeName;
@ApiModelProperty(value = "报检日期")
private Date applicationDate;
@ApiModelProperty("检验结果方式")
private String resultType;
@ApiModelProperty(value = "设备种类")
private String equList;
@ApiModelProperty(value = "设备种类名称")
private String equListName;
@ApiModelProperty(value = "使用登记证编号")
private String useOrgCode;
@ApiModelProperty(value = "单位内部编号")
private String useInnerCode;
@ApiModelProperty(value = "注册代码")
private String equCode;
@ApiModelProperty(value = "设备使用地点省")
private String provinceName;
@ApiModelProperty(value = "设备使用地点市")
private String cityName;
@ApiModelProperty(value = "设备使用地点区")
private String countyName;
@ApiModelProperty(value = "设备使用地点街道")
private String streetName;
@ApiModelProperty(value = "设备使用地点详细")
private String address;
@ApiModelProperty(value = "使用单位")
private String useUnitName;
@ApiModelProperty(value = "使用单位统一信用代码")
private String useUnitCreditCode;
} }
...@@ -2,25 +2,24 @@ package com.yeejoin.amos.boot.module.jyjc.api.model; ...@@ -2,25 +2,24 @@ package com.yeejoin.amos.boot.module.jyjc.api.model;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
*
*
* @author system_generator * @author system_generator
* @date 2023-12-14 * @date 2023-12-14
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value="JyjcInspectionApplicationModel", description="") @ApiModel(value = "JyjcInspectionApplicationModel", description = "")
public class JyjcInspectionApplicationModel extends BaseModel { public class JyjcInspectionApplicationModel extends BaseModel {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "检验检测单位编码") @ApiModelProperty(value = "检验检测单位编码")
...@@ -67,6 +66,12 @@ public class JyjcInspectionApplicationModel extends BaseModel { ...@@ -67,6 +66,12 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "报检单位编号") @ApiModelProperty(value = "报检单位编号")
private String applicationUnitCode; private String applicationUnitCode;
@ApiModelProperty(value = "报检单位名称")
private String applicationUnitName;
@ApiModelProperty(value = "报检单位地址")
private String address;
@ApiModelProperty(value = "监管单位名称")
private String superviseOrgName;
@ApiModelProperty(value = "包含设备数量(冗余)") @ApiModelProperty(value = "包含设备数量(冗余)")
private Integer numberOfEquip; private Integer numberOfEquip;
...@@ -77,7 +82,7 @@ public class JyjcInspectionApplicationModel extends BaseModel { ...@@ -77,7 +82,7 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "工作流实例ID") @ApiModelProperty(value = "工作流实例ID")
private String processInstanceId; private String processInstanceId;
@ApiModelProperty(value = "工作流key") @ApiModelProperty(value = "工作流key")
private String processKey; private String processKey;
@ApiModelProperty(value = "申请单二维码") @ApiModelProperty(value = "申请单二维码")
...@@ -98,20 +103,43 @@ public class JyjcInspectionApplicationModel extends BaseModel { ...@@ -98,20 +103,43 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存") @ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存")
private String workflowNode; private String workflowNode;
@ApiModelProperty(value = "告知书") @ApiModelProperty(value = "告知书")
private List<Map<String,Object>> gzs; private List<Map<String,Object>> gzs;
@ApiModelProperty(value = "产品质量证明书") @ApiModelProperty(value = "产品质量证明书")
private List<Map<String,Object>> cpzl; private List<Map<String,Object>> cpzl;
@ApiModelProperty(value = "施工自行检查报告") @ApiModelProperty(value = "施工自行检查报告")
private List<Map<String,Object>> sgzx ; private List<Map<String,Object>> sgzx ;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存") @ApiModelProperty(value = "施工合同或证明")
private List<Map<String,Object>> sght; private List<Map<String,Object>> sght;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存") @ApiModelProperty(value = "施工方案/施工设计文件")
private List<Map<String,Object>> sgfa; private List<Map<String,Object>> sgfa;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存") @ApiModelProperty(value = "施工单位许可证书")
private List<Map<String,Object>> sgdwxk; private List<Map<String,Object>> sgdwxk;
@ApiModelProperty(value = "型式试验证书")
private List<Map<String,Object>> xssy;
@ApiModelProperty(value = "限速器和渐进式安全钳的调试证书")
private List<Map<String,Object>> xsqts;
@ApiModelProperty(value = "土建声明")
private List<Map<String,Object>> tjsm;
@ApiModelProperty(value = "质量保证手册和程序文件")
private List<Map<String,Object>> zlbz;
@ApiModelProperty(value = "施工作业文件")
private List<Map<String,Object>> sgzy;
@ApiModelProperty(value = "施工人员、质量保证体系责任人、专业技术人员身份证、技术工人的身份证及资质证书")
private List<Map<String,Object>> sgry;
@ApiModelProperty(value = "产品技术文件")
private List<Map<String,Object>> cpjs;
@ApiModelProperty(value = "施工设计文件")
private List<Map<String,Object>> sgsj;
@ApiModelProperty(value = "施工分包方目录")
private List<Map<String,Object>> sgfb;
@ApiModelProperty(value = "分包方评价资料")
private List<Map<String,Object>> fbspj;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存") @ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存")
private List<Map<String,Object>> equip; private List<Map<String,Object>> equip;
@ApiModelProperty("检验结果方式")
private String resultType;
} }
...@@ -7,6 +7,8 @@ import lombok.EqualsAndHashCode; ...@@ -7,6 +7,8 @@ import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel; import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Map;
/** /**
* 业务开通申请表 * 业务开通申请表
...@@ -31,6 +33,7 @@ public class JyjcInspectionResultModel extends BaseModel { ...@@ -31,6 +33,7 @@ public class JyjcInspectionResultModel extends BaseModel {
@ApiModelProperty(value = "报检单位编号") @ApiModelProperty(value = "报检单位编号")
private String applicationUnitCode; private String applicationUnitCode;
//监管码
@ApiModelProperty(value = "设备唯一标识") @ApiModelProperty(value = "设备唯一标识")
private String equipUnicode; private String equipUnicode;
...@@ -91,12 +94,15 @@ public class JyjcInspectionResultModel extends BaseModel { ...@@ -91,12 +94,15 @@ public class JyjcInspectionResultModel extends BaseModel {
@ApiModelProperty(value = "检验检测类型名称(冗余)") @ApiModelProperty(value = "检验检测类型名称(冗余)")
private String inspectionTypeName; private String inspectionTypeName;
@ApiModelProperty(value = "报检日期")
private Date applicationDate;
@ApiModelProperty("检验结果方式")
private String resultType;
@ApiModelProperty(value = "设备种类") @ApiModelProperty(value = "设备种类")
private String equList; private String equList;
@ApiModelProperty(value = "监管码")
private String supervisoryCode;
@ApiModelProperty(value = "使用登记证编号") @ApiModelProperty(value = "使用登记证编号")
private String useOrgCode; private String useOrgCode;
...@@ -120,8 +126,8 @@ public class JyjcInspectionResultModel extends BaseModel { ...@@ -120,8 +126,8 @@ public class JyjcInspectionResultModel extends BaseModel {
private String useUnitCreditCode; private String useUnitCreditCode;
@ApiModelProperty(value = "检验结果技术参数") @ApiModelProperty(value = "检验结果技术参数")
private JyjcInspectionResultParamModel resultParamModel; private Map<String,Object> resultParamModelMap;
@ApiModelProperty(value = "检验结果附件") @ApiModelProperty(value = "附件类型(特种设备检验报告:1,监检证书:2)")
private JyjcInspectionResultAttachmentModel resultAttachmentModel; private String attachmentType;
} }
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.api.model; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.api.model;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto; import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseUnitLicenceDto; import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseUnitLicenceDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto; import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
...@@ -44,6 +45,7 @@ public class JyjcOpeningApplicationModel extends BaseModel { ...@@ -44,6 +45,7 @@ public class JyjcOpeningApplicationModel extends BaseModel {
private String resultType; private String resultType;
@ApiModelProperty (value = "有效期至") @ApiModelProperty (value = "有效期至")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date expiryDate; private Date expiryDate;
@ApiModelProperty (value = "受理日期(接收日期)") @ApiModelProperty (value = "受理日期(接收日期)")
......
package com.yeejoin.amos.boot.module.jyjc.api.service;
import java.util.Map;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.api.service
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 15:55
*/
public interface IJyjcInspectionApplicationHandlerService {
String type();
boolean notifyInspectionUnit(Map<String, Object> params);
}
package com.yeejoin.amos.boot.module.jyjc.api.service; package com.yeejoin.amos.boot.module.jyjc.api.service;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import java.util.List;
/** /**
* 接口类 * 接口类
* *
* @author system_generator * @author system_generator
* @date 2023-12-14 * @date 2023-12-14
*/ */
public interface IJyjcInspectionApplicationService {} public interface IJyjcInspectionApplicationService {
void deleteBatchData(List<Long> sequenceNbr);
}
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jyjc.api.service; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jyjc.api.service;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 检验结果技术参数表接口类 * 检验结果技术参数表接口类
...@@ -17,4 +18,11 @@ public interface IJyjcInspectionResultParamService { ...@@ -17,4 +18,11 @@ public interface IJyjcInspectionResultParamService {
* @return * @return
*/ */
List<JyjcInspectionResultParam> getParamByResultSeq(Long sequenceNbr); List<JyjcInspectionResultParam> getParamByResultSeq(Long sequenceNbr);
/**
* 根据设备code获取技术参数字段
* @param equipTypeCode 设备code
* @return 字段列表
*/
List<Map<String,Object>> getParamByEquipTypeCode(String equipTypeCode);
} }
package com.yeejoin.amos.boot.module.jyjc.api.service; package com.yeejoin.amos.boot.module.jyjc.api.service;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -18,4 +21,12 @@ public interface IJyjcInspectionResultService { ...@@ -18,4 +21,12 @@ public interface IJyjcInspectionResultService {
* @return 检验结果实体 * @return 检验结果实体
*/ */
Map<String, Object> queryDetailBySeq(Long sequenceNbr); Map<String, Object> queryDetailBySeq(Long sequenceNbr);
/**
* 获取设备种类
* @param type 获取的类型
* @param notNode 不需要节点
* @return 列表
*/
List<Map<String,Object>> equipList(String type, String notNode);
} }
...@@ -8,8 +8,16 @@ ...@@ -8,8 +8,16 @@
from from
tz_jyjc_inspection_application_attachment tz_jyjc_inspection_application_attachment
where where
application_seq = #{applicationSeq} application_seq =
#{applicationSeq}
</delete> </delete>
<select id="getDataByApplicationSeq" resultType="map">
select *
from tz_jyjc_inspection_application_attachment
where application_seq = #{applicationSeq}
</select>
</mapper> </mapper>
...@@ -5,26 +5,27 @@ ...@@ -5,26 +5,27 @@
<select id="queryForDataList" <select id="queryForDataList"
resultType="com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication"> resultType="com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication">
select select
tzjia.applicationNo, tzjia.application_no,
tzjia.inspectionType, tzjia.inspection_type,
tzjia.inspectionUnitName, (select name from cb_data_dictionary where cb_data_dictionary.code = tzjia.inspection_classify and cb_data_dictionary.type = 'JYJCLB') as inspectionClassify,
tzjia.equipClassify, tzjia.inspection_unit_code,
tzjia.numberOfEquip, (select name from cb_data_dictionary where cb_data_dictionary.code = tzjia.equip_classify and cb_data_dictionary.type = 'BJSBZL') as equipClassify,
tzjia.inspectionUnitName, tzjia.number_of_equip,
tzjia.applicationDate, tzjia.inspection_unit_code,
tzjia.acceptDate, tzjia.application_date,
tzjia.inspectionChargePerson, tzjia.accept_date,
tzjia.inspectionChargePhone, tzjia.inspection_charge_phone,
tzjia.inspection_charge_person,
tzjia.status tzjia.status
from from
tz_jyjc_inspection_application as tzjia tz_jyjc_inspection_application as tzjia
where <where>
tzjia.is_delete = 0
<if test=" applicationNo != null and applicationNo != ''"> <if test=" applicationNo != null and applicationNo != ''">
and applicationNo like concat('%',#{applicationNo}.'%') and application_no like concat('%',#{applicationNo}.'%')
</if> </if>
<if test="inspectionType != null and inspectionType != ''"> <if test="inspectionClassify != null and inspectionClassify != ''">
and inspectionType = #{inspectionType} and inspection_classify = #{inspectionClassify}
</if> </if>
<if test="inspectionUnitName != null and inspectionUnitName != ''"> <if test="inspectionUnitName != null and inspectionUnitName != ''">
and inspection_unit_code in (select use_code from tz_base_enterprise_info where use_unit like concat('%',#{inspectionUnitName},'%')) and inspection_unit_code in (select use_code from tz_base_enterprise_info where use_unit like concat('%',#{inspectionUnitName},'%'))
...@@ -39,22 +40,16 @@ ...@@ -39,22 +40,16 @@
and application_unit_code in (select use_code from tz_base_enterprise_info where use_unit like concat('%',#{inspectionUnitName},'%')) and application_unit_code in (select use_code from tz_base_enterprise_info where use_unit like concat('%',#{inspectionUnitName},'%'))
</if> </if>
<if test="equipClassify != null and equipClassify != ''"> <if test="equipClassify != null and equipClassify != ''">
and equipClassify = #{equipClassify} and equip_classify = #{equipClassify}
</if>
<if test="numberOfEquip != null and numberOfEquip != ''">
and numberOfEquip = #{numberOfEquip}
</if> </if>
<if test="applicationDate != null and applicationDate != ''"> <if test="applicationDate != null and applicationDate != ''">
and applicationDate = #{applicationDate} and application_date = #{applicationDate}
</if> </if>
<if test="acceptDate != null and acceptDate != ''"> <if test="acceptDate != null and acceptDate != ''">
and acceptDate = #{acceptDate} and accept_date = #{acceptDate}
</if> </if>
<if test="inspectionChargePerson != null and inspectionChargePerson != ''"> <if test="inspectionChargePerson != null and inspectionChargePerson != ''">
and inspectionChargePerson like concat('%',#{inspectionChargePerson}.'%') and inspection_charge_person like concat('%',#{inspectionChargePerson}.'%')
</if>
<if test="inspectionChargePhone != null and inspectionChargePhone != ''">
and inspectionChargePhone like concat('%',#{inspectionChargePhone}.'%')
</if> </if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
and status = #{status} and status = #{status}
...@@ -62,5 +57,48 @@ ...@@ -62,5 +57,48 @@
<if test="bizType != null and bizType != ''"> <if test="bizType != null and bizType != ''">
and biz_type = #{bizType} and biz_type = #{bizType}
</if> </if>
</where>
</select>
<select id="listByCategory"
resultType="com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel">
select
use_unit_name,
use_unit_credit_code,
province_name,
city_name,
county_name,
street_name,
address,
use_inner_code,
equ_list,
tec1.name equ_list_name,
equ_category,
tec.name equ_category_name,
use_org_code,
equ_code,
supervisory_code
from
idx_biz_jg_use_info ibjui
left join idx_biz_jg_register_info ibjri on ibjui.record = ibjri.record
left join idx_biz_jg_other_info ibjoi on ibjui.record = ibjoi.record
left join amos_tzs_biz.tz_equipment_category tec on ibjri.equ_category = tec.code
left join amos_tzs_biz.tz_equipment_category tec1 on ibjri.equ_list = tec1.code
<where>
<if test="equipClassify != null and equipClassify != ''">
and equ_list = #{equipClassify}
</if>
</where>
</select>
<select id="selectDataBySeq" resultType="com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel">
SELECT
tzjia.*,
tbei.supervise_org_name AS superviseOrgName,
tbei.use_unit AS applicationUnitName,
tbei.address AS address
FROM
tz_jyjc_inspection_application AS tzjia
LEFT JOIN tz_base_enterprise_info tbei ON tzjia.application_unit_code = tbei.use_code
WHERE
tzjia.sequence_nbr = #{sequenceNbr}
</select> </select>
</mapper> </mapper>
...@@ -2,4 +2,12 @@ ...@@ -2,4 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationPushLogMapper"> <mapper namespace="com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationPushLogMapper">
<delete id="deleteByApplicationSeq">
delete
*
from
tz_jyjc_inspection_application_push_log
where
application_seq = #{applicationSeq}
</delete>
</mapper> </mapper>
...@@ -2,4 +2,12 @@ ...@@ -2,4 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionEquipStatisticsMapper"> <mapper namespace="com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionEquipStatisticsMapper">
<delete id="deleteByApplicationSeq">
delete
*
from
tz_jyjc_inspection_equip_statistics
where
application_seq = #{applicationSeq}
</delete>
</mapper> </mapper>
...@@ -4,22 +4,54 @@ ...@@ -4,22 +4,54 @@
<select id="selectJyjcInspectionResultpPage" <select id="selectJyjcInspectionResultpPage"
resultType="com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel"> resultType="com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel">
SELECT sequence_nbr, inspection_unit_code, application_no, application_unit_code, equip_unicode, result_status, select res.sequence_nbr, res.inspection_unit_code, res.application_no, res.application_unit_code,
license_number, result_no, inspector, inner_person_code, inspection_conclusion, inspection_date, res.equip_unicode, res.result_status, res.license_number, res.result_no, res.inspector, res.inner_person_code,
next_inspection_date, inspection_start_date, inspection_end_date, inspection_result_summary, non_conformance, res.inspection_conclusion, res.inspection_date, res.next_inspection_date, res.inspection_start_date,
rectification, remark, rec_user_id, rec_date, biz_type res.inspection_end_date, res.inspection_result_summary, res.non_conformance, res.rectification, res.remark,
FROM tz_jyjc_inspection_result res.rec_user_id, res.rec_date, res.biz_type,res.equ_category, res.inspection_type, res.inspection_type_name,
res.application_date,use_unit_name, use_unit_credit_code, province_name, city_name, county_name, street_name,
address, equ_code, use_inner_code, equ_list, tec1.name equ_list_name, ibjri.equ_category, tec.name
equ_category_name, use_org_code
from tz_jyjc_inspection_result res
left join idx_biz_jg_other_info ibjoi on res.equip_unicode = ibjoi.supervisory_code
left join idx_biz_jg_use_info ibjui on ibjui.record = ibjoi.record
left join idx_biz_jg_register_info ibjri on ibjui.record = ibjri.record
left join tz_equipment_category tec on ibjri.equ_category = tec.code
left join tz_equipment_category tec1 on ibjri.equ_list = tec1.code
<where> <where>
<if test="jyjcInspectionResultModel.applicationNo != '' and jyjcInspectionResultModel.applicationNo != null"> <if test="jyjcInspectionResultModel.applicationNo != '' and jyjcInspectionResultModel.applicationNo != null">
and application_no like concat('%',#{jyjcInspectionResultModel.applicationNo},'%') and res.application_no like concat('%',#{jyjcInspectionResultModel.applicationNo},'%')
</if> </if>
<if test="jyjcInspectionResultModel.inspectionUnitCode != '' and jyjcInspectionResultModel.inspectionUnitCode != null"> <if test="jyjcInspectionResultModel.inspectionUnitCode != '' and jyjcInspectionResultModel.inspectionUnitCode != null">
and inspection_unit_code = #{jyjcInspectionResultModel.inspectionUnitCode} and res.inspection_unit_code = #{jyjcInspectionResultModel.inspectionUnitCode}
</if> </if>
<if test="jyjcInspectionResultModel.applicationUnitCode != '' and jyjcInspectionResultModel.applicationUnitCode != null"> <if test="jyjcInspectionResultModel.applicationUnitCode != '' and jyjcInspectionResultModel.applicationUnitCode != null">
and application_unit_code = #{jyjcInspectionResultModel.applicationUnitCode} and res.application_unit_code = #{jyjcInspectionResultModel.applicationUnitCode}
</if>
<if test="jyjcInspectionResultModel.useUnitCreditCode != '' and jyjcInspectionResultModel.useUnitCreditCode != null">
and use_unit_credit_code like concat('%',#{jyjcInspectionResultModel.useUnitCreditCode},'%')
</if>
<if test="jyjcInspectionResultModel.useInnerCode != '' and jyjcInspectionResultModel.useInnerCode != null">
and use_inner_code like concat('%',#{jyjcInspectionResultModel.useInnerCode},'%')
</if>
<if test="jyjcInspectionResultModel.equCode != '' and jyjcInspectionResultModel.equCode != null">
and equ_code like concat('%',#{jyjcInspectionResultModel.equCode},'%')
</if>
<if test="jyjcInspectionResultModel.useOrgCode != '' and jyjcInspectionResultModel.useOrgCode != null">
and use_org_code like concat('%',#{jyjcInspectionResultModel.useOrgCode},'%')
</if>
<if test="jyjcInspectionResultModel.equipUnicode != '' and jyjcInspectionResultModel.equipUnicode != null">
and res.equip_unicode like concat('%',#{jyjcInspectionResultModel.equipUnicode},'%')
</if>
<if test="jyjcInspectionResultModel.equCategory != '' and jyjcInspectionResultModel.equCategory != null">
and ibjri.equ_category = #{jyjcInspectionResultModel.equCategory}
</if>
<if test="jyjcInspectionResultModel.inspectionType != '' and jyjcInspectionResultModel.inspectionType != null">
and res.inspection_type = #{jyjcInspectionResultModel.inspectionType}
</if>
<if test="jyjcInspectionResultModel.applicationDate!=null">
AND TO_DAYS(res.application_date) = TO_DAYS(#{jyjcInspectionResultModel.applicationDate})
</if> </if>
</where> </where>
</select> </select>
</mapper> </mapper>
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
workflow_prostance_id, workflow_prostance_id,
workflow_role, workflow_role,
unit_code_name, unit_code_name,
status, status_name,
status_name workflow_active_key
from tz_jyjc_opening_application from tz_jyjc_opening_application
<where> <where>
<if test="jyjcOpeningApplicationRequstDto.applicationSeq != '' and jyjcOpeningApplicationRequstDto.applicationSeq != null"> <if test="jyjcOpeningApplicationRequstDto.applicationSeq != '' and jyjcOpeningApplicationRequstDto.applicationSeq != null">
......
package com.yeejoin.amos.boot.module.jyjc.biz.config; package com.yeejoin.amos.boot.module.jyjc.biz.config;
import com.yeejoin.amos.boot.module.ymt.api.enums.BaseExceptionEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.BaseExceptionEnum;
/** /**
......
package com.yeejoin.amos.boot.module.jyjc.biz.config; package com.yeejoin.amos.boot.module.jyjc.biz.config;
import com.yeejoin.amos.boot.module.ymt.api.common.BaseException;
import com.yeejoin.amos.boot.module.ymt.api.enums.CommonErrorEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.CommonErrorEnum;
/** /**
......
package com.yeejoin.amos.boot.module.jyjc.biz.controller; package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationModel;
import com.yeejoin.amos.boot.module.jyjc.biz.config.BaseException;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonserviceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonserviceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcOpeningApplicationServiceImpl; import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
*
* @author system_generator * @author system_generator
* @date 2023-12-13 * @date 2023-12-13
*/ */
...@@ -39,9 +24,8 @@ import java.util.stream.Collectors; ...@@ -39,9 +24,8 @@ import java.util.stream.Collectors;
@RequestMapping(value = "/common") @RequestMapping(value = "/common")
public class CommonController extends BaseController { public class CommonController extends BaseController {
@Autowired @Autowired
CommonserviceImpl commonserviceImpl; CommonserviceImpl commonserviceImpl;
/** /**
* 新增 * 新增
...@@ -49,10 +33,21 @@ public class CommonController extends BaseController { ...@@ -49,10 +33,21 @@ public class CommonController extends BaseController {
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/getJyjcPersonByUnitCode") @PostMapping(value = "/getJyjcPersonByUnitCode")
@ApiOperation(httpMethod = "GET", value = "根据公司的unitCode获取检测检验人员列表", notes = "根据公司的unitCode获取检测检验人员列表") @ApiOperation(httpMethod = "GET", value = "根据公司的unitCode获取检测检验人员列表", notes = "根据公司的unitCode获取检测检验人员列表")
public ResponseModel<List<TzsUserInfo>> getUserInfosByUnitCode(@RequestParam String unitCode) { public ResponseModel<List<TzsUserInfo>> getUserInfosByUnitCode(@RequestParam String unitCode) {
return ResponseHelper.buildResponse(commonserviceImpl.getUserInfosByUnitCode(unitCode)); return ResponseHelper.buildResponse(commonserviceImpl.getUserInfosByUnitCode(unitCode));
} }
/**
* 查询检验检测机构列表(基本信息及联系人)
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getInspectionUnitList")
@ApiOperation(httpMethod = "GET", value = "查询检验检测机构列表(基本信息及联系人)", notes = "查询检验检测机构列表(基本信息及联系人)")
public ResponseModel<List<TzBaseEnterpriseInfo>> getInspectionUnitList() {
return ResponseHelper.buildResponse(commonserviceImpl.getInspectionUnitList());
}
} }
package com.yeejoin.amos.boot.module.jyjc.biz.controller; package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.enums.WorkFlowEnum;
import com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip;
import com.yeejoin.amos.boot.module.jyjc.api.enums.DocumentEnum;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationAttachmentModel;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationAttachmentServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationEquipServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import java.util.ArrayList; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import java.util.List; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import java.util.Map;
import java.util.stream.Collectors;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationServiceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationServiceImpl;
import org.typroject.tyboot.core.rdbms.annotation.Condition; import io.swagger.annotations.Api;
import org.typroject.tyboot.core.rdbms.annotation.Operator; import io.swagger.annotations.ApiOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import static com.yeejoin.amos.boot.biz.common.service.impl.WorkflowExcuteServiceImpl.buildOrderNo; import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* *
...@@ -56,12 +35,7 @@ public class JyjcInspectionApplicationController extends BaseController { ...@@ -56,12 +35,7 @@ public class JyjcInspectionApplicationController extends BaseController {
@Autowired @Autowired
JyjcInspectionApplicationServiceImpl jyjcInspectionApplicationServiceImpl; JyjcInspectionApplicationServiceImpl jyjcInspectionApplicationServiceImpl;
@Autowired
JyjcInspectionApplicationAttachmentServiceImpl jyjcInspectionApplicationAttachmentService;
@Autowired
JyjcInspectionApplicationEquipServiceImpl jyjcInspectionApplicationEquipService;
@Autowired
WorkflowFeignService workflowFeignService;
/** /**
* 新增 * 新增
...@@ -73,81 +47,9 @@ public class JyjcInspectionApplicationController extends BaseController { ...@@ -73,81 +47,9 @@ public class JyjcInspectionApplicationController extends BaseController {
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增") @ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JyjcInspectionApplicationModel> save(@RequestBody JyjcInspectionApplicationModel model) { public ResponseModel<JyjcInspectionApplicationModel> save(@RequestBody JyjcInspectionApplicationModel model) {
//开启报检流程工作流 ReginParams selectedOrgInfo = getSelectedOrgInfo();
model.setApplicationUnitCode(selectedOrgInfo.getCompany().getCompanyCode());
if ( !model.getOperationType().equals("2")){ return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.save(model));
if (model.getOperationType().equals("0")){
JSONObject body = new JSONObject();
String businessKey = buildOrderNo();
body.put(WorkFlowEnum.BUSINESSKEY.getCode(), businessKey);
body.put(WorkFlowEnum.processDefinitionKey.getCode(), model.getProcessKey());
JSONObject jsonObject = workflowFeignService.startProcess(body);
String processId = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("result"))).getString("id");
model.setProcessInstanceId(processId);
model.setStatus("已提交");
}else if ( model.getOperationType().equals("1")){
model.setStatus("草稿");
}
model = jyjcInspectionApplicationServiceImpl.createWithModel(model);
//保存报检装备监管码
if ( model.getEquip().size() > 0){
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件保存
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
for (String code : enumNameList) {
if (map.containsKey(code)){
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
}else {
//更新报检装备监管码
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
if ( model.getEquip().size() > 0){
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件更新
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
jyjcInspectionApplicationAttachmentService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
for (String code : enumNameList) {
if (map.containsKey(code)){
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
model.setStatus("已提交");
jyjcInspectionApplicationServiceImpl.updateWithModel(model);
}
return ResponseHelper.buildResponse(model);
} }
...@@ -163,7 +65,6 @@ public class JyjcInspectionApplicationController extends BaseController { ...@@ -163,7 +65,6 @@ public class JyjcInspectionApplicationController extends BaseController {
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新") @ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<JyjcInspectionApplicationModel> updateBySequenceNbrJyjcInspectionApplication(@RequestBody JyjcInspectionApplicationModel model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) { public ResponseModel<JyjcInspectionApplicationModel> updateBySequenceNbrJyjcInspectionApplication(@RequestBody JyjcInspectionApplicationModel model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr); model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.updateWithModel(model)); return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.updateWithModel(model));
} }
...@@ -181,6 +82,25 @@ public class JyjcInspectionApplicationController extends BaseController { ...@@ -181,6 +82,25 @@ public class JyjcInspectionApplicationController extends BaseController {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.removeById(sequenceNbr)); return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.removeById(sequenceNbr));
} }
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/deleteBatch")
@ApiOperation(httpMethod = "DELETE", value = "批量删除", notes = "批量删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, List<Long>sequenceNbr){
jyjcInspectionApplicationServiceImpl.deleteBatchData(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.deleteBatchSeq(sequenceNbr));
}
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
* *
...@@ -190,8 +110,8 @@ public class JyjcInspectionApplicationController extends BaseController { ...@@ -190,8 +110,8 @@ public class JyjcInspectionApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}") @GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个") @ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<JyjcInspectionApplicationModel> selectOne(@PathVariable Long sequenceNbr) { public ResponseModel<Map<String,Object>> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.queryBySeq(sequenceNbr)); return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.selectBySeq(sequenceNbr));
} }
/** /**
...@@ -260,4 +180,76 @@ public class JyjcInspectionApplicationController extends BaseController { ...@@ -260,4 +180,76 @@ public class JyjcInspectionApplicationController extends BaseController {
public ResponseModel<List<JyjcInspectionApplicationModel>> selectForList() { public ResponseModel<List<JyjcInspectionApplicationModel>> selectForList() {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.queryForJyjcInspectionApplicationList()); return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.queryForJyjcInspectionApplicationList());
} }
/**
* 接收接口
*
*
* @param params params
* @return {@link ResponseModel< HashMap< String String>>}
* @author yangyang
* @throws
* @date 2023/12/15 11:25
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST",value = "接收", notes = "接收")
@PostMapping(value = "/flow/{type}/receive")
public ResponseModel<HashMap<String,String>> execueFlow(@PathVariable(value = "type") String type, @RequestBody Map<String, Object> params) {
params.put("type", type);
jyjcInspectionApplicationServiceImpl.doReceive(params);
HashMap<String,String> result =new HashMap<>();
result.put("result","success");
return ResponseHelper.buildResponse(result);
}
/**
* 退回接口(监督检验、定(首)检、检测)-通用
*
*
* @param params params
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 13:44
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "退回", notes = "退回")
@PostMapping(value = "/flow/reject")
public void doRejectFlow(@RequestBody Map<String,Object> params) {
jyjcInspectionApplicationServiceImpl.doReject(params);
}
/**
* 撤回接口(监督检验、定(首)检、检测)-通用
*
*
* @param instanceId instanceId
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 13:39
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "撤回", notes = "撤回")
@GetMapping(value = "/flow/rollback")
public void doRollbackFlow(@RequestParam("instanceId") String instanceId) {
jyjcInspectionApplicationServiceImpl.doRollback(instanceId);
}
/**
* 查询指定设备种类的设备列表
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "查询指定设备种类的设备列表", notes = "查询指定设备种类的设备列表")
@GetMapping(value = "/listByCategory")
public ResponseModel<Page<JyjcInspectionApplicationEquipModel>> listByCategory(
@RequestParam("current") int current,
@RequestParam("size") int size,
@RequestParam("equipClassify") String equipClassify) {
Page<JyjcInspectionApplicationEquipModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.listByCategory(page,equipClassify));
}
} }
...@@ -18,8 +18,6 @@ import java.util.List; ...@@ -18,8 +18,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
*
*
* @author system_generator * @author system_generator
* @date 2023-12-14 * @date 2023-12-14
*/ */
...@@ -37,28 +35,28 @@ public class JyjcInspectionResultController extends BaseController { ...@@ -37,28 +35,28 @@ public class JyjcInspectionResultController extends BaseController {
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save") @PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增") @ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JyjcInspectionResultModel> save(@RequestBody JyjcInspectionResultModel model) { public ResponseModel<JyjcInspectionResultModel> save(@RequestBody JyjcInspectionResultModel model) {
model = jyjcInspectionResultServiceImpl.createWithModel(model); model = jyjcInspectionResultServiceImpl.createWithModel(model);
return ResponseHelper.buildResponse(model); return ResponseHelper.buildResponse(model);
} }
/** /**
* 根据sequenceNbr更新 * 根据sequenceNbr更新
* *
* @param sequenceNbr 主键 * @param sequenceNbr 主键
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}") @PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新") @ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<JyjcInspectionResultModel> updateBySequenceNbrJyjcInspectionResult(@RequestBody JyjcInspectionResultModel model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) { public ResponseModel<JyjcInspectionResultModel> updateBySequenceNbrJyjcInspectionResult(@RequestBody JyjcInspectionResultModel model, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr); model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.updateWithModel(model)); return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.updateWithModel(model));
} }
/** /**
* 根据sequenceNbr删除 * 根据sequenceNbr删除
* *
* @param sequenceNbr 主键 * @param sequenceNbr 主键
...@@ -67,75 +65,76 @@ public class JyjcInspectionResultController extends BaseController { ...@@ -67,75 +65,76 @@ public class JyjcInspectionResultController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}") @DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除") @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){ public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.removeById(sequenceNbr)); return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.removeById(sequenceNbr));
} }
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
* *
* @param sequenceNbr 主键 * @param sequenceNbr 主键
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}") @GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个") @ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<Map<String, Object>> selectOne(@PathVariable Long sequenceNbr) { public ResponseModel<Map<String, Object>> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryDetailBySeq(sequenceNbr)); return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryDetailBySeq(sequenceNbr));
} }
/** /**
* 列表全部数据查询 * 列表全部数据查询
* *
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询") @ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public ResponseModel<List<JyjcInspectionResultModel>> selectForList() { public ResponseModel<List<JyjcInspectionResultModel>> selectForList() {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultList()); return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultList());
} }
/** /**
* 列表页面(报检单位) * 列表页面(报检单位)
* *
* @param current 当前页 * @param current 当前页
* @param size 当前页大小 * @param size 当前页大小
* @param model 查询参数 * @param model 查询参数
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/applicationUnitPage") @PostMapping(value = "/applicationUnitPage")
@ApiOperation(httpMethod = "GET", value = "列表页面(报检单位)", notes = "列表页面(报检单位)") @ApiOperation(httpMethod = "Post", value = "列表页面(报检单位)", notes = "列表页面(报检单位)")
public ResponseModel<Page<JyjcInspectionResultModel>> applicationUnitQueryForPage( public ResponseModel<Page<JyjcInspectionResultModel>> applicationUnitQueryForPage(
@RequestParam(value = "current") int current, @RequestParam int current, @RequestParam int size,
@RequestParam(value = "size") int size, JyjcInspectionResultModel model) { @RequestBody JyjcInspectionResultModel model) {
Page<JyjcInspectionResultModel> page = new Page<>(); Page<JyjcInspectionResultModel> page = new Page<>();
page.setCurrent(current); page.setCurrent(current);
page.setSize(size); page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, false)); return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, false));
} }
/**
* 列表页面(检验检测单位)
*
* @param current 当前页
* @param size 当前页大小
* @param model 查询参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/inspectionUnitPage")
@ApiOperation(httpMethod = "POST", value = "列表页面(检验检测单位)", notes = "列表页面(检验检测单位)")
public ResponseModel<Page<JyjcInspectionResultModel>> inspectionUnitQueryForPage(
@RequestParam int current, @RequestParam int size,
@RequestBody JyjcInspectionResultModel model) {
Page<JyjcInspectionResultModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, true));
}
/**
* 列表页面(检验检测单位)
*
* @param current 当前页
* @param size 当前页大小
* @param model 查询参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/inspectionUnitPage")
@ApiOperation(httpMethod = "GET", value = "列表页面(检验检测单位)", notes = "列表页面(检验检测单位)")
public ResponseModel<Page<JyjcInspectionResultModel>> inspectionUnitQueryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size, JyjcInspectionResultModel model) {
Page<JyjcInspectionResultModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, true));
}
/** /**
* 检验结果-上传结果和编辑结果 * 检验结果-上传结果和编辑结果
...@@ -145,7 +144,21 @@ public class JyjcInspectionResultController extends BaseController { ...@@ -145,7 +144,21 @@ public class JyjcInspectionResultController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/updateResult") @PutMapping(value = "/updateResult")
@ApiOperation(httpMethod = "PUT", value = "检验结果-上传结果和编辑结果", notes = "检验结果-上传结果和编辑结果") @ApiOperation(httpMethod = "PUT", value = "检验结果-上传结果和编辑结果", notes = "检验结果-上传结果和编辑结果")
public ResponseModel<JyjcInspectionResultModel> updateJyjcInspectionResult(@RequestBody JyjcInspectionResultModel model) { public ResponseModel<JyjcInspectionResultModel> updateJyjcInspectionResult(@RequestBody Map<String, Map<String, Object>> model) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.updateJyjcInspectionResult(model)); return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.updateJyjcInspectionResult(model));
} }
/**
* 获取设备种类列表
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "获取设备种类列表", notes = "获取设备种类列表")
@GetMapping(value = "/equipTypeList")
public ResponseModel<List<Map<String, Object>>> equipTypeList(@RequestParam(required = false) String type, @RequestParam(required = false) String notNode) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.equipList(type, notNode));
}
} }
...@@ -6,6 +6,8 @@ import io.swagger.annotations.Api; ...@@ -6,6 +6,8 @@ import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.util.List; import java.util.List;
import java.util.Map;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionResultParamServiceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionResultParamServiceImpl;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
...@@ -113,4 +115,16 @@ public class JyjcInspectionResultParamController extends BaseController { ...@@ -113,4 +115,16 @@ public class JyjcInspectionResultParamController extends BaseController {
public ResponseModel<List<JyjcInspectionResultParamModel>> selectForList() { public ResponseModel<List<JyjcInspectionResultParamModel>> selectForList() {
return ResponseHelper.buildResponse(jyjcInspectionResultParamServiceImpl.queryForJyjcInspectionResultParamList()); return ResponseHelper.buildResponse(jyjcInspectionResultParamServiceImpl.queryForJyjcInspectionResultParamList());
} }
/**
* 获取某一类设备的技术参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "获取某一类设备的技术参数", notes = "获取某一类设备的技术参数")
@GetMapping(value = "/getParamByEquipTypeCode")
public ResponseModel<List<Map<String,Object>>> getParamByEquipTypeCode(@RequestParam String equipTypeCode) {
return ResponseHelper.buildResponse(jyjcInspectionResultParamServiceImpl.getParamByEquipTypeCode(equipTypeCode));
}
} }
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import cn.hutool.core.map.MapBuilder; import cn.hutool.core.map.MapBuilder;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication;
import com.yeejoin.amos.boot.module.jyjc.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationRequstDto; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationRequstDto;
import com.yeejoin.amos.boot.module.jyjc.biz.config.BaseException; import com.yeejoin.amos.boot.module.jyjc.biz.config.BaseException;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
...@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcOpeningApplicationServiceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcOpeningApplicationServiceImpl;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -25,10 +27,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationModel; ...@@ -25,10 +27,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationModel;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import java.util.Collection; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -97,6 +96,11 @@ public class JyjcOpeningApplicationController extends BaseController { ...@@ -97,6 +96,11 @@ public class JyjcOpeningApplicationController extends BaseController {
@DeleteMapping(value = "/{sequenceNbr}") @DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除") @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){ public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
JyjcOpeningApplication jyjcOpeningApplication = jyjcOpeningApplicationServiceImpl.getById(sequenceNbr);
List<String> status = Arrays.asList(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()),String.valueOf(FlowStatusEnum.REJECTED.getCode()));
if(status.contains(jyjcOpeningApplication.getStatus())){
throw new BadRequest("除撤回跟驳回的流程之外其余流程不可删除!");
}
return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.removeById(sequenceNbr)); return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.removeById(sequenceNbr));
} }
...@@ -110,7 +114,7 @@ public class JyjcOpeningApplicationController extends BaseController { ...@@ -110,7 +114,7 @@ public class JyjcOpeningApplicationController extends BaseController {
@DeleteMapping(value = "batchDelete") @DeleteMapping(value = "batchDelete")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除") @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@RequestParam(value = "sequenceNbrList") List<Long> sequenceNbrList){ public ResponseModel<Boolean> deleteBySequenceNbr(@RequestParam(value = "sequenceNbrList") List<Long> sequenceNbrList){
return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.deleteBatchSeq(sequenceNbrList)); return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.deleteBatchByIds(sequenceNbrList));
} }
/** /**
...@@ -201,8 +205,8 @@ public class JyjcOpeningApplicationController extends BaseController { ...@@ -201,8 +205,8 @@ public class JyjcOpeningApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "撤回业务开通申请", notes = "撤回业务开通申请") @ApiOperation(httpMethod = "GET",value = "撤回业务开通申请", notes = "撤回业务开通申请")
@GetMapping(value = "/rollBackFlow") @GetMapping(value = "/rollBackFlow")
public void overflow( @RequestParam("instanceId") String instanceId) { public void overflow( @RequestParam("sequenceNbr") String sequenceNbr) {
jyjcOpeningApplicationServiceImpl.stopFlow(instanceId); jyjcOpeningApplicationServiceImpl.stopFlow(sequenceNbr);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
......
...@@ -5,9 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -5,9 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -26,6 +27,10 @@ public class CommonserviceImpl { ...@@ -26,6 +27,10 @@ public class CommonserviceImpl {
@Autowired @Autowired
TzsUserInfoMapper userInfoMapper; TzsUserInfoMapper userInfoMapper;
@Autowired
TzBaseEnterpriseInfoMapper enterpriseInfoMapper;
public static final String UNIT_TYPE = "检验检测机构";
/** /**
* @return ReginParams * @return ReginParams
...@@ -43,4 +48,8 @@ public class CommonserviceImpl { ...@@ -43,4 +48,8 @@ public class CommonserviceImpl {
List<TzsUserInfo> userInfos = userInfoMapper.selectList(userInfoQueryWrapper); List<TzsUserInfo> userInfos = userInfoMapper.selectList(userInfoQueryWrapper);
return userInfos; return userInfos;
} }
public List<TzBaseEnterpriseInfo> getInspectionUnitList() {
return enterpriseInfoMapper.getInspectionUnitList(UNIT_TYPE);
}
} }
...@@ -4,9 +4,13 @@ import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEqu ...@@ -4,9 +4,13 @@ import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEqu
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEquipMapper; import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEquipMapper;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationEquipService; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationEquipService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
...@@ -30,4 +34,13 @@ public class JyjcInspectionApplicationEquipServiceImpl extends BaseService<JyjcI ...@@ -30,4 +34,13 @@ public class JyjcInspectionApplicationEquipServiceImpl extends BaseService<JyjcI
public List<JyjcInspectionApplicationEquipModel> queryForJyjcInspectionApplicationEquipList() { public List<JyjcInspectionApplicationEquipModel> queryForJyjcInspectionApplicationEquipList() {
return this.queryForList("" , false); return this.queryForList("" , false);
} }
public List<JyjcInspectionApplicationEquipModel> listApplicationEquipByApplicationSeq(Long applicationSeq) {
// this.queryForList 尽量不要重载方法
List<JyjcInspectionApplicationEquip> entitys = this.lambdaQuery().eq(JyjcInspectionApplicationEquip::getApplicationSeq, applicationSeq).list();
if (ValidationUtil.isEmpty(entitys)) {
return Collections.EMPTY_LIST;
}
return Bean.toModels(entitys, JyjcInspectionApplicationEquipModel.class);
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl; package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationPushLog; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationPushLog;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationPushLogMapper; import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationPushLogMapper;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationPushLogService; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationPushLogService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationPushLogModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationPushLogModel;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 服务实现类 * 服务实现类
...@@ -30,4 +34,26 @@ public class JyjcInspectionApplicationPushLogServiceImpl extends BaseService<Jyj ...@@ -30,4 +34,26 @@ public class JyjcInspectionApplicationPushLogServiceImpl extends BaseService<Jyj
public List<JyjcInspectionApplicationPushLogModel> queryForJyjcInspectionApplicationPushLogList() { public List<JyjcInspectionApplicationPushLogModel> queryForJyjcInspectionApplicationPushLogList() {
return this.queryForList("" , false); return this.queryForList("" , false);
} }
/**
* 记录日志
*
*
* @param params params
* @return {@link boolean}
* @author yangyang
* @throws
* @date 2023/12/15 15:53
*/
public boolean saveInspectionApplicationPushLog(Map<String, Object> params) {
JyjcInspectionApplicationModel inspectionApplicationModel = (JyjcInspectionApplicationModel) params.get("inspectionApplication");
List<JyjcInspectionApplicationEquipModel> applicationEquipModels = (List<JyjcInspectionApplicationEquipModel>) params.get("applicationEquips");
JyjcInspectionApplicationPushLog logEntity = new JyjcInspectionApplicationPushLog();
logEntity.setApplicationSeq(inspectionApplicationModel.getSequenceNbr());
logEntity.setInspectionUnitCode(inspectionApplicationModel.getInspectionUnitCode());
logEntity.setPushData(JSON.toJSONString(applicationEquipModels));
logEntity.setPushStatus("0");
return this.save(logEntity);
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl; package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapBuilder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.enums.WorkFlowEnum;
import com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.api.enums.DocumentEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationMapper; import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationMapper;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationAttachmentModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import org.typroject.tyboot.core.rdbms.annotation.Condition; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService;
import org.typroject.tyboot.core.rdbms.annotation.Operator; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler.JyjcInspectionApplicationHandlerFactory;
import org.typroject.tyboot.core.rdbms.service.BaseService; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.service.ICreateCodeService;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.*;
import java.util.stream.Collectors;
import static com.yeejoin.amos.boot.biz.common.service.impl.WorkflowExcuteServiceImpl.buildOrderNo;
/** /**
* 服务实现类 * 服务实现类
...@@ -18,33 +50,312 @@ import java.util.List; ...@@ -18,33 +50,312 @@ import java.util.List;
* @date 2023-12-14 * @date 2023-12-14
*/ */
@Service @Service
public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspectionApplicationModel,JyjcInspectionApplication,JyjcInspectionApplicationMapper> implements IJyjcInspectionApplicationService { @Slf4j
public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspectionApplicationModel, JyjcInspectionApplication, JyjcInspectionApplicationMapper> implements IJyjcInspectionApplicationService {
@Autowired
private JyjcInspectionResultServiceImpl inspectionResultService;
@Autowired
private JyjcInspectionApplicationEquipServiceImpl applicationEquipService;
@Autowired
private ICreateCodeService createCodeService;
@Autowired
private WorkflowHelper workflowHelper;
/** /**
* 分页查询 * 分页查询
*/ */
@Autowired
JyjcInspectionApplicationAttachmentServiceImpl jyjcInspectionApplicationAttachmentService;
@Autowired
JyjcInspectionApplicationEquipServiceImpl jyjcInspectionApplicationEquipService;
@Autowired
JyjcInspectionApplicationPushLogServiceImpl jyjcInspectionApplicationPushLogService;
@Autowired
JyjcInspectionEquipStatisticsServiceImpl jyjcInspectionEquipStatisticsService;
@Autowired
WorkflowFeignService workflowFeignService;
public JyjcInspectionApplicationModel save(@RequestBody JyjcInspectionApplicationModel model) {
//开启报检流程工作流
if (!model.getOperationType().equals("2")) {
if (model.getOperationType().equals("0")) {
JSONObject body = new JSONObject();
String businessKey = buildOrderNo();
body.put(WorkFlowEnum.BUSINESSKEY.getCode(), businessKey);
body.put(WorkFlowEnum.processDefinitionKey.getCode(), model.getProcessKey());
JSONObject jsonObject = workflowFeignService.startByVariable(body);
String processId = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("data"))).getString("id");
model.setProcessInstanceId(processId);
model.setStatus("已提交");
} else if (model.getOperationType().equals("1")) {
model.setStatus("草稿");
}
model.setApplicationNo(UUID.randomUUID().toString());
model.setApplicationDate(new Date());
model = this.createWithModel(model);
//保存报检装备监管码
if (null != model.getEquip()&&model.getEquip().size() > 0) {
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件保存
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
for (String code : enumNameList) {
if (map.containsKey(code)) {
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
} else {
//更新报检装备监管码
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
if (model.getEquip().size() > 0) {
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件更新
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
jyjcInspectionApplicationAttachmentService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
for (String code : enumNameList) {
if (map.containsKey(code)) {
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
model.setStatus("已提交");
this.updateWithModel(model);
}
return model;
}
public void deleteBatchData(List<Long> sequenceNbr) {
List<JyjcInspectionApplication> jyjcInspectionApplications = this.getBaseMapper().selectBatchIds(sequenceNbr);
long count = jyjcInspectionApplications.stream().filter(e -> !e.getStatus().equals("已撤销") && !e.getStatus().equals("已撤回")).count();
if (count > 0) {
throw new BadRequest("存在 非已撤销、已退回状态的报检单 不可删除!");
}
this.deleteBatchSeq(sequenceNbr);
for (Long seq : sequenceNbr) {
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(seq);
jyjcInspectionApplicationAttachmentService.getBaseMapper().deleteByApplicationSeq(seq);
jyjcInspectionApplicationPushLogService.getBaseMapper().deleteByApplicationSeq(seq);
jyjcInspectionEquipStatisticsService.getBaseMapper().deleteByApplicationSeq(seq);
}
}
public Page<JyjcInspectionApplicationEquipModel> listByCategory(Page<JyjcInspectionApplicationEquipModel> page,String equipClassify) {
return getBaseMapper().listByCategory(page,equipClassify);
}
public Page<JyjcInspectionApplication> queryForJyjcInspectionApplicationPage(Page<JyjcInspectionApplication> page, public Page<JyjcInspectionApplication> queryForJyjcInspectionApplicationPage(Page<JyjcInspectionApplication> page,
String applicationNo, String applicationNo,
String inspectionClassify, String inspectionClassify,
String applicationUnitCode, String applicationUnitCode,
String equipClassify, String equipClassify,
String inspectionUnitCode, String inspectionUnitCode,
String applicationUnitName, String applicationUnitName,
String inspectionUnitName, String inspectionUnitName,
String applicationDate, String applicationDate,
String acceptDate, String acceptDate,
String inspectionChargePerson, String inspectionChargePerson,
String status , String bizType) { String status, String bizType) {
return this.getBaseMapper().queryForDataList(page,applicationNo,inspectionClassify,applicationUnitCode,applicationUnitName,equipClassify,inspectionUnitCode,inspectionUnitName,applicationDate,acceptDate,inspectionChargePerson,status,bizType); return this.getBaseMapper().queryForDataList(page, applicationNo, inspectionClassify, applicationUnitCode, applicationUnitName, equipClassify, inspectionUnitCode, inspectionUnitName, applicationDate, acceptDate, inspectionChargePerson, status, bizType);
} }
/** /**
* 列表查询 示例 * 列表查询 示例
*/ */
public List<JyjcInspectionApplicationModel> queryForJyjcInspectionApplicationList() { public List<JyjcInspectionApplicationModel> queryForJyjcInspectionApplicationList() {
return this.queryForList("" , false); return this.queryForList("", false);
}
public Map<String,Object> selectBySeq(Long sequenceNbr) {
JyjcInspectionApplicationModel model = this.getBaseMapper().selectDataBySeq(sequenceNbr);
Map<String, Object> map = BeanUtil.beanToMap(model);
List<Map<String, Object>> dataByApplicationSeq = jyjcInspectionApplicationAttachmentService.getBaseMapper().getDataByApplicationSeq(sequenceNbr);
Map<String, Object> attMap = new HashMap<>();
for (Map<String, Object> maps : dataByApplicationSeq) {
List<AttachmentDto> data = JSONArray.parseArray(maps.get("attachment_url").toString(), AttachmentDto.class);
attMap.put(maps.get("attachment_type").toString(),data);
}
map.putAll(attMap);
return map;
}
/**
* 接收
*
*
* @param params params
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 15:14
*/
public void doReceive(Map<String, Object> params) {
execueFlow(params);
// 执行接收业务
String type = (String) params.get("type");
Long sequenceNbr = (Long) params.get("sequenceNbr");
JyjcInspectionApplicationModel inspectionApplicationModel = this.queryBySeq(sequenceNbr);
List<JyjcInspectionApplicationEquipModel> applicationEquipModels = applicationEquipService.listApplicationEquipByApplicationSeq(sequenceNbr);
if (ValidationUtil.isEmpty(applicationEquipModels)) {
return;
}
List<JyjcInspectionResult> resultModels = new ArrayList(applicationEquipModels.size());
List<String> codes = createCodeService.createApplicationFormCode(ApplicationFormTypeEnum.JG.getCode(), applicationEquipModels.size());
for (int i = 0; i < applicationEquipModels.size(); i++) {
JyjcInspectionResult resultModel = new JyjcInspectionResult();
resultModel.setInspectionUnitCode(inspectionApplicationModel.getInspectionUnitCode());
resultModel.setApplicationNo(inspectionApplicationModel.getApplicationNo());
resultModel.setApplicationUnitCode(inspectionApplicationModel.getApplicationUnitCode());
resultModel.setResultStatus("未出");
resultModel.setApplicationDate(inspectionApplicationModel.getApplicationDate());
// 解析设备
resultModel.setBizType(inspectionApplicationModel.getBizType());
resultModel.setResultNo(codes.get(i));
resultModel.setEquipUnicode(applicationEquipModels.get(i).getEquipUnicode());//设备唯一标识
}
inspectionResultService.saveOrUpdateBatch(resultModels);
// 通知对应的检验机构
Map<String, Object> thiryPartParams = MapBuilder.<String, Object>create().put("inspectionApplication", inspectionApplicationModel).put("applicationEquips", applicationEquipModels).build();
JyjcInspectionApplicationHandlerFactory.apply(type).notifyInspectionUnit(thiryPartParams);
}
/**
* 退回
*
*
* @param params params
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 15:14
*/
public void doReject(Map<String, Object> params) {
execueFlow(params);
String instanceId = Optional.ofNullable(params.get("instanceId")).orElse("").toString();
params.put("status", FlowStatusEnum.REJECTED.getCode() + "");
updateModelByInstanceId(instanceId, params);
}
/**
* 接收/驳回通知检验单
*/
public void execueFlow(Map<String, Object> params) {
String op = params.get("op").toString();
String instanceId = params.get("instanceId").toString();
String comments= params.get("comments").toString();
try {
AjaxResult ajaxResult = Workflow.taskClient.getTask(instanceId);
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
HashMap<String,Object> varibalble = new HashMap<>();
varibalble.put("approvalStatus",op);
dto.setVariable(varibalble);
dto.setComment(comments);
// 执行流程
AjaxResult ajaxResult1 = Workflow.taskClient.completeByTask(taskId, dto);
if (ObjectUtils.isEmpty(ajaxResult1)) {
}
} catch (Exception e) {
e.printStackTrace();
log.error("执行工作流错误, => {}", params, e);
}
}
/**
* 撤回流程办理单
*/
public void doRollback(String instanceId) {
try {
// 撤回流程
FeignClientResult feignClientResult =new FeignClientResult();
if (ObjectUtils.isEmpty(feignClientResult)) {
}
updateModelByInstanceId(instanceId, MapBuilder.<String, Object>create().put("status", FlowStatusEnum.REJECTED.getCode() + "").build());
} catch (Exception e) {
e.printStackTrace();
log.error("撤回工作流错误, => {}", instanceId, e);
}
}
public void updateModelByInstanceId(String instanceId, Map<String, Object> params) {
JyjcInspectionApplication entity = this.lambdaQuery().eq(JyjcInspectionApplication::getProcessInstanceId, instanceId).one();
if (entity == null) {
return;
}
String status = (String) params.get("status");
String inspectionChargePerson = (String) params.get("inspectionChargePerson");
String inspectionChargePhone = (String) params.get("inspectionChargePhone");
String processDescription = (String) params.get("comments");
if (StringUtils.isNotBlank(inspectionChargePerson)) {
entity.setInspectionChargePerson(inspectionChargePerson);
}
if (StringUtils.isNotBlank(inspectionChargePhone)) {
entity.setInspectionChargePhone(inspectionChargePhone);
}
if (StringUtils.isNotBlank(processDescription)) {
entity.setProcessDescription(processDescription);
}
JSONObject taskJson = workflowHelper.getTask(instanceId);
if (taskJson == null) {
log.warn("流程=>{}查询不到或已结束", instanceId);
return;
}
entity.setWorkflowRole(workflowHelper.getWorkflowRoleGroups(taskJson));
entity.setWorkflowNode(taskJson.getString("taskDefinitionKey"));
// entity.setWorkflowActiveKey();
entity.setStatus(status);
// entity.setStatusName(FlowStatusEnum.getNameByType(Long.parseLong(status)));
this.updateById(entity);
} }
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl; package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.jyjc.api.common.StringUtil;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionResultParamMapper; import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionResultParamMapper;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamService; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultParamModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultParamModel;
import com.yeejoin.amos.boot.module.jyjc.biz.utils.JsonUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 检验结果技术参数表服务实现类 * 检验结果技术参数表服务实现类
...@@ -18,6 +26,10 @@ import java.util.List; ...@@ -18,6 +26,10 @@ import java.util.List;
*/ */
@Service @Service
public class JyjcInspectionResultParamServiceImpl extends BaseService<JyjcInspectionResultParamModel,JyjcInspectionResultParam,JyjcInspectionResultParamMapper> implements IJyjcInspectionResultParamService { public class JyjcInspectionResultParamServiceImpl extends BaseService<JyjcInspectionResultParamModel,JyjcInspectionResultParam,JyjcInspectionResultParamMapper> implements IJyjcInspectionResultParamService {
@Value("classpath:/json/equipParam.json")
private Resource equipParam;
/** /**
* 分页查询 * 分页查询
*/ */
...@@ -38,4 +50,14 @@ public class JyjcInspectionResultParamServiceImpl extends BaseService<JyjcInspec ...@@ -38,4 +50,14 @@ public class JyjcInspectionResultParamServiceImpl extends BaseService<JyjcInspec
wrapper.eq(JyjcInspectionResultParam::getResultSeq, sequenceNbr); wrapper.eq(JyjcInspectionResultParam::getResultSeq, sequenceNbr);
return this.baseMapper.selectList(wrapper); return this.baseMapper.selectList(wrapper);
} }
@Override
public List<Map<String, Object>> getParamByEquipTypeCode(String equipTypeCode) {
List<Map<String, Object>> paramList = new ArrayList<>();
Map<String, List<Map<String, Object>>> paramJson = JsonUtils.getResourceJson(equipParam);
if (StringUtil.isNotEmpty(equipTypeCode)) {
paramList = ObjectUtils.isEmpty(paramJson.get(equipTypeCode)) ? new ArrayList<>() : paramJson.get(equipTypeCode);
}
return paramList;
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl; package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jyjc.api.common.StringUtil;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultAttachment; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
...@@ -16,16 +17,22 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel; ...@@ -16,16 +17,22 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultAttachmentService; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultAttachmentService;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamService; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamService;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultService; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultService;
import com.yeejoin.amos.boot.module.jyjc.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -44,6 +51,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -44,6 +51,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
private IJyjcInspectionResultParamService iJyjcInspectionResultParamService; private IJyjcInspectionResultParamService iJyjcInspectionResultParamService;
@Autowired @Autowired
EquipmentCategoryMapper equipmentCategoryMapper;
@Value("classpath:/json/equipCategory.json")
private Resource equipCategory;
@Autowired
JyjcInspectionResultMapper resultMapper; JyjcInspectionResultMapper resultMapper;
@Autowired @Autowired
...@@ -59,6 +72,9 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -59,6 +72,9 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
public Page<JyjcInspectionResultModel> queryForJyjcInspectionResultPage(Page<JyjcInspectionResultModel> page, JyjcInspectionResultModel model, boolean type) { public Page<JyjcInspectionResultModel> queryForJyjcInspectionResultPage(Page<JyjcInspectionResultModel> page, JyjcInspectionResultModel model, boolean type) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(),
RequestContext.getToken())).toString(), ReginParams.class); RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(model)) {
model = new JyjcInspectionResultModel();
}
if (type) { if (type) {
//检验检测单位分页查询 //检验检测单位分页查询
model.setInspectionUnitCode(reginParams.getCompany().getCompanyCode()); model.setInspectionUnitCode(reginParams.getCompany().getCompanyCode());
...@@ -77,12 +93,32 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -77,12 +93,32 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
} }
public JyjcInspectionResultModel updateJyjcInspectionResult(JyjcInspectionResultModel model) { public JyjcInspectionResultModel updateJyjcInspectionResult(Map<String, Map<String, Object>> tableModel) {
Map<String, Object> map = tableModel.get("inspectResult");
JyjcInspectionResultModel model = BeanUtil.mapToBean(map, JyjcInspectionResultModel.class, true);
updateWithModel(model); updateWithModel(model);
if (ObjectUtil.isNotEmpty(model.getResultAttachmentModel()))
attachmentService.createWithModel(model.getResultAttachmentModel()); List<JyjcInspectionResultAttachment> attachmentList = new ArrayList<>();
if (ObjectUtil.isNotEmpty(model.getResultParamModel())) map.forEach((k, v) -> {
resultParamService.createWithModel(model.getResultParamModel()); if (k.contains("JYJC_") && !ObjectUtils.isEmpty(map.get(k))) {
JyjcInspectionResultAttachment attachment = new JyjcInspectionResultAttachment();
attachment.setResultSeq(model.getSequenceNbr());
attachment.setAttachmentUrl(JSON.toJSONString(map.get(k)));
attachment.setAttachmentType(k);
attachmentList.add(attachment);
}
});
if (!CollectionUtils.isEmpty(attachmentList)) {
attachmentService.saveBatch(attachmentList);
}
if (!CollectionUtils.isEmpty(model.getResultParamModelMap())){
JyjcInspectionResultParam resultParam = new JyjcInspectionResultParam();
resultParam.setResultSeq(model.getSequenceNbr());
resultParam.setParamJson(JSON.toJSONString(model.getResultParamModelMap()));
resultParamService.save(resultParam);
}
return model; return model;
} }
...@@ -105,7 +141,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -105,7 +141,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
// 获取附件 // 获取附件
List<JyjcInspectionResultAttachment> attachmentList = iJyjcInspectionResultAttachmentService.getObjByResultSeq(sequenceNbr); List<JyjcInspectionResultAttachment> attachmentList = iJyjcInspectionResultAttachmentService.getObjByResultSeq(sequenceNbr);
if (!CollectionUtils.isEmpty(attachmentList)) { if (!CollectionUtils.isEmpty(attachmentList)) {
Map<String, Object> attachmentMap = attachmentList.stream().collect(Collectors.toMap(JyjcInspectionResultAttachment::getAttachmentType, JyjcInspectionResultAttachment::getAttachmentUrl)); Map<String, Object> attachmentMap = attachmentList.stream().map(obj -> {
if (StringUtil.isNotEmpty(obj.getAttachmentUrl())) {
obj.setAttachmentUrlList(JSONArray.parseArray(obj.getAttachmentUrl()));
}
return obj;
}).collect(Collectors.toMap(JyjcInspectionResultAttachment::getAttachmentType, JyjcInspectionResultAttachment::getAttachmentUrlList));
map.putAll(attachmentMap); map.putAll(attachmentMap);
} }
...@@ -121,6 +162,36 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -121,6 +162,36 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
map.put("paramJson", mapParam); map.put("paramJson", mapParam);
} }
} }
return map; Map<String, Object> resultMap = new HashMap<>();
resultMap.put("inspectResult", map);
return resultMap;
}
@Override
public List<Map<String, Object>> equipList(String type, String notNode) {
List<Map<String, Object>> menus = new ArrayList<>();
Map<String, List<Map<String, Object>>> resourceJson = JsonUtils.getResourceJson(equipCategory);
List<Map<String, Object>> mapList;
if (ValidationUtil.isEmpty(type)) {
mapList = resourceJson.get(EquipmentClassifityEnum.BDLS.getCode());
} else {
mapList = resourceJson.get(type);
}
mapList.stream().filter(map -> {
if (!ObjectUtils.isEmpty(notNode)) {
String[] code = notNode.split(",");
List<String> codeList = Arrays.asList(code);
return !codeList.contains(map.get("code"));
}
return true;
}).forEach(obj -> {
Map<String, Object> resultMap = new HashMap<>(2);
resultMap.put("instanceName", obj.get("name"));
resultMap.put("instanceId", obj.get("code"));
menus.add(resultMap);
});
return menus;
} }
} }
\ No newline at end of file
...@@ -25,9 +25,11 @@ import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseUnitLicenceDto; ...@@ -25,9 +25,11 @@ import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseUnitLicenceDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto; import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseUnitLicenceMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseUnitLicenceMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.service.ICreateCodeService;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow; import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO; import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
...@@ -39,12 +41,15 @@ import org.apache.commons.lang3.StringUtils; ...@@ -39,12 +41,15 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.expression.Ids;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
...@@ -64,7 +69,8 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -64,7 +69,8 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
@Autowired @Autowired
CommonserviceImpl commonserviceImpl; CommonserviceImpl commonserviceImpl;
@Autowired
private ICreateCodeService createCodeService;
@Autowired @Autowired
JyjcOpeningApplicationMapper jyjcOpeningApplicationMapper; JyjcOpeningApplicationMapper jyjcOpeningApplicationMapper;
...@@ -95,7 +101,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -95,7 +101,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
try { try {
if (enableStartFlow) { if (enableStartFlow) {
// 开启工作流 startProcess // 开启工作流 startProcess
String instanceId = startFlow(); String instanceId = startFlow("1");
JSONObject dataObject = getTask(instanceId); JSONObject dataObject = getTask(instanceId);
JSONArray executorArray = dataObject.getJSONObject("nodeInfo").getJSONArray("executor"); JSONArray executorArray = dataObject.getJSONObject("nodeInfo").getJSONArray("executor");
if (!ValidationUtil.isEmpty(executorArray)) { if (!ValidationUtil.isEmpty(executorArray)) {
...@@ -117,9 +123,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -117,9 +123,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
if (model.getSequenceNbr() == null) { if (model.getSequenceNbr() == null) {
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany(); CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
model.setUnitCode(companyBo.getCompanyCode()); model.setUnitCode(companyBo.getCompanyCode());
model.setUnitCode("91611103MAC4Q1EG7B");
model.setUnitCodeName(companyBo.getCompanyName()); model.setUnitCodeName(companyBo.getCompanyName());
model.setApplicationSeq(buildApplicationSeq()); List<String> codes = createCodeService.createApplicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1);
model.setApplicationSeq(codes.get(0));
return this.createWithModel(model); return this.createWithModel(model);
} else { } else {
return this.updateWithModel(model); return this.updateWithModel(model);
...@@ -187,9 +193,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -187,9 +193,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
public Page<JyjcOpeningApplicationModel> querypageForCompany(Page<JyjcOpeningApplication> page, JyjcOpeningApplicationRequstDto jyjcOpeningApplicationRequstDto) { public Page<JyjcOpeningApplicationModel> querypageForCompany(Page<JyjcOpeningApplication> page, JyjcOpeningApplicationRequstDto jyjcOpeningApplicationRequstDto) {
//根据申请单中的单位信息对于列表数据进行过滤 //根据申请单中的单位信息对于列表数据进行过滤
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany(); CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
if (companyBo.getLevel().equals("company")) { // if (companyBo.getLevel().equals("company")) {
jyjcOpeningApplicationRequstDto.setUnitCode(companyBo.getCompanyCode()); jyjcOpeningApplicationRequstDto.setUnitCode(companyBo.getCompanyCode());
} // }
String applyStartTime = ""; String applyStartTime = "";
String applyEndTime = ""; String applyEndTime = "";
...@@ -215,14 +221,16 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -215,14 +221,16 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
if (ValidationUtil.isEmpty(reginParams.getCompany())) { if (ValidationUtil.isEmpty(reginParams.getCompany())) {
throw new RuntimeException("未指定人员归属单位信息"); throw new RuntimeException("未指定人员归属单位信息");
} }
String unitCode;
JyjcOpeningApplicationModel jyjcOpeningApplicationModel; JyjcOpeningApplicationModel jyjcOpeningApplicationModel;
if (null != sequenceNbr) { if (null != sequenceNbr) {
jyjcOpeningApplicationModel = this.queryBySeq(sequenceNbr); jyjcOpeningApplicationModel = this.queryBySeq(sequenceNbr);
unitCode = jyjcOpeningApplicationModel.getUnitCode();
} else { } else {
jyjcOpeningApplicationModel = new JyjcOpeningApplicationModel(); jyjcOpeningApplicationModel = new JyjcOpeningApplicationModel();
unitCode = reginParams.getCompany().getCompanyCode();
} }
String unitCode = reginParams.getCompany().getCompanyCode(); // unitCode = "91611103MAC4Q1EG7B"; // 测试用,之后务必删除!!!
unitCode = "91611103MAC4Q1EG7B"; // 测试用,之后务必删除!!!
QueryWrapper enterpriseInfoQueryWrapper = new QueryWrapper<>(); QueryWrapper enterpriseInfoQueryWrapper = new QueryWrapper<>();
enterpriseInfoQueryWrapper.eq("use_code", unitCode); enterpriseInfoQueryWrapper.eq("use_code", unitCode);
TzBaseEnterpriseInfo baseUnitLicenceEntity = enterpriseInfoMapper.selectOne(enterpriseInfoQueryWrapper); TzBaseEnterpriseInfo baseUnitLicenceEntity = enterpriseInfoMapper.selectOne(enterpriseInfoQueryWrapper);
...@@ -249,10 +257,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -249,10 +257,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
// unitLicenceQueryWrapper.eq("licence_type", LicenceTypeEnum.JYJC.getCode()); // unitLicenceQueryWrapper.eq("licence_type", LicenceTypeEnum.JYJC.getCode());
// List<TzBaseUnitLicenceDto> baseUnitLicences = Bean.toModels(unitLicenceMapper.selectList(unitLicenceQueryWrapper), TzBaseUnitLicenceDto.class ); // List<TzBaseUnitLicenceDto> baseUnitLicences = Bean.toModels(unitLicenceMapper.selectList(unitLicenceQueryWrapper), TzBaseUnitLicenceDto.class );
// //
List<TzBaseUnitLicenceDto> baseUnitLicences = baseMapper.selectBaseUnitLicenceList(MapBuilder.<String, Object>create() List<TzBaseUnitLicenceDto> baseUnitLicences = baseMapper.selectBaseUnitLicenceList(MapBuilder.<String, Object>create().put("unitCode", unitCode).put("licenceType", "jyjc").build());
.put("unitCode", unitCode)
// .put("licenceType", LicenceTypeEnum.JYJC.getCode())
.build());
jyjcOpeningApplicationModel.setBaseUnitLicences(baseUnitLicences); jyjcOpeningApplicationModel.setBaseUnitLicences(baseUnitLicences);
// 获取检验人员信息 // 获取检验人员信息
QueryWrapper userInfoQueryWrapper = new QueryWrapper<>(); QueryWrapper userInfoQueryWrapper = new QueryWrapper<>();
...@@ -281,11 +286,22 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -281,11 +286,22 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
return jyjcOpeningApplicationModel; return jyjcOpeningApplicationModel;
} }
public String startFlow() throws Exception { public String startFlow(String businessKey) throws Exception {
// 重新开启工作流 // 重新开启工作流
ActWorkflowStartDTO dto = new ActWorkflowStartDTO(); ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(processDefinitionKey); dto.setProcessDefinitionKey(processDefinitionKey);
dto.setBusinessKey("1"); dto.setBusinessKey(StringUtils.defaultString(businessKey, "1"));
// dto.setCompleteFirstTask(true);
// FeignClientResult ajaxResult = Workflow.taskV2Client.startByVariable(dto);
//
// if (log.isDebugEnabled()) {
// log.debug("开启工作流结果:{}", ajaxResult);
// }
// if (ajaxResult == null || 200 != ajaxResult.getStatus()) {
// throw new BaseException("开启工作流错误");
// }
// return ((Map) ajaxResult.getResult()).get("id").toString();
// V1
AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto); AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("开启工作流结果:{}", ajaxResult); log.debug("开启工作流结果:{}", ajaxResult);
...@@ -342,14 +358,15 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -342,14 +358,15 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
/** /**
* 撤回流程办理单 * 撤回流程办理单
*/ */
public void stopFlow(String instanceId) { public void stopFlow(String sequenceNbr) {
JyjcOpeningApplication jyjcOpeningApplication = jyjcOpeningApplicationMapper.selectById(sequenceNbr);
try { try {
//撤回流程 //撤回流程
JSONObject jsonObject = workflowFeignClient.rollBack(instanceId); JSONObject jsonObject = workflowFeignClient.rollBack(jyjcOpeningApplication.getWorkflowProstanceId());
if (ObjectUtils.isEmpty(jsonObject)) { if (ObjectUtils.isEmpty(jsonObject)) {
} }
updateModelByInstanceId(instanceId, FlowStatusEnum.ROLLBACK.getCode() + ""); updateModelByInstanceId(jyjcOpeningApplication.getWorkflowProstanceId(), FlowStatusEnum.ROLLBACK.getCode() + "");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -375,34 +392,34 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -375,34 +392,34 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
dataObject.put("nodeInfo", nodeInfo.getResult()); dataObject.put("nodeInfo", nodeInfo.getResult());
return dataObject; return dataObject;
} }
//
/** // /**
* JY+年(4位)+月(2位)+日(2位)+序列号(3位 // * JY+年(4位)+月(2位)+日(2位)+序列号(3位
* // *
* @param // * @param
* @return {@link java.lang.String} // * @return {@link java.lang.String}
* @throws // * @throws
* @author yangyang // * @author yangyang
* @date 2023/12/13 22:30 // * @date 2023/12/13 22:30
*/ // */
private String buildApplicationSeq() { // private String buildApplicationSeq() {
String sdf = new SimpleDateFormat("yyyyMMdd").format(new Date()); // String sdf = new SimpleDateFormat("yyyyMMdd").format(new Date());
long increment = redisUtils.incr(CommonConstants.OPEN_APPLICATION_SEQ_KEY, 1); // long increment = redisUtils.incr(CommonConstants.OPEN_APPLICATION_SEQ_KEY, 1);
if (increment == 0) { // if (increment == 0) {
redisUtils.expire(CommonConstants.OPEN_APPLICATION_SEQ_KEY, nextDay()); // redisUtils.expire(CommonConstants.OPEN_APPLICATION_SEQ_KEY, nextDay());
} // }
return CommonConstants.APPLICATION_SEQ_PREFIX + sdf + String.format("%03d", increment); // return CommonConstants.APPLICATION_SEQ_PREFIX + sdf + String.format("%03d", increment);
} // }
//
private long nextDay() { // private long nextDay() {
Calendar calendar = Calendar.getInstance(); // Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0); // calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0); // calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0); // calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0); // calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.DAY_OF_MONTH, 1); // calendar.add(Calendar.DAY_OF_MONTH, 1);
return (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000; // return (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000;
} // }
public List<Map<String, Object>> selectForFlowStatusList() { public List<Map<String, Object>> selectForFlowStatusList() {
return Arrays.stream(FlowStatusEnum.values()).map(this::mapPointTypeToMap).collect(Collectors.toList()); return Arrays.stream(FlowStatusEnum.values()).map(this::mapPointTypeToMap).collect(Collectors.toList());
...@@ -415,4 +432,15 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp ...@@ -415,4 +432,15 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
return record; return record;
} }
public Boolean deleteBatchByIds(List<Long> ids){
List<JyjcOpeningApplication> jyjcOpeningApplicationList=jyjcOpeningApplicationMapper.selectList(new QueryWrapper<JyjcOpeningApplication>()
.in("sequence_nbr"));
List<String> status = Arrays.asList(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()),String.valueOf(FlowStatusEnum.REJECTED.getCode()));
jyjcOpeningApplicationList = jyjcOpeningApplicationList.stream().filter(jyjcOpeningApplication ->!status.contains(jyjcOpeningApplication.getStatus())).collect(Collectors.toList());
if(jyjcOpeningApplicationList.isEmpty()){
throw new BadRequest("除撤回跟驳回的流程之外其余流程不可删除,请核对数据后重新提交!");
}
deleteBatchByIds(ids);
return true;
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.WorkflowFeignClient;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.LinkedHashMap;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 15:46
*/
@Component
@Slf4j
public class WorkflowHelper {
@Autowired
private WorkflowFeignClient workflowFeignClient;
/**
* 获取工作流
*
*
* @param instanceId instanceId
* @return {@link JSONObject}
* @author yangyang
* @throws
* @date 2023/12/15 16:17
*/
public JSONObject getTask(String instanceId) {
AjaxResult ajaxResult = Workflow.taskClient.getTask(instanceId);
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");// 工作流ID
FeignClientResult<JSONObject> nodeInfo = workflowFeignClient.getNodeInfotoken(RequestContext.getAppKey(), RequestContext.getProduct(), RequestContext.getToken(), taskId);
dataObject.put("nodeInfo", nodeInfo.getResult());
return dataObject;
}
public String getWorkflowStatus(JSONObject dataObject) {
return !ValidationUtil.isEmpty(dataObject) && !ValidationUtil.isEmpty(dataObject.get("status")) ? String.valueOf(dataObject.get("status")) : "";
}
public String getWorkflowRoleGroups(JSONObject dataObject) {
JSONArray executorArray = dataObject.getJSONObject("nodeInfo").getJSONArray("executor");
if(!ValidationUtil.isEmpty(executorArray)) {
return executorArray.stream().map(json -> Optional.ofNullable(((LinkedHashMap) json).get("groupId")).orElse("").toString()).collect(Collectors.joining(","));
}
return null;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationHandlerService;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationPushLogServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:12
*/
@Component
public class AbstractJyjcInspectionApplicationHandlerServiceImpl implements IJyjcInspectionApplicationHandlerService {
@Autowired
private JyjcInspectionApplicationPushLogServiceImpl applicationPushLogService;
@Override
public String type() {
return "default";
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
// push日志
applicationPushLogService.saveInspectionApplicationPushLog(params);
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 检测
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:32
*/
@Component
public class DetectionInspectionApplicationHandlerServiceImpl extends AbstractJyjcInspectionApplicationHandlerServiceImpl {
@Override
public String type() {
return BizTypeEnum.DETECTION.getCode();
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
super.notifyInspectionUnit(params);
// todo
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 定检
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:32
*/
@Component
public class FirstInspectionApplicationHandlerServiceImpl extends AbstractJyjcInspectionApplicationHandlerServiceImpl {
@Override
public String type() {
return BizTypeEnum.FIRST_INSPECTION.getCode();
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
super.notifyInspectionUnit(params);
// todo
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationHandlerService;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @author yangyang
* @version v1.0
* @date 2023/11/8 15:10
*/
@Service
public class JyjcInspectionApplicationHandlerFactory implements ApplicationContextAware {
private static final Map<String, IJyjcInspectionApplicationHandlerService> SERVICE_POOL = new HashMap<>(12);
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
applicationContext.getBeansOfType(IJyjcInspectionApplicationHandlerService.class).forEach((beanName, bean) -> SERVICE_POOL.put(bean.type(), bean));
}
public static IJyjcInspectionApplicationHandlerService apply(String type) {
IJyjcInspectionApplicationHandlerService objectSceneService = SERVICE_POOL.get(type);
if (Objects.isNull(objectSceneService)) {
throw new IllegalArgumentException("SERVICE_POOL type: " + type + " is not found !");
}
return objectSceneService;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 监督检验
*
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:32
*/
@Component
public class SuperviseInspectionApplicationHandlerServiceImpl extends AbstractJyjcInspectionApplicationHandlerServiceImpl {
@Override
public String type() {
return BizTypeEnum.SUPERVISE.getCode();
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
super.notifyInspectionUnit(params);
// todo
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.utils;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Map;
public class JsonUtils {
//将json文件转化为Map<list<Map<>>>
public static Map getResourceJson(Resource resource) {
String json = null;
try {
json = IOUtils.toString(resource.getInputStream(), String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
throw new RuntimeException(resource + "json文件转化失败");
}
return JSONObject.parseObject(json, Map.class);
}
}
{
"eightCategory": [
{
"name": "电梯",
"code": "3000",
"image": "upload/tzs/common/image/总览电梯.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "elevator"
},
{
"name": "起重机械",
"code": "4000",
"image": "upload/tzs/common/image/总览起重机械.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "lifting"
},
{
"name": "场内机动车辆",
"code": "5000",
"image": "upload/tzs/common/image/总览厂车.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "vehicle"
},
{
"name": "锅炉",
"code": "1000",
"image": "upload/tzs/common/image/总览锅炉.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "boiler"
},
{
"name": "压力容器",
"code": "2000",
"image": "upload/tzs/common/image/总览压力容器.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "vessel"
},
{
"name": "压力管道",
"code": "8000",
"image": "upload/tzs/common/image/总览压力管道.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "pipeline"
},
{
"name": "大型游乐设施",
"code": "6000",
"image": "upload/tzs/common/image/总览游乐设施.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "rides"
},
{
"name": "客运索道",
"code": "9000",
"image": "upload/tzs/common/image/总览索道.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "ropeway"
}
],
"other": [
{
"name": "电梯",
"code": "3000"
},
{
"name": "起重机械",
"code": "4000"
},
{
"name": "场内机动车辆",
"code": "5000"
},
{
"name": "锅炉",
"code": "1000"
},
{
"name": "压力容器",
"code": "2000"
},
{
"name": "压力管道",
"code": "8000"
},
{
"name": "大型游乐设施",
"code": "6000"
},
{
"name": "客运索道",
"code": "9000"
}
]
}
\ No newline at end of file
{
"3000": [
{
"label": "使用年限",
"key": "synx",
"type": "input"
},
{
"label": "控制方式",
"key": "kzfs",
"type": "select",
"data": [
{
"name": "选项1",
"value": "1"
},
{
"name": "选项1",
"value": "1"
}
]
}
],
"4000": [
{
"label": "使用年限4000",
"key": "synx",
"type": "input"
}
]
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.tcm.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@AllArgsConstructor
@Getter
public enum PersonManageRoleEnum {
/**
* 人员管理角色枚举
*/
code("人员管理角色字典code", 6616L),
use("使用单位", 1735591519093547010L),
agw("安装改造维修单位", 1735591458058035201L),
jyjc("检验检测机构", 1735590873120399362L);
String name;
Long id;
public static Map<Long, String> getName = new HashMap<>();
public static Map<String, Long> getId = new HashMap<>();
static {
for (PersonManageRoleEnum e : PersonManageRoleEnum.values()) {
getName.put(e.id, e.name);
getId.put(e.name, e.id);
}
}
}
...@@ -31,4 +31,8 @@ public interface TzsUserInfoMapper extends BaseMapper<TzsUserInfo> { ...@@ -31,4 +31,8 @@ public interface TzsUserInfoMapper extends BaseMapper<TzsUserInfo> {
List<GroupAndPersonInfoDto> getUnitInfoByUserId(Long groupId); List<GroupAndPersonInfoDto> getUnitInfoByUserId(Long groupId);
String selectPostNameByUserId(String userId); String selectPostNameByUserId(String userId);
List<Map<String, Object>> getUserTypeList(@Param(value = "typeList") List<String> typeList);
String selectCompanyTypeById(Long companySeq);
} }
...@@ -211,4 +211,21 @@ ...@@ -211,4 +211,21 @@
<select id="selectPostNameByUserId" resultType="java.lang.String"> <select id="selectPostNameByUserId" resultType="java.lang.String">
SELECT post_name FROM "tzs_user_info" WHERE amos_user_id = #{userId} SELECT post_name FROM "tzs_user_info" WHERE amos_user_id = #{userId}
</select> </select>
<select id="getUserTypeList" resultType="java.util.Map">
SELECT
*
FROM
"cb_data_dictionary"
WHERE
type in
<foreach collection="typeList" separator="," item="type" open="(" close=")">
#{type}
</foreach>
</select>
<select id="selectCompanyTypeById" resultType="java.lang.String">
select company_type from privilege_company where sequence_nbr = #{companySeq}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
...@@ -82,7 +83,7 @@ public class TzsUserInfoController extends BaseController { ...@@ -82,7 +83,7 @@ public class TzsUserInfoController extends BaseController {
if (ObjectUtils.isEmpty(reginParams)) { if (ObjectUtils.isEmpty(reginParams)) {
return null; return null;
} }
CompanyModel companyModel = reginParams.getUserModel().getCompanys().get(0); CompanyBo companyModel = reginParams.getCompany();
if(ObjectUtils.isEmpty(companyModel)){ if(ObjectUtils.isEmpty(companyModel)){
throw new BadRequest("未指定人员归属单位信息"); throw new BadRequest("未指定人员归属单位信息");
} }
...@@ -218,11 +219,11 @@ public class TzsUserInfoController extends BaseController { ...@@ -218,11 +219,11 @@ public class TzsUserInfoController extends BaseController {
if (ObjectUtils.isEmpty(reginParams)) { if (ObjectUtils.isEmpty(reginParams)) {
return null; return null;
} }
CompanyModel companyModel = reginParams.getUserModel().getCompanys().get(0); CompanyBo company = reginParams.getCompany();
if(ObjectUtils.isEmpty(companyModel)){ if(ObjectUtils.isEmpty(company)){
throw new BadRequest("未指定人员归属单位信息"); throw new BadRequest("未指定人员归属单位信息");
} }
dto.setUnitCode(companyModel.getCompanyCode()); dto.setUnitCode(company.getCompanyCode());
Page<TzsUserInfoDto> page = new Page<>(); Page<TzsUserInfoDto> page = new Page<>();
page.setCurrent(Long.parseLong(current)); page.setCurrent(Long.parseLong(current));
page.setSize(Long.parseLong(size)); page.setSize(Long.parseLong(size));
......
...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray; ...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
...@@ -15,6 +16,7 @@ import com.yeejoin.amos.boot.module.tcm.api.dto.TzsEquipListDto; ...@@ -15,6 +16,7 @@ import com.yeejoin.amos.boot.module.tcm.api.dto.TzsEquipListDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzsUserInfoDto; import com.yeejoin.amos.boot.module.tcm.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.*; import com.yeejoin.amos.boot.module.tcm.api.entity.*;
import com.yeejoin.amos.boot.module.tcm.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.tcm.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.PersonManageRoleEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.TwoStipulateGroupEnum; import com.yeejoin.amos.boot.module.tcm.api.enums.TwoStipulateGroupEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.UnitTypeEnum; import com.yeejoin.amos.boot.module.tcm.api.enums.UnitTypeEnum;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserEquipMapper; import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserEquipMapper;
...@@ -262,6 +264,22 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -262,6 +264,22 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
} }
}); });
//添加人员管理角色
TzsUserInfo tzsUserInfo = tzsUserInfoMapper.selectById(sequenceNbr);
String post = tzsUserInfo.getPost();
if(post.contains(PersonManageRoleEnum.code.getId().toString())){
String companyType = tzsUserInfoMapper.selectCompanyTypeById(companySeq);
if(companyType.contains(PersonManageRoleEnum.jyjc.getName())){
roleIds.add(PersonManageRoleEnum.jyjc.getId());
}
if(companyType.contains(PersonManageRoleEnum.use.getName())){
roleIds.add(PersonManageRoleEnum.use.getId());
}
if(companyType.contains(PersonManageRoleEnum.agw.getName())){
roleIds.add(PersonManageRoleEnum.agw.getId());
}
}
Map<Long, List<Long>> roleSeqMap = new HashMap<>(); Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>(); Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
roleSeqMap.put(companySeq, roleIds); roleSeqMap.put(companySeq, roleIds);
...@@ -271,7 +289,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -271,7 +289,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
agencyUserModel.setOrgRoleSeqs(roleSeqMap); agencyUserModel.setOrgRoleSeqs(roleSeqMap);
userResult = Privilege.agencyUserClient.create(agencyUserModel); userResult = Privilege.agencyUserClient.create(agencyUserModel);
if (userResult.getStatus() == 200) { if (userResult.getStatus() == 200) {
TzsUserInfo tzsUserInfo = tzsUserInfoMapper.selectById(sequenceNbr);
tzsUserInfo.setAmosUserId(userResult.getResult().getUserId()); tzsUserInfo.setAmosUserId(userResult.getResult().getUserId());
tzsUserInfo.setAmosUserName(userResult.getResult().getUserName()); tzsUserInfo.setAmosUserName(userResult.getResult().getUserName());
tzsUserInfo.setLockStatus(status); tzsUserInfo.setLockStatus(status);
...@@ -284,7 +302,6 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -284,7 +302,6 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
Privilege.groupUserClient.create(Long.valueOf(roleGroup.getExtend()), userIds); Privilege.groupUserClient.create(Long.valueOf(roleGroup.getExtend()), userIds);
} }
//绑定两个规定用户组 //绑定两个规定用户组
String post = tzsUserInfo.getPost();
post = post.replace("[", "").replace("]", "").replace("\"", ""); post = post.replace("[", "").replace("]", "").replace("\"", "");
for (String code : post.split(",")) { for (String code : post.split(",")) {
DataDictionary groupId = iDataDictionaryService DataDictionary groupId = iDataDictionaryService
...@@ -366,6 +383,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -366,6 +383,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
boolean productCompany = false; boolean productCompany = false;
boolean useCompany = false; boolean useCompany = false;
boolean installCompany = false; boolean installCompany = false;
boolean inspectionCompany = false;
for (CompanyModel companyModel : companyModels) { for (CompanyModel companyModel : companyModels) {
String companyType = companyModel.getCompanyType(); String companyType = companyModel.getCompanyType();
if (companyType.contains("使用单位") || companyType.contains("个人主体")) { if (companyType.contains("使用单位") || companyType.contains("个人主体")) {
...@@ -377,19 +395,23 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -377,19 +395,23 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
if (companyType.contains("安装改造维修单位")){ if (companyType.contains("安装改造维修单位")){
installCompany = true; installCompany = true;
} }
if (companyType.contains("检验检测机构")){
inspectionCompany = true;
}
} }
String companyType = null; StringBuilder companyType = new StringBuilder();
if (useCompany) { if (useCompany) {
companyType = "use"; companyType.append("use-");
} }
if (productCompany) { if (productCompany) {
companyType = "pro"; companyType.append("pro-");
}
if (useCompany && productCompany) {
companyType = "useAndPro";
} }
if (installCompany) { if (installCompany) {
companyType = companyType + "AndInstall"; companyType.append("install-");
}
if (inspectionCompany) {
companyType.append("inspection");
} }
result.put("companyType", companyType); result.put("companyType", companyType);
return result; return result;
...@@ -526,18 +548,21 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -526,18 +548,21 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
@Override @Override
public List<Map<String, Object>> getUserType(String unitType) { public List<Map<String, Object>> getUserType(String unitType) {
if (unitType.equals("pro")) { List<String> type = new ArrayList<>();
return tzsUserInfoMapper.getUserType("QYRYGW-SCDW", null); type.add("QYRYGW");
} else if (unitType.equals("use")) { if (unitType.contains("use")) {
return tzsUserInfoMapper.getUserType("QYRYGW-SYDW", null); type.add("QYRYGW-SYDW");
} else if (unitType.equals("useAndInstall")){
return tzsUserInfoMapper.getUserType("QYRYGW-SYDW", "QYRYGW-INSTALL");
} else if (unitType.equals("proAndInstall")){
return tzsUserInfoMapper.getUserType("QYRYGW-SCDW", "QYRYGW-INSTALL");
}else {
return tzsUserInfoMapper.getUserType(null, null);
} }
if (unitType.contains("pro")) {
type.add("QYRYGW-SCDW");
}
if (unitType.contains("install")) {
type.add("QYRYGW-INSTALL");
}
if (unitType.contains("inspection")) {
type.add("QYRYGW-INSPECTION");
}
return tzsUserInfoMapper.getUserTypeList(type);
} }
public List<LinkedHashMap> screenData(List<LinkedHashMap> result, List<LinkedHashMap> data, String id) { public List<LinkedHashMap> screenData(List<LinkedHashMap> result, List<LinkedHashMap> data, String id) {
......
...@@ -16,6 +16,7 @@ public enum ApplicationFormTypeEnum { ...@@ -16,6 +16,7 @@ public enum ApplicationFormTypeEnum {
*/ */
GZ("GZ"), GZ("GZ"),
JY("JY"), JY("JY"),
JG("JG"),// 检验结果
WB("WB"), WB("WB"),
SY("SY"); SY("SY");
......
package com.yeejoin.amos.boot.module.ymt.api.mapper; package com.yeejoin.amos.boot.module.ymt.api.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.ymt.api.dto.EquEnterDto; import com.yeejoin.amos.boot.module.ymt.api.dto.EquEnterDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto; import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import org.springframework.data.repository.query.Param;
import java.util.List;
/** /**
* 企业数据信息 Mapper 接口 * 企业数据信息 Mapper 接口
...@@ -44,4 +45,11 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI ...@@ -44,4 +45,11 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
IPage<TzBaseEnterpriseInfoDto> page(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto); IPage<TzBaseEnterpriseInfoDto> page(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto);
IPage<TzBaseEnterpriseInfoDto> pageList(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto, List orgCodeList); IPage<TzBaseEnterpriseInfoDto> pageList(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto, List orgCodeList);
/**
* 查找企业关联设备详情列表
*
*/
List<TzBaseEnterpriseInfo> getInspectionUnitList(@Param("unitType") String unitType);
} }
...@@ -85,7 +85,12 @@ ...@@ -85,7 +85,12 @@
USE_PLACE, USE_PLACE,
ADDRESS, ADDRESS,
EQU_STATE, EQU_STATE,
STATUS STATUS,
USE_INNER_CODE,
FACTORY_NUM,
PRODUCE_UNIT_NAME,
INSPECT_REPORT,
NEXT_INSPECT_DATE
from idx_biz_view_jg_all from idx_biz_view_jg_all
WHERE SEQUENCE_NBR = #{id} WHERE SEQUENCE_NBR = #{id}
</select> </select>
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</if> </if>
<if <if
test="tzBaseEnterpriseInfoDto.useUnit!=null and tzBaseEnterpriseInfoDto.useUnit!='' "> test="tzBaseEnterpriseInfoDto.useUnit!=null and tzBaseEnterpriseInfoDto.useUnit!='' ">
AND use_unit LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useUnit},'%') AND use_unit LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useUnit},'%')
</if> </if>
<if <if
test="tzBaseEnterpriseInfoDto.useUnitCertificate!=null and tzBaseEnterpriseInfoDto.useUnitCertificate!='' "> test="tzBaseEnterpriseInfoDto.useUnitCertificate!=null and tzBaseEnterpriseInfoDto.useUnitCertificate!='' ">
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
</if> </if>
<if <if
test="tzBaseEnterpriseInfoDto.useCode!=null and tzBaseEnterpriseInfoDto.useCode!='' "> test="tzBaseEnterpriseInfoDto.useCode!=null and tzBaseEnterpriseInfoDto.useCode!='' ">
AND use_code LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useCode},'%') AND use_code LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useCode},'%')
</if> </if>
<if <if
test="tzBaseEnterpriseInfoDto.region!=null and tzBaseEnterpriseInfoDto.region!='' "> test="tzBaseEnterpriseInfoDto.region!=null and tzBaseEnterpriseInfoDto.region!='' ">
...@@ -65,11 +65,11 @@ ...@@ -65,11 +65,11 @@
</if> </if>
<if <if
test="tzBaseEnterpriseInfoDto.legalPerson!=null and tzBaseEnterpriseInfoDto.legalPerson!='' "> test="tzBaseEnterpriseInfoDto.legalPerson!=null and tzBaseEnterpriseInfoDto.legalPerson!='' ">
AND legal_person LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPerson},'%') AND legal_person LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPerson},'%')
</if> </if>
<if <if
test="tzBaseEnterpriseInfoDto.legalPhone!=null and tzBaseEnterpriseInfoDto.legalPhone!='' "> test="tzBaseEnterpriseInfoDto.legalPhone!=null and tzBaseEnterpriseInfoDto.legalPhone!='' ">
AND legal_phone LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPhone},'%') AND legal_phone LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPhone},'%')
</if> </if>
<if <if
test="tzBaseEnterpriseInfoDto.superviseOrgCode!=null and tzBaseEnterpriseInfoDto.superviseOrgCode!='' "> test="tzBaseEnterpriseInfoDto.superviseOrgCode!=null and tzBaseEnterpriseInfoDto.superviseOrgCode!='' ">
...@@ -154,5 +154,10 @@ ...@@ -154,5 +154,10 @@
<select id="selectByUseUnit" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo"> <select id="selectByUseUnit" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo">
select * from tz_base_enterprise_info where use_unit = #{useUnit} select * from tz_base_enterprise_info where use_unit = #{useUnit}
</select> </select>
<select id="getInspectionUnitList" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo">
select sequence_nbr,use_code,use_unit,use_contact,contact_phone
from tz_base_enterprise_info
where unit_type LIKE CONCAT('%',#{unitType},'%')
</select>
</mapper> </mapper>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<springcloud.version>Hoxton.SR8</springcloud.version> <springcloud.version>Hoxton.SR8</springcloud.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<tyboot-version>1.1.23-SNAPSHOT</tyboot-version> <tyboot-version>1.1.23-SNAPSHOT</tyboot-version>
<amos.version>1.7.10-SNAPSHOT</amos.version> <amos.version>1.8.6</amos.version>
<itext.version>7.1.1</itext.version> <itext.version>7.1.1</itext.version>
<elasticsearch.version>7.15.2</elasticsearch.version> <elasticsearch.version>7.15.2</elasticsearch.version>
</properties> </properties>
......
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