Commit 5366470d authored by mengbali153's avatar mengbali153

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

parents f666a56f a6943c59
......@@ -23,6 +23,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
......
package cn.wise.sc.cement.business.config;
import org.apache.catalina.session.StandardSessionFacade;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import javax.servlet.http.HttpSession;
import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
@Configuration
public class WebSocketConfig extends ServerEndpointConfig.Configurator {
private static final Logger log = LoggerFactory.getLogger(WebSocketConfig.class);
/**
* 修改握手信息
*/
@Override
public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
StandardSessionFacade ssf = (StandardSessionFacade) request.getHttpSession();
if (ssf != null) {
HttpSession httpSession = (HttpSession) request.getHttpSession();
//关键操作
sec.getUserProperties().put("sessionId", httpSession.getId());
log.info("获取到的SessionID:" + httpSession.getId());
}
super.modifyHandshake(sec, request, response);
}
/**
* WebSocket的支持
* @return
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
//这个对象说一下,貌似只有服务器是tomcat的时候才需要配置,具体我没有研究
return new ServerEndpointExporter();
}
}
......@@ -2,10 +2,13 @@ package cn.wise.sc.cement.business.controller;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.FileExt;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.ReportDetailVo;
import cn.wise.sc.cement.business.model.query.*;
import cn.wise.sc.cement.business.model.vo.EntrustVo;
import cn.wise.sc.cement.business.model.vo.SampleDistributionTeamVo;
import cn.wise.sc.cement.business.model.vo.SampleVo;
import cn.wise.sc.cement.business.service.IEntrustService;
import cn.wise.sc.cement.business.util.WordUtil;
import io.swagger.annotations.Api;
......@@ -19,8 +22,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
......@@ -30,8 +36,7 @@ import java.util.Map;
* @author ztw
* @since 2020-08-24
*/
@Api(tags="委托管理")
@Slf4j
@Api(tags = "委托管理")
@RestController
@RequestMapping("/business/entrust")
public class EntrustController {
......@@ -85,8 +90,8 @@ public class EntrustController {
public BaseResponse setTopping(Integer id) {
try {
return entrustService.setTopping(id);
}catch (Exception e) {
log.debug("置顶取消置顶{}",e);
} catch (Exception e) {
log.debug("置顶取消置顶{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -96,19 +101,19 @@ public class EntrustController {
public BaseResponse create(@RequestBody EntrustQuery query) {
try {
return entrustService.create(query);
}catch (Exception e) {
log.debug("新增委托{}",e);
} catch (Exception e) {
log.debug("新增委托{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "委托详情")
@GetMapping("/{id}")
public BaseResponse getDtail(@PathVariable Integer id){
public BaseResponse getDtail(@PathVariable Integer id) {
try {
return entrustService.getDtail(id);
}catch (Exception e){
log.debug("委托详情{}",e);
} catch (Exception e) {
log.debug("委托详情{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -118,8 +123,10 @@ public class EntrustController {
@ApiOperation("导出委托单")
public void getReportDetail(@PathVariable("entrustId") Integer entrustId,
HttpServletResponse response) {
// ReportDetailVo rts = iEntrustService.getReportDetail(entrustId);
EntrustVo entrustVo = entrustService.getDtail(entrustId).getData();
EntrustVo entrustVo = entrustService.getDetailCapacity(entrustId).getData();
if (entrustVo == null){
return;
}
Map<String, Object> beanParams = new HashMap<>(7);
beanParams.put("clientName", entrustVo.getClientName());
beanParams.put("entrustCode", entrustVo.getEntrustCode());
......@@ -129,18 +136,30 @@ public class EntrustController {
beanParams.put("projectName", entrustVo.getProjectName());
beanParams.put("sampleNum", entrustVo.getSampleNum());
WordUtil.writeWordReport(entrustVo.getProjectName() + "(委托单)", "entrust.ftl",
beanParams, response);
//获取委托单样品列表(不包含平行样)
List<SampleVo> sampleList = new ArrayList<>(entrustVo.getSampleList().size());
entrustVo.getSampleList()
.stream()
.filter(arg -> arg.getIsParallel() == 0)
.forEach(arg -> {
List<SampleDistributionTeamVo> teamVoList = arg.getSampleDistributionTeamVoList();
arg.setTeamName(getTeamName(teamVoList));
sampleList.add(arg);
});
beanParams.put("list", sampleList);
WordUtil.writeWordReport(entrustVo.getProjectName() + "(委托单)", "entrust2.ftl",
beanParams, response, FileExt.DOC);
}
@ApiOperation(value = "获取样品表里最大的本所编号")
@GetMapping("/getMaxCementCode")
public BaseResponse getMaxCementCode(){
public BaseResponse getMaxCementCode() {
try {
return entrustService.getMaxCementCode();
}catch (Exception e){
log.debug("获取样品表里最大的本所编号{}",e);
} catch (Exception e) {
log.debug("获取样品表里最大的本所编号{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -150,8 +169,8 @@ public class EntrustController {
public BaseResponse approval(@RequestBody ApprovalQuery query) {
try {
return entrustService.approval(query);
}catch (Exception e) {
log.debug("委托评审{}",e);
} catch (Exception e) {
log.debug("委托评审{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -161,8 +180,8 @@ public class EntrustController {
public BaseResponse handle(@RequestBody HandleQuery query) {
try {
return entrustService.handle(query);
}catch (Exception e) {
log.debug("发送样品处理任务{}",e);
} catch (Exception e) {
log.debug("发送样品处理任务{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -174,7 +193,7 @@ public class EntrustController {
@GetMapping("/getSampleHandlePage")
public BaseResponse getSampleHandlePage(PageQuery pageQuery, String projectCode) {
try {
return entrustService.getSampleHandlePage(pageQuery,projectCode);
return entrustService.getSampleHandlePage(pageQuery, projectCode);
} catch (Exception e) {
log.debug("样品处理任务分页{}", e);
}
......@@ -197,8 +216,8 @@ public class EntrustController {
public BaseResponse acceptHandle(@RequestBody Integer[] ids) {
try {
return entrustService.acceptHandle(ids);
}catch (Exception e) {
log.debug("接受样品处理任务{}",e);
} catch (Exception e) {
log.debug("接受样品处理任务{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -219,19 +238,19 @@ public class EntrustController {
public BaseResponse uploadEnclosureCL(SampleHandleEnclosureQuery query) {
try {
return entrustService.uploadEnclosureCL(query);
}catch (Exception e) {
log.debug("样品处理数据上传附件{}",e);
} catch (Exception e) {
log.debug("样品处理数据上传附件{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "样品处理详情")
@GetMapping("/getHandleDtail/{id}")
public BaseResponse getHandleDtail(@PathVariable Integer id){
public BaseResponse getHandleDtail(@PathVariable Integer id) {
try {
return entrustService.getHandleDtail(id);
}catch (Exception e){
log.debug("样品处理详情{}",e);
} catch (Exception e) {
log.debug("样品处理详情{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -241,8 +260,8 @@ public class EntrustController {
public BaseResponse finishHandle(@RequestBody Integer[] ids) {
try {
return entrustService.finishHandle(ids);
}catch (Exception e) {
log.debug("完成样品处理任务{}",e);
} catch (Exception e) {
log.debug("完成样品处理任务{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -252,8 +271,8 @@ public class EntrustController {
public BaseResponse distribution(@RequestBody DistributionQuery query) {
try {
return entrustService.distribution(query);
}catch (Exception e) {
log.debug("派发检测项目任务{}",e);
} catch (Exception e) {
log.debug("派发检测项目任务{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -276,35 +295,37 @@ public class EntrustController {
@ApiOperation(value = "检测通知单详情")
@GetMapping("/getSampleDistributionList/{id}")
public BaseResponse getSampleDistributionList(@PathVariable Integer id){
public BaseResponse getSampleDistributionList(@PathVariable Integer id) {
try {
return entrustService.getSampleDistributionList(id);
}catch (Exception e){
log.debug("检测通知单详情{}",e);
} catch (Exception e) {
log.debug("检测通知单详情{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "详情-基本信息")
@GetMapping("/getBaseDtail/{id}")
public BaseResponse getBaseDtail(@PathVariable Integer id){
public BaseResponse getBaseDtail(@PathVariable Integer id) {
try {
return entrustService.getBaseDtail(id);
}catch (Exception e){
log.debug("详情-基本信息{}",e);
} catch (Exception e) {
log.debug("详情-基本信息{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "详情-样品处理信息")
@GetMapping("/getSampleHandleDtail/{id}")
public BaseResponse getSampleHandleDtail(@PathVariable Integer id){
public BaseResponse getSampleHandleDtail(@PathVariable Integer id) {
try {
return entrustService.getSampleHandleDtail(id);
}catch (Exception e){
log.debug("详情-样品处理信息{}",e);
} catch (Exception e) {
log.debug("详情-样品处理信息{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "详情-样品处理信息-附件列表")
@GetMapping("/getSampleHandleDtailEnclosureList")
public BaseResponse getSampleHandleDtailEnclosureList(Integer sampleHandleId) {
......@@ -315,13 +336,14 @@ public class EntrustController {
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "详情-检测任务信息")
@GetMapping("/getSampleCheckDtail/{id}")
public BaseResponse getSampleCheckDtail(@PathVariable Integer id){
public BaseResponse getSampleCheckDtail(@PathVariable Integer id) {
try {
return entrustService.getSampleCheckDtail(id);
}catch (Exception e){
log.debug("详情-检测任务信息{}",e);
} catch (Exception e) {
log.debug("详情-检测任务信息{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -332,8 +354,8 @@ public class EntrustController {
public BaseResponse acceptDistribution(@RequestBody Integer[] ids) {
try {
return entrustService.acceptDistribution(ids);
}catch (Exception e) {
log.debug("接受检测项目任务{}",e);
} catch (Exception e) {
log.debug("接受检测项目任务{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -343,8 +365,8 @@ public class EntrustController {
public BaseResponse uploadEnclosurePF(SampleDistributionEnclosureQuery query) {
try {
return entrustService.uploadEnclosurePF(query);
}catch (Exception e) {
log.debug("检测项目上传附件{}",e);
} catch (Exception e) {
log.debug("检测项目上传附件{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -355,8 +377,8 @@ public class EntrustController {
public BaseResponse finishDistribution(@RequestBody Integer[] ids) {
try {
return entrustService.finishDistribution(ids);
}catch (Exception e) {
log.debug("完成检测项目任务{}",e);
} catch (Exception e) {
log.debug("完成检测项目任务{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -384,33 +406,33 @@ public class EntrustController {
@ApiOperation(value = "数据校核详情列表")
@GetMapping("/getCheckList/{id}")
public BaseResponse getCheckList(@PathVariable Integer id){
public BaseResponse getCheckList(@PathVariable Integer id) {
try {
return entrustService.getCheckList(id);
}catch (Exception e){
log.debug("数据校核详情列表{}",e);
} catch (Exception e) {
log.debug("数据校核详情列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "样品检测项校核详情")
@GetMapping("/getCheckDetail")
public BaseResponse getCheckDetail(String cementCode){
public BaseResponse getCheckDetail(String cementCode) {
try {
return entrustService.getCheckDetail(cementCode);
}catch (Exception e){
log.debug("样品检测项校核详情{}",e);
} catch (Exception e) {
log.debug("样品检测项校核详情{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "查询任务检测附件信息")
@GetMapping("/getEnclosureList")
public BaseResponse getEnclosureList(Integer sampleId, Integer teamGroupId, Integer userId){
public BaseResponse getEnclosureList(Integer sampleId, Integer teamGroupId, Integer userId) {
try {
return entrustService.getEnclosureList(sampleId, teamGroupId, userId);
}catch (Exception e){
log.debug("查询任务检测附件信息{}",e);
} catch (Exception e) {
log.debug("查询任务检测附件信息{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -420,8 +442,8 @@ public class EntrustController {
public BaseResponse checkCount(@RequestBody CheckCountQuery query) {
try {
return entrustService.checkCount(query);
}catch (Exception e) {
log.debug("校核计算{}",e);
} catch (Exception e) {
log.debug("校核计算{}", e);
}
return BaseResponse.errorMsg("失败!");
}
......@@ -432,14 +454,25 @@ public class EntrustController {
public BaseResponse check(@RequestBody CheckQuery query) {
try {
return entrustService.check(query);
}catch (Exception e) {
log.debug("数据校核{}",e);
} catch (Exception e) {
log.debug("数据校核{}", e);
}
return BaseResponse.errorMsg("失败!");
}
private String getTeamName(List<SampleDistributionTeamVo> teamVos) {
if (teamVos.size() == 0) {
return "";
}
StringBuffer rts = new StringBuffer();
teamVos.forEach(arg -> {
rts.append(arg.getTeamName()).append("、");
});
return rts.substring(0, rts.toString().length() - 1);
}
}
......@@ -8,6 +8,7 @@ import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.query.*;
import cn.wise.sc.cement.business.model.vo.TeamVo;
import cn.wise.sc.cement.business.service.IEquipmentService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
......@@ -59,6 +60,31 @@ public class EquipmentController {
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "检定设备")
@PostMapping("/test")
public BaseResponse test(@RequestBody EquipmentTestQuery query) {
try {
return equipmentService.test(query);
}catch (Exception e) {
log.debug("检定设备{}",e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "设备检定历史")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "equipmentId", value = "设备表id", paramType = "query", dataType = "Integer")
})
@GetMapping("/getTestPage")
public BaseResponse getTestPage(PageQuery pageQuery, Integer equipmentId) {
try {
return equipmentService.getTestPage(pageQuery, equipmentId);
} catch (Exception e) {
log.debug("设备检定历史{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation("设备列表导出")
@PostMapping("/export")
public void export(String brand, Integer supplierId, String name, String fileName, HttpServletResponse response) {
......@@ -79,8 +105,6 @@ public class EquipmentController {
}
}
@ApiOperation(value = "新增设备")
@PostMapping("/create")
public BaseResponse create(@RequestBody EquipmentQuery query) {
......@@ -118,7 +142,9 @@ public class EquipmentController {
@GetMapping("/getList")
public BaseResponse getList(){
try {
List<Equipment> list = equipmentService.list();
QueryWrapper<Equipment> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", 1);
List<Equipment> list = equipmentService.list(queryWrapper);
return BaseResponse.okData(list);
}catch (Exception e){
log.debug("设备列表{}",e);
......@@ -138,30 +164,8 @@ public class EquipmentController {
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "检定设备")
@PostMapping("/test")
public BaseResponse test(@RequestBody EquipmentTestQuery query) {
try {
return equipmentService.test(query);
}catch (Exception e) {
log.debug("检定设备{}",e);
}
return BaseResponse.errorMsg("失败!");
}
/* @ApiOperation(value = "设备检定分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "equipmentId", value = "设备表id", paramType = "query", dataType = "Integer")
})
@GetMapping("/getTestPage")
public BaseResponse getTestPage(PageQuery pageQuery, Integer equipmentId) {
try {
return equipmentService.getTestPage(pageQuery, equipmentId);
} catch (Exception e) {
log.debug("设备检定分页列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}*/
/*
@ApiOperation(value = "设备检定详情")
......@@ -190,12 +194,12 @@ public class EquipmentController {
@ApiOperation(value = "设备故障维修登记分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "equipmentId", value = "设备表id", paramType = "query", dataType = "Integer")
@ApiImplicitParam(name = "name", value = "设备名称", paramType = "query", dataType = "String")
})
@GetMapping("/getTroubleshootingPage")
public BaseResponse getTroubleshootingPage(PageQuery pageQuery, Integer equipmentId) {
public BaseResponse getTroubleshootingPage(PageQuery pageQuery, String name) {
try {
return equipmentService.getTroubleshootingPage(pageQuery, equipmentId);
return equipmentService.getTroubleshootingPage(pageQuery, name);
} catch (Exception e) {
log.debug("设备故障维修登记分页列表{}", e);
}
......@@ -204,9 +208,9 @@ public class EquipmentController {
@ApiOperation("设备维修列表导出")
@PostMapping("/exportTroubleshooting")
public void exportTroubleshooting(Integer equipmentIde, String fileName, HttpServletResponse response) {
public void exportTroubleshooting( String name, String fileName, HttpServletResponse response) {
try {
equipmentService.exportTroubleshooting(equipmentIde, fileName, response);
equipmentService.exportTroubleshooting(name, fileName, response);
} catch (Exception e) {
log.debug("设备维修列表导出{}", e);
}
......
package cn.wise.sc.cement.business.controller;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.FileExt;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.ReportDetailVo;
import cn.wise.sc.cement.business.model.SixElementKey;
import cn.wise.sc.cement.business.model.SixElementReport;
import cn.wise.sc.cement.business.model.vo.EntrustVo;
import cn.wise.sc.cement.business.service.IEntrustService;
import cn.wise.sc.cement.business.util.WordUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
......@@ -21,8 +25,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @description: 报告管理
......@@ -80,8 +86,8 @@ public class ReportController {
public void getReportDetail(@PathVariable("entrustId") Integer entrustId,
HttpServletResponse response) {
//首页及封面导出
ReportDetailVo rts = iEntrustService.getReportDetail(entrustId);
Map<String, Object> beanParams = new HashMap<>(10);
beanParams.put("sendName", rts.getSendName());
beanParams.put("sender", rts.getSender());
......@@ -94,9 +100,52 @@ public class ReportController {
beanParams.put("projectName", rts.getProjectName());
beanParams.put("printDate", rts.getPrintDate());
WordUtil.writeWordReport(rts.getProjectName() + "(报告).xls", "report.ftl",
beanParams, response);
//六元素导出
List<SixElementReport> list = iEntrustService.getSampleSixElementCheck(entrustId);
list.forEach(this::initMapStr2AlongPro);
List<SixElementReport> al2o3AndTio2List = list.stream()
.filter(arg -> !"-".equals(arg.getAl2o3AndTio2()))
.collect(Collectors.toList());
List<SixElementReport> al2o3SplitTio2List = list.stream()
.filter(arg -> "-".equals(arg.getAl2o3AndTio2()))
.collect(Collectors.toList());
beanParams.put("list1", al2o3AndTio2List);
beanParams.put("list2", al2o3SplitTio2List);
WordUtil.writeWordReport(rts.getProjectName() + "(报告)", "report.ftl",
beanParams, response, FileExt.EXCL);
}
/**
* 将样品六元素检测Map转换成单独属性
*
* @param sixElement 带转换的六元素检测结果
* @return 已转换结果
*/
private void initMapStr2AlongPro(SixElementReport sixElement) {
String countResult = sixElement.getCountResult();
HashMap<String, String> countResultMap = JSON.parseObject(countResult, HashMap.class);
sixElement.setAl2o3("-");
sixElement.setTio2("-");
sixElement.setAl2o3AndTio2("-");
//判断检测结果中六元素Al2O3是否包含TiO2
if (countResultMap.containsKey(SixElementKey.Al2O3AndTiO2.getKey())) {
sixElement.setAl2o3AndTio2(countResultMap.get(SixElementKey.Al2O3AndTiO2.getKey()));
} else {
sixElement.setAl2o3(countResultMap.getOrDefault(SixElementKey.Al2O3.getKey(), "0"));
sixElement.setTio2(countResultMap.getOrDefault(SixElementKey.TiO2.getKey(), "0"));
}
sixElement.setCao(countResultMap.getOrDefault(SixElementKey.CaO.getKey(), "0"));
sixElement.setCl(countResultMap.getOrDefault(SixElementKey.Cl.getKey(), "0"));
sixElement.setFe2o3(countResultMap.getOrDefault(SixElementKey.Fe2O3.getKey(), "0"));
sixElement.setLoi(countResultMap.getOrDefault(SixElementKey.LOI.getKey(), "0"));
sixElement.setMgo(countResultMap.getOrDefault(SixElementKey.MgO.getKey(), "0"));
sixElement.setSio2(countResultMap.getOrDefault(SixElementKey.SiO2.getKey(), "0"));
sixElement.setSo3(countResultMap.getOrDefault(SixElementKey.SO3.getKey(), "0"));
}
private String set2String(Set<String> source) {
......@@ -119,6 +168,6 @@ public class ReportController {
strBuilder.append("&#10;").append(target);
}
return strBuilder.replace(0,5,"").toString();
return strBuilder.replace(0, 5, "").toString();
}
}
package cn.wise.sc.cement.business.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author ztw
* @since 2020-10-13
*/
@RestController
@RequestMapping("/business/sys-user-message")
public class SysUserMessageController {
}
......@@ -50,6 +50,15 @@ public class EquipmentTest implements Serializable {
@ApiModelProperty("实施结果")
private String tryResult;
@ApiModelProperty("附件地址")
private String enclosureUrl;
@ApiModelProperty("文件名")
private String alias;
@ApiModelProperty("扩展名")
private String extName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
......@@ -29,13 +30,11 @@ import lombok.experimental.Accessors;
public class QualityApply implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目名
*/
@ApiModelProperty("项目名字")
private String projectName;
/**
* 项目id
*/
......@@ -44,43 +43,42 @@ public class QualityApply implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 来样编号
*/
@ApiModelProperty("来样编号")
private String sampleCode;
/**
* 本所编号
*/
@ApiModelProperty("本所编号")
private String cementCode;
/**
* 部门名
*/
@ApiModelProperty("部门名")
@TableField(exist = false)
private String groupName;
/**
* 样品状态
*/
@ApiModelProperty("样品状态")
private String sampleForm;
/**
* 计算结果
*/
@ApiModelProperty("输入结果")
private String inputResult;
/**
* 检测项id
*/
@ApiModelProperty("检测项id")
private Integer teamGroupId;
/**
* 时间
*/
@ApiModelProperty("项目时间")
private LocalDate createTime;
/**
* 1:人工检测 2:标准 3:误差
*/
......@@ -99,4 +97,9 @@ public class QualityApply implements Serializable {
private String teams;
@ApiModelProperty("检测人")
private String userName;
@ApiModelProperty("userId")
private Integer userId;
@ApiModelProperty("部门")
@TableField(exist = false)
private String positionName;
}
package cn.wise.sc.cement.business.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author ztw
* @since 2020-10-13
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysUserMessage implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 接收人id
*/
private Integer userId;
/**
* 接收信息
*/
private String message;
/**
* 相关内容(委托表id)
*/
private Integer appId;
/**
* 是否查看(0:否,1:是)
*/
private Integer isCheck;
/**
* 消息类型(1委托管理)
*/
private Integer messageType;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否处理(0:未处理,1:已处理)
*/
private Integer isDeal;
public interface MessageType {
int ENTRUST = 1;
}
}
package cn.wise.sc.cement.business.mapper;
import cn.wise.sc.cement.business.entity.SampleCheck;
import cn.wise.sc.cement.business.model.SixElementReport;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* <p>
* Mapper 接口
......@@ -13,4 +16,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface SampleCheckMapper extends BaseMapper<SampleCheck> {
/**
* 获取样品六元素检测结果
* @param entrustId 项目id
* @return SixElementReport
*/
List<SixElementReport> getSampleSixElementCheck(Integer entrustId);
}
package cn.wise.sc.cement.business.mapper;
import cn.wise.sc.cement.business.entity.SysUserMessage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author ztw
* @since 2020-10-13
*/
public interface SysUserMessageMapper extends BaseMapper<SysUserMessage> {
List<SysUserMessage> getNoCheck(@Param(value = "userId") Integer userId,
@Param(value = "appId") Integer appId,
@Param(value = "messageType") Integer messageType);
List<SysUserMessage> getNoDeal(@Param(value = "userId") Integer userId,
@Param(value = "appId") Integer appId,
@Param(value = "messageType") Integer messageType);
}
......@@ -3,7 +3,9 @@
<mapper namespace="cn.wise.sc.cement.business.mapper.EquipmentTroubleshootingMapper">
<sql id="where">
<where>
and et.equipment_id = #{params.equipmentId}
<if test="params.name != null and params.name != ''">
and e.name like concat('%', #{params.name}, '%')
</if>
</where>
</sql>
......
......@@ -2,4 +2,18 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.wise.sc.cement.business.mapper.SampleCheckMapper">
<select id="getSampleSixElementCheck" resultType="cn.wise.sc.cement.business.model.SixElementReport">
SELECT * FROM (SELECT count_result,entrust_id,team_group_name,sct.sample_id FROM sample_check sc
LEFT JOIN
(SELECT check_id,sample_id FROM sample_check_team) sct
ON sct.check_id = sc.id
AND sc. is_parallel = 0
WHERE sct.sample_id IS NOT NULL AND sc.team_group_name = '六元素' ) sscct
RIGHT JOIN
(SELECT cement_code,sample_code,sample_form,`name` as sample_name,weight,id
FROM sample) s
ON s.id = sscct.sample_id AND entrust_id =1
WHERE count_result IS NOT NULL;
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.wise.sc.cement.business.mapper.SysUserMessageMapper">
<!-- 未查看消息 -->
<select id="getNoCheck" resultType="cn.wise.sc.cement.business.entity.SysUserMessage" >
select *
FROM sys_user_message rum
where rum.is_check=0
<if test="userId != null and userId !=''">
and rum.user_id = #{userId}
</if>
<if test="appId != null and appId !=''">
and rum.app_id = #{appId}
</if>
<if test="messageType != null and messageType !=''">
and rum.message_type = #{messageType}
</if>
</select>
<!-- 未处理消息记录 -->
<select id="getNoDeal" resultType="cn.wise.sc.cement.business.entity.SysUserMessage" >
select *
FROM sys_user_message rum
where rum.is_deal=0
<if test="userId != null and userId !=''">
and rum.user_id = #{userId}
</if>
<if test="appId != null and appId !=''">
and rum.app_id = #{appId}
</if>
<if test="messageType != null and messageType !=''">
and rum.message_type = #{messageType}
</if>
</select>
</mapper>
......@@ -29,7 +29,7 @@
left join team_group tg on tg.id = t.group_id
left join method m on m.id = t.method_id
<include refid="where" />
ORDER BY t.id DESC
ORDER BY t.id ASC
</select>
<select id="exportList" resultType="java.util.HashMap">
......
package cn.wise.sc.cement.business.model;
/**
* @description: 文件扩展名
* @author: qh
* @create: 2020-10-16 13:40
**/
public enum FileExt {
//office后缀名
DOC(".doc"),
EXCL(".xls");
private String name;
FileExt(String name){
this.name = name;
}
public String getName() {
return name;
}
}
package cn.wise.sc.cement.business.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Message implements Serializable {
private static final long serialVersionUID = 8508882582940066562L;
@ApiModelProperty("接收人id")
private String userId;
@ApiModelProperty("接收信息")
private String message;
@ApiModelProperty("消息类型: 1个人报销,2对公收付款")
private Integer messageType;
@ApiModelProperty("相关对象表id(个人报销表或对公收付款表)")
private Integer appId;
@ApiModelProperty("发送时间")
private LocalDateTime createTime;
}
package cn.wise.sc.cement.business.model;
/**
* @description: 六元素检测结果中的key
* @author: qh
* @create: 2020-10-15 14:03
**/
public enum SixElementKey {
//六元素key
LOI("L.O.I"),
SiO2("SiO2"),
Al2O3("Al2O3"),
TiO2("TiO2"),
CaO("CaO"),
MgO("MgO"),
SO3("So3"),
Cl("Cl"),
Fe2O3("Fe2O3"),
Al2O3AndTiO2("Al2O3+TiO2");
private String key;
SixElementKey(String key) {
this.key = key;
}
public String getKey(){
return this.key;
}
}
package cn.wise.sc.cement.business.model;
import lombok.Data;
import java.io.Serializable;
/**
* @description: 六元素检测报告
* @author: qh
* @create: 2020-10-15 12:24
**/
@Data
public class SixElementReport implements Serializable {
private static final long serialVersionUID = 42L;
/**
* 样品名称
*/
private String sampleName;
/**
* 来样状态
*/
private String sampleForm;
/**
* 来样编号
*/
private String sampleCode;
/**
* 样品重量
*/
private String weight;
/**
* 本所编号
*/
private String cementCode;
/**
* 校核数据
*/
private String countResult;
//下面为六元素
private String loi ="";
private String sio2 ="";
private String fe2o3 ="";
private String cao ="";
private String mgo ="";
private String so3 ="";
private String cl="";
//情况一:Al2O3(含TiO3)
private String al2o3AndTio2 ="";
//情况二:Al2O3和TiO3单独分开
private String al2o3 ="";
private String tio2 ="";
}
......@@ -52,8 +52,13 @@ public class EquipmentTestVo {
@ApiModelProperty("校核附件")
private String enclosure;
@ApiModelProperty("校核附件信息")
private List<EnclosureQuery> enclosureQueryList;
@ApiModelProperty("文件名")
private String alias;
@ApiModelProperty("扩展名")
private String extName;
@ApiModelProperty("路径")
private String enclosureUrl;
}
......@@ -46,6 +46,7 @@ public class QualityDetailVo implements Serializable {
public static class SampleOriginal {
private String cementCode;
private String userName;
private Integer userId;
private String teamValues;
}
......
......@@ -3,7 +3,6 @@ package cn.wise.sc.cement.business.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: ztw
......@@ -49,13 +48,4 @@ public class SampleDistributionTeamVo {
@ApiModelProperty("扩展名")
private String extName;
}
......@@ -7,6 +7,7 @@ import cn.wise.sc.cement.business.entity.SampleHandleEnclosure;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.ReportDetailVo;
import cn.wise.sc.cement.business.model.SixElementReport;
import cn.wise.sc.cement.business.model.query.*;
import cn.wise.sc.cement.business.model.vo.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -34,6 +35,7 @@ public interface IEntrustService extends IService<Entrust> {
BaseResponse<Entrust> create(EntrustQuery query);
BaseResponse<EntrustVo> getDtail(Integer id);
BaseResponse<EntrustVo> getDetailCapacity(Integer id);
BaseResponse<String> getMaxCementCode();
......@@ -106,10 +108,10 @@ public interface IEntrustService extends IService<Entrust> {
BaseResponse<List<SampleVo>> getSampleCheckDtail(Integer id);
/**
* 查询六元素的检测结果
* @param entrustId 委托id
* @return 六元素校核
*/
List<SixElementReport> getSampleSixElementCheck(Integer entrustId);
}
......@@ -40,9 +40,9 @@ public interface IEquipmentService extends IService<Equipment> {
BaseResponse<String> troubleshooting(EquipmentTroubleshootingQuery query);
BaseResponse<IPage<EquipmentTroubleshootingVo>> getTroubleshootingPage(PageQuery pageQuery, Integer equipmentId);
BaseResponse<IPage<EquipmentTroubleshootingVo>> getTroubleshootingPage(PageQuery pageQuery, String name);
void exportTroubleshooting(Integer equipmentId, String fileName, HttpServletResponse response);
void exportTroubleshooting(String name, String fileName, HttpServletResponse response);
BaseResponse<EquipmentTroubleshootingVo> getTroubleshootingDetail(Integer id);
......
package cn.wise.sc.cement.business.service;
import cn.wise.sc.cement.business.entity.SysUserMessage;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.util.WebSocketServer;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* <p>
* 服务类
* </p>
*
* @author ztw
* @since 2020-10-13
*/
public interface ISysUserMessageService extends IService<SysUserMessage> {
BaseResponse<String> sendMessage(Integer userId, String message, Integer appId, Integer messageType);
BaseResponse<String> checkMessage(Integer userId, Integer appId, Integer messageType);
BaseResponse<String> dealMessage(Integer userId, Integer appId, Integer messageType);
}
......@@ -9,6 +9,7 @@ import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.LoginUser;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.ReportDetailVo;
import cn.wise.sc.cement.business.model.SixElementReport;
import cn.wise.sc.cement.business.model.query.*;
import cn.wise.sc.cement.business.model.vo.*;
import cn.wise.sc.cement.business.service.*;
......@@ -105,6 +106,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
private EquipmentUseMapper equipmentUseMapper;
@Resource
private ClientMapper clientMapper;
@Autowired
private ISysUserMessageService userMessageService;
/**
* 委托分页
......@@ -230,8 +233,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
Entrust entrust = new Entrust();
BeanUtils.copyProperties(query, entrust);
//生成委托编号
String entrustCode = commonService.createNo("WT", entrustMapper.counts());
entrust.setEntrustCode(entrustCode)
// String entrustCode = commonService.createNo("WT", entrustMapper.counts());
entrust.setEntrustCode(null)
.setUserId(loginUser.getId())
.setStatus(0)
.setIsDelete(1)
......@@ -265,6 +268,15 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
sampleTmpService.saveBatch(sampleTmpList);
}
logsService.saveLog(SysLogs.ObjType.ENTRUST_LOG, entrust.getId(), "提交了委托单", null);
//消息推送
Integer approvalId = sysApprovalMapper.getApprovalId("委托评审");
if (approvalId == null) {
return BaseResponse.errorMsg("委托评审信息错误");
}
BaseResponse wrapper = userMessageService.sendMessage(approvalId, "您有一条新的委托单申请等待评审",entrust.getId(), SysUserMessage.MessageType.ENTRUST);
if(wrapper.getCode() != 200){
return wrapper;
}
return BaseResponse.okData(entrust);
}
......@@ -358,9 +370,106 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
}
entrustVo.setSampleTmpList(sampleTmpVoList);
}
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.errorMsg("请登录账号");
}
userMessageService.checkMessage(loginUser.getId(), id, SysUserMessage.MessageType.ENTRUST);
return BaseResponse.okData(entrustVo);
}
@Override
public BaseResponse<EntrustVo> getDetailCapacity(Integer id) {
if (id == null) {
return BaseResponse.errorMsg("参数错误");
}
EntrustVo entrustVo = entrustMapper.getDetail(id);
if (entrustVo.getStatus() != 0) {
QueryWrapper<Sample> sampleWrapper = new QueryWrapper<>();
sampleWrapper.eq("entrust_id", entrustVo.getId());
sampleWrapper.orderByAsc("id");
List<Sample> sampleList = sampleService.list(sampleWrapper);
List<SampleVo> sampleVoList = new ArrayList<>();
List<SampleVo> sampleHandleVoList = new ArrayList<>();
if (sampleList != null && sampleList.size() > 0) {
for (Sample sample : sampleList) {
SampleVo sampleVo = new SampleVo();
BeanUtils.copyProperties(sample, sampleVo);
String teamIds = sample.getTeamIds();
String teamName = "";
List<SampleDistributionTeamVo> sampleNoDistributionTeamVoList = new ArrayList<>();
if (teamIds != null) {
String[] teamIdS = teamIds.split("、");
for (String teamId : teamIdS) {
TeamVo teamVo = teamMapper.getDetail(Integer.valueOf(teamId));
if (teamVo != null && "1".equals(teamVo.getQualifications())) {
teamName = teamName.equals("") ? teamVo.getName() : (teamName + "、" + teamVo.getName());
SampleDistributionTeamVo distributionTeamVo = new SampleDistributionTeamVo();
distributionTeamVo.setTeamGroupId(teamVo.getGroupId());
distributionTeamVo.setTeamGroupName(teamVo.getGroupName());
distributionTeamVo.setTeamId(teamVo.getId());
distributionTeamVo.setTeamName(teamVo.getName());
sampleNoDistributionTeamVoList.add(distributionTeamVo);
}
}
}
sampleVo.setTeamName(teamName);
//评审人员可以查看所有的检测项内容
List<SampleDistributionTeamVo> sampleDistributionTeamVoList =
distributionMapper.getDistributionTeamList(sample.getId(), null);
if (sampleDistributionTeamVoList != null && sampleDistributionTeamVoList.size() > 0) {
sampleVo.setSampleDistributionTeamVoList(sampleDistributionTeamVoList);
} else {
sampleVo.setSampleDistributionTeamVoList(sampleNoDistributionTeamVoList);
}
sampleVoList.add(sampleVo);
//样品处理列表只展示
if (sample.getIsParallel() == 1) {
if (sample.getCementCode().equals(sample.getParallelCode())) {
sampleHandleVoList.add(sampleVo);
}
} else {
sampleHandleVoList.add(sampleVo);
}
}
}
entrustVo.setSampleList(sampleVoList);//样品列表(展示平行样样品)
entrustVo.setSampleHandleList(sampleHandleVoList);//处理样品列表(不展示平行样样品)
} else {
QueryWrapper<SampleTmp> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("entrust_id", entrustVo.getId());
List<SampleTmp> sampleTmpList = sampleTmpService.list(queryWrapper);
List<SampleTmpVo> sampleTmpVoList = new ArrayList<>();
if (sampleTmpList != null && sampleTmpList.size() > 0) {
for (SampleTmp sampleTmp : sampleTmpList) {
SampleTmpVo sampleTmpVo = new SampleTmpVo();
BeanUtils.copyProperties(sampleTmp, sampleTmpVo);
String teamIds = sampleTmp.getTeamIds();
String teamName = "";
if (teamIds != null) {
String[] teamIdS = teamIds.split("、");
for (String teamId : teamIdS) {
Team team = teamMapper.selectById(Integer.valueOf(teamId));
if (team != null && "1".equals(team.getQualifications())) {
team.getName();
teamName = teamName.equals("") ? team.getName() : (teamName + "、" + team.getName());
}
}
}
sampleTmpVo.setTeamName(teamName);
sampleTmpVoList.add(sampleTmpVo);
}
}
entrustVo.setSampleTmpList(sampleTmpVoList);
}
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.errorMsg("请登录账号");
}
userMessageService.checkMessage(loginUser.getId(), id, SysUserMessage.MessageType.ENTRUST);
return BaseResponse.okData(entrustVo);
}
/**
* 详情-基本信息
*
......@@ -557,6 +666,13 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
return BaseResponse.okData(sampleVoList);
}
@Override
public List<SixElementReport> getSampleSixElementCheck(Integer entrustId) {
return sampleCheckMapper.getSampleSixElementCheck(entrustId);
}
/**
* 获取样品表里最大的平行样编号
......@@ -684,6 +800,9 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
redisUtil.setString("maxCementCode", maxCementCode);
}
entrust.setStatus(1).setProjectType(query.getProjectType());
//审批后生成委托编号
String entrustCode = entrust.getProjectCode()+"_"+query.getSampleList().get(0).getCementCode();
entrust.setEntrustCode(entrustCode);
logsService.saveLog(SysLogs.ObjType.ENTRUST_LOG, entrust.getId(), "修改评审状态为“通过”", null);
} else if (query.getIsAgree() == 2) { //驳回
entrust.setStatus(2);
......@@ -701,7 +820,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
.setRemark(null);
approvalMapper.insert(entrustApproval);
entrustMapper.updateById(entrust);
//处理消息
userMessageService.dealMessage(loginUser.getId(), entrust.getId(), SysUserMessage.MessageType.ENTRUST);
return BaseResponse.okMsg("审批完成");
}
......@@ -764,6 +884,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
}
sampleHandleEnclosureService.saveBatch(sampleHandleEnclosureList);
}
//消息推送
BaseResponse wrapper = userMessageService.sendMessage(sampleHandle.getUserId(), "您有一条样品处理信息等待处理",entrust.getId(), SysUserMessage.MessageType.ENTRUST);
if(wrapper.getCode() != 200){
return wrapper;
}
}
}
//该委托单下的样品改为已领用状态
......@@ -781,6 +906,10 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
.setStatus(3);
entrustMapper.updateById(entrust);
logsService.saveLog(SysLogs.ObjType.ENTRUST_LOG, entrust.getId(), "发送样品处理任务", null);
return BaseResponse.okMsg("已发送样品处理任务");
}
......@@ -930,6 +1059,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
return BaseResponse.errorMsg("样品信息错误");
}
logsService.saveLog(SysLogs.ObjType.ENTRUST_LOG, sample.getEntrustId(), "接受样品处理任务", null);
//处理消息
userMessageService.dealMessage(loginUser.getId(), sample.getEntrustId(), SysUserMessage.MessageType.ENTRUST);
return BaseResponse.okMsg("已接受样品处理任务");
}
......@@ -1124,6 +1255,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
.setStatus(0)
.setCreateTime(LocalDateTime.now());
sampleDistributionList.add(sampleDistribution);
//消息推送
BaseResponse wrapper = userMessageService.sendMessage(distributionTeamQuery.getUserId(), "您有一条样品检测信息等待接受",entrust.getId(), SysUserMessage.MessageType.ENTRUST);
if(wrapper.getCode() != 200){
return wrapper;
}
}
}
Sample sample = sampleService.getById(distributionQuery.getSampleId());
......@@ -1297,6 +1433,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
return BaseResponse.errorMsg("样品信息错误");
}
logsService.saveLog(SysLogs.ObjType.ENTRUST_LOG, sample.getEntrustId(), "接受检测项目任务", null);
//处理消息
userMessageService.dealMessage(loginUser.getId(), sample.getEntrustId(), SysUserMessage.MessageType.ENTRUST);
return BaseResponse.okMsg("已接受检测项目任务");
}
......@@ -2117,6 +2255,7 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
sampleOriginal.setCementCode(param.getEntrustCode());
sampleOriginal.setTeamValues(param.getInputResult());
sampleOriginal.setUserName(param.getUserName());
sampleOriginal.setUserId(param.getUserId());
qualitySample.getSampleOriginals().add(sampleOriginal);
qualitySample.setCementCode(param.getCementCode());
qualitySample.setSampleCode(param.getSampleCode());
......
......@@ -9,6 +9,7 @@ import cn.wise.sc.cement.business.model.vo.*;
import cn.wise.sc.cement.business.service.IEquipmentService;
import cn.wise.sc.cement.business.service.ISysUserService;
import cn.wise.sc.cement.business.util.ExcelUtil;
import cn.wise.sc.cement.business.wrapper.page.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
......@@ -224,8 +225,6 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
}
/**
* 设备检定 保存设备检定表信息和附件表信息,附件表的entity_type为3
* @param query (不传id为添加记录,传id为修改记录)
......@@ -246,6 +245,9 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
EquipmentTest equipmentTest = new EquipmentTest();
BeanUtils.copyProperties(query, equipmentTest);
equipmentTest.setUserId(userService.getLoginUser().getId())
.setEnclosureUrl(enclosureQuery.getEnclosureUrl())
.setAlias(enclosureQuery.getAlias())
.setExtName(enclosureQuery.getExtName())
.setCreateTime(LocalDateTime.now());
testMapper.insert(equipmentTest);
equipment.setTestDate(equipmentTest.getTestDate());
......@@ -256,13 +258,6 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
equipment.setAlias(enclosureQuery.getAlias());
equipment.setExtName(enclosureQuery.getExtName());
equipmentMapper.updateById(equipment);
//保存校核附件信息
List<EnclosureQuery> enclosureQueryList = new ArrayList<>();
enclosureQueryList.add(enclosureQuery);
Boolean ref = commonService.saveEntityEnclosure(EntityEnclosure.EntityType.EQUIPMENT_TEST, equipmentTest.getId(), enclosureQueryList);
if(!ref){
return BaseResponse.errorMsg("保存保存校核附件失败!");
}
return BaseResponse.okData("检定完成");
}
......@@ -278,21 +273,6 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
params.put("equipmentId", equipmentId);
Page<EquipmentTestVo> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
IPage<EquipmentTestVo> pages = testMapper.getPage(page,params);
List<EquipmentTestVo> list = page.getRecords();
if(list != null && list.size()>0){
for(EquipmentTestVo equipmentTestVo : list){
List<EntityEnclosure> entityEnclosureList = commonService.getEnclosureList
(EntityEnclosure.EntityType.EQUIPMENT_TEST, equipmentTestVo.getId());
String enclosure = "";
if(entityEnclosureList != null && entityEnclosureList.size()>0){
for(EntityEnclosure entityEnclosure : entityEnclosureList){
String fileName = entityEnclosure.getAlias()+entityEnclosure.getExtName();
enclosure = enclosure.equals("")?fileName:enclosure+"、"+fileName;
}
}
equipmentTestVo.setEnclosure(enclosure);
}
}
return BaseResponse.okData(pages);
}
......@@ -318,7 +298,7 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
.setExtName(entityEnclosure.getExtName());
enclosureQueryList.add(enclosureQuery);
}
equipmentTestVo.setEnclosureQueryList(enclosureQueryList);
return BaseResponse.okData(equipmentTestVo);
}
......@@ -356,13 +336,14 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
/**
* 设备故障维修登记分页查询
* @param pageQuery
* @param equipmentId
* @param name
* @return
*/
@Override
public BaseResponse<IPage<EquipmentTroubleshootingVo>> getTroubleshootingPage(PageQuery pageQuery, Integer equipmentId) {
public BaseResponse<IPage<EquipmentTroubleshootingVo>> getTroubleshootingPage(PageQuery pageQuery,
String name) {
Map<String, Object> params = new HashMap<>();
params.put("equipmentId", equipmentId);
params.put("equipmentId", name);
Page<EquipmentTroubleshootingVo> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
IPage<EquipmentTroubleshootingVo> pages = troubleshootingMapper.getPage(page,params);
return BaseResponse.okData(pages);
......@@ -370,14 +351,14 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
/**
* 设备维修列表导出
* @param equipmentId
* @param name
* @param fileName
* @param response
*/
@Override
public void exportTroubleshooting(Integer equipmentId, String fileName, HttpServletResponse response) {
public void exportTroubleshooting(String name, String fileName, HttpServletResponse response) {
Map<String, Object> params = new HashMap<>();
params.put("equipmentId", equipmentId);
params.put("name", name);
List<Map<String, Object>> list= troubleshootingMapper.exportList(params);
if (!CollectionUtils.isEmpty(list)) {
Map<String, Object> map = list.get(0);
......@@ -437,7 +418,12 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
if(equipmentVo == null){
return BaseResponse.errorMsg("信息错误!");
}
QueryWrapper<EquipmentScrap> esWrapper = new QueryWrapper<>();
esWrapper.eq("equipment_id",equipmentVo.getId());
EquipmentScrap es = scrapMapper.selectOne(esWrapper);
if(es != null){
return BaseResponse.errorMsg("此设备已经申请报废!");
}
EquipmentScrap equipmentScrap = new EquipmentScrap();
BeanUtils.copyProperties(query, equipmentScrap);
if(query.getId() == null){
......
package cn.wise.sc.cement.business.service.impl;
import cn.wise.sc.cement.business.entity.QualityApply;
import cn.wise.sc.cement.business.entity.SysGroup;
import cn.wise.sc.cement.business.entity.SysUser;
import cn.wise.sc.cement.business.mapper.QualityApplyMapper;
import cn.wise.sc.cement.business.service.IQualityApplyService;
import cn.wise.sc.cement.business.service.ISysGroupService;
import cn.wise.sc.cement.business.service.ISysUserService;
import cn.wise.sc.cement.business.util.ExcelUtil;
import cn.wise.sc.cement.business.util.RedisUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.Data;
import org.apache.poi.ss.usermodel.Header;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -32,6 +40,21 @@ import java.util.stream.Collectors;
public class QualityApplyServiceImpl extends ServiceImpl<QualityApplyMapper, QualityApply>
implements IQualityApplyService {
final
RedisUtil redisUtil;
final
ISysUserService iSysUserService;
final
ISysGroupService iSysGroupService;
public QualityApplyServiceImpl(RedisUtil redisUtil,
ISysUserService iSysUserService,
ISysGroupService iSysGroupService) {
this.redisUtil = redisUtil;
this.iSysUserService = iSysUserService;
this.iSysGroupService = iSysGroupService;
}
@Override
public Set<Integer> selectQualityApplyStatusByProIds(List<Integer> projectIds) {
if (projectIds.size() == 0) {
......@@ -59,8 +82,42 @@ public class QualityApplyServiceImpl extends ServiceImpl<QualityApplyMapper, Qua
List<QualityApply> list = this.list(qw);
//找到所有项目id归类
Set<Integer> projectIds = list.stream().map(QualityApply::getProjectId).collect(Collectors.toSet());
String[] headers = new String[30];
String[] headers = null;
List<Object[]> datas = new ArrayList<>();
//关联部门名字
Set<Integer> userIds = list.stream()
.filter(arg -> !"误差".equals(arg.getUserName()) &&
!"标准样".equals(arg.getUserName()))
.map(QualityApply::getUserId)
.collect(Collectors.toSet());
//获取所以用户
final String userCache = "SYS_USER:CACHE";
final String groupCache = "SYS_GROUP:CACHE";
if (!redisUtil.existsKey(userCache)) {
List<SysUser> sysUsers = iSysUserService.list();
redisUtil.setString(userCache, JSON.toJSONString(sysUsers), 600);
}
if (!redisUtil.existsKey(groupCache)) {
List<SysGroup> sysGroups = iSysGroupService.list();
redisUtil.setString(groupCache, JSON.toJSONString(sysGroups), 600);
}
//会有临界值问题
List<SysUser> sysUsers = JSON.parseArray(redisUtil.getString(userCache) + "", SysUser.class);
List<SysGroup> sysGroups = JSON.parseArray(redisUtil.getString(groupCache) + "", SysGroup.class);
Map<Integer, String> userGroupMap = new HashMap<>(userIds.size());
sysUsers.stream()
.filter(arg -> userIds.contains(arg.getId()))
.forEach(arg -> sysGroups.forEach(opt -> {
if (opt.getId().intValue() == arg.getGroupId()) {
userGroupMap.put(arg.getId(), opt.getName());
}
}));
if (userGroupMap.size() == 0) {
return;
}
for (Integer projectId : projectIds) {
//找到每个项目的检测组 以检测组归类
Set<Integer> teamIds = list.stream()
......@@ -78,26 +135,31 @@ public class QualityApplyServiceImpl extends ServiceImpl<QualityApplyMapper, Qua
//写每个样品的表头
list.stream()
.filter(arg -> arg.getTeamGroupId().intValue() == teamId )
.filter(arg -> arg.getTeamGroupId().intValue() == teamId)
.findFirst().ifPresent(arg -> {
List<String> teams = JSON.parseArray(arg.getTeams(), String.class);
Object[] objs = new Object[teams.size() + 7];
Object[] objs = new Object[teams.size() + 8];
objs[0] = "项目名称";
objs[1] = "项目编号";
objs[2] = "样品名称";
objs[3] = "样品状态";
objs[4] = "来样编号";
objs[5] = "本所编号";
objs[6] = "分析";
objs[6] = "部门";
objs[7] = "分析";
for (int i = 0; i < teams.size(); i++) {
objs[7 + i] = teams.get(i);
String teamName = teams.get(i);
if (teamName.contains("\"")) {
teamName = teamName.replace("\"", "");
}
objs[8 + i] = teamName;
}
datas.add(objs);
});
//为每个样品写值
samples.forEach(arg -> {
List<String> inputValus = JSON.parseArray(arg.getInputResult(), String.class);
Object[] objs = new Object[inputValus.size() + 7];
Object[] objs = new Object[inputValus.size() + 8];
if (!"误差".equals(arg.getUserName())) {
objs[0] = arg.getProjectName();
objs[1] = arg.getProjectId();
......@@ -105,15 +167,21 @@ public class QualityApplyServiceImpl extends ServiceImpl<QualityApplyMapper, Qua
objs[3] = arg.getSampleForm();
objs[4] = arg.getSampleCode();
objs[5] = arg.getCementCode();
objs[6] = userGroupMap.get(arg.getUserId());
}
//添加名字
objs[6] = arg.getUserName();
objs[7] = arg.getUserName();
for (int i = 0; i < inputValus.size(); i++) {
objs[7 + i] = inputValus.get(i);
String value = inputValus.get(i);
if (value == null){
value = "0";
}
for (int i = 0; i < inputValus.size(); i++) {
objs[7 + i] = inputValus.get(i);
if ( value.contains("\"")) {
value = value.replace("\"", "");
}
objs[8 + i] = value;
}
datas.add(objs);
});
......
......@@ -77,7 +77,7 @@ public class StandardServiceImpl extends ServiceImpl<StandardMapper, Standard> i
if (StringUtils.isNotEmpty(supplierName)) {
qw.like("supplier_name", supplierName);
}
qw.orderByDesc("create_time");
qw.orderByDesc("name");
IPage<Standard> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
page = standardMapper.selectPage(page, qw);
return BaseResponse.okData(page);
......
package cn.wise.sc.cement.business.service.impl;
import cn.wise.sc.cement.business.entity.SysUser;
import cn.wise.sc.cement.business.entity.SysUserMessage;
import cn.wise.sc.cement.business.mapper.SysUserMessageMapper;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.Message;
import cn.wise.sc.cement.business.service.ISysUserMessageService;
import cn.wise.sc.cement.business.service.ISysUserService;
import cn.wise.sc.cement.business.util.WebSocketServer;
import cn.wise.sc.cement.business.wrapper.WrapMapper;
import cn.wise.sc.cement.business.wrapper.Wrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author ztw
* @since 2020-10-13
*/
@Service
public class SysUserMessageServiceImpl extends ServiceImpl<SysUserMessageMapper, SysUserMessage> implements ISysUserMessageService {
@Resource
private SysUserMessageMapper userMessageMapper;
@Resource
protected HttpServletResponse response;
@Autowired
protected HttpServletRequest request;
@Autowired
WebSocketServer webSocketServer;
/**
* 发送消息
* @param userId
* @param message
* @param appId
* @param messageType
* @return
*/
@Override
public BaseResponse<String> sendMessage(Integer userId, String message, Integer appId, Integer messageType) {
int ret = 0;
SysUserMessage userMessage = new SysUserMessage();
userMessage.setUserId(userId);
userMessage.setMessage(message);
userMessage.setAppId(appId);
userMessage.setIsCheck(0);
userMessage.setMessageType(messageType);
userMessage.setCreateTime(LocalDateTime.now());
userMessage.setUpdateTime(userMessage.getCreateTime());
userMessage.setIsDeal(0);
ret = this.userMessageMapper.insert(userMessage);
if(ret == 0 ){
return BaseResponse.errorMsg("消息推送失败");
}
String dealer = String.valueOf(userId);
Message m =Message.builder().userId(dealer).message(message).messageType(messageType).appId(appId)
.createTime(userMessage.getCreateTime()).build();
webSocketServer.sendTo(m);
/*SysUser sysUser = userService.getById(userId);
if(sysUser != null && StringUtils.isNotBlank(sysUser.getPhone())){
SMSUtil.sendCode(sysUser.getPhone(), message);
}*/
return BaseResponse.okData("成功");
}
/**
* 查看消息
* @param userId
* @param appId
* @param messageType
* @return
*/
@Override
public BaseResponse<String> checkMessage(Integer userId, Integer appId, Integer messageType) {
int ret = 0;
List<SysUserMessage> list = this.userMessageMapper.getNoCheck(userId, appId, messageType);
if(list != null && list.size()>0){
for(SysUserMessage um : list){
um.setIsCheck(1);
ret = this.userMessageMapper.updateById(um);
if (ret == 0) {
return BaseResponse.errorMsg("查看消息记录更新失败");
}
}
}
return BaseResponse.okData("成功");
}
/**
* 处理消息
* @param userId
* @param appId
* @param messageType
* @return
*/
@Override
public BaseResponse<String> dealMessage(Integer userId, Integer appId, Integer messageType) {
int ret = 0;
List<SysUserMessage> list = this.userMessageMapper.getNoDeal(userId, appId, messageType);
if(list != null && list.size()>0){
for(SysUserMessage um : list){
um.setIsCheck(1);
um.setIsDeal(1);
ret = this.userMessageMapper.updateById(um);
if (ret == 0) {
return BaseResponse.errorMsg("处理消息记录更新失败");
}
}
}
return BaseResponse.okData("成功");
}
}
......@@ -49,7 +49,7 @@ public class TeamGroupServiceImpl extends ServiceImpl<TeamGroupMapper, TeamGroup
if(StringUtils.isNotEmpty(name)){
qw.like("name", name);
}
qw.orderByDesc("create_time");
qw.orderByAsc("id");
IPage<TeamGroup> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
page = teamGroupMapper.selectPage(page, qw);
return BaseResponse.okData(page);
......
......@@ -2,6 +2,7 @@ package cn.wise.sc.cement.business.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.wise.sc.cement.business.entity.Team;
import cn.wise.sc.cement.business.entity.TeamGroup;
import cn.wise.sc.cement.business.exception.BusinessExceptionEnum;
import cn.wise.sc.cement.business.mapper.TeamMapper;
import cn.wise.sc.cement.business.model.BaseResponse;
......@@ -87,6 +88,12 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements IT
if(query.getIsDisplay() != 1 && query.getIsDisplay() !=0){
return BaseResponse.errorMsg("委托是否可见参数错误");
}
QueryWrapper<Team> qw = new QueryWrapper<>();
qw.eq("name", query.getName());
int count = teamMapper.selectCount(qw);
if (count > 0) {
return BaseResponse.errorMsg(query.getName() + "已存在");
}
BeanUtils.copyProperties(query, create);
create.setStatus(1).setCreateTime(LocalDateTime.now());
teamMapper.insert(create);
......@@ -111,9 +118,18 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements IT
if(query.getMethodId() == null){
return BaseResponse.errorMsg("请选择检依据");
}
QueryWrapper<Team> qw = new QueryWrapper<>();
qw.eq("name", query.getName());
qw.ne("id", query.getId());
int count = teamMapper.selectCount(qw);
if (count > 0) {
return BaseResponse.errorMsg(query.getName() + "已存在");
}
update.setGroupId(query.getGroupId())
.setMethodId(query.getMethodId())
.setName(query.getName());
.setName(query.getName())
.setIsDisplay(query.getIsDisplay())
.setQualifications(query.getQualifications());
teamMapper.updateById(update);
return BaseResponse.okData(update);
}
......
package cn.wise.sc.cement.business.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* 序列化对象工具类,用于保存和读取redis数据使用
* Function:
* Date: 2018年9月12日10:18:56
*/
public class SerializeUtil {
private static Logger log = LoggerFactory.getLogger(SerializeUtil.class);
/**
* 序列化对象
* @param object
* @return
*/
public static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
byte[] bytes = null;
try {
// 序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
bytes = baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (oos != null) {
oos.close();
}
if (baos != null) {
baos.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return bytes;
}
/**
* 反序列化对象
* @param bytes
* @return
*/
public static Object unserialize(byte[] bytes) {
Object obj = null;
ByteArrayInputStream bais = null;
try {
// 反序列化
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
obj = ois.readObject();
ois.close();
bais.close();
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
/**
* 关闭的数据源或目标。调用 close()方法可释放对象保存的资源(如打开文件)
* 关闭此流并释放与此流关联的所有系统资源。如果已经关闭该流,则调用此方法无效。
* @param closeable
*/
public static void close(Closeable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (Exception e) {
log.info("Unable to close %s", closeable, e);
}
}
}
/**
* 列表序列化(用于Redis整存整取)
* @param value
* @return
*/
public static <T> byte[] serialize(List<T> value) {
if (value == null) {
throw new NullPointerException("Can't serialize null");
}
byte[] rv=null;
ByteArrayOutputStream bos = null;
ObjectOutputStream os = null;
try {
bos = new ByteArrayOutputStream();
os = new ObjectOutputStream(bos);
for(T obj : value){
os.writeObject(obj);
}
os.writeObject(null);
os.close();
bos.close();
rv = bos.toByteArray();
} catch (IOException e) {
throw new IllegalArgumentException("Non-serializable object", e);
} finally {
close(os);
close(bos);
}
return rv;
}
/**
* 反序列化列表(用于Redis整存整取)
* @param in
* @return
*/
public static <T> List<T> unserializeForList(byte[] in) {
List<T> list = new ArrayList<T>();
ByteArrayInputStream bis = null;
ObjectInputStream is = null;
try {
if(in != null) {
bis=new ByteArrayInputStream(in);
is=new ObjectInputStream(bis);
while (true) {
T obj = (T) is.readObject();
if(obj == null){
break;
}else{
list.add(obj);
}
}
is.close();
bis.close();
}
} catch (IOException e) {
log.warn("Caught IOException decoding %d bytes of data",
in == null ? 0 : in.length, e);
} catch (ClassNotFoundException e) {
log.warn("Caught CNFE decoding %d bytes of data",
in == null ? 0 : in.length, e);
} finally {
close(is);
close(bis);
}
return list;
}
}
package cn.wise.sc.cement.business.util;
import cn.wise.sc.cement.business.model.Message;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@ServerEndpoint("/test-websocket/{sid}")
@Component
@Slf4j
public class WebSocketServer {
/**
* 用于存放所有在线客户端
*/
private static Map<String, Session> clients = new ConcurrentHashMap<>();
// private static Map<String, List<Message>> messages = new ConcurrentHashMap<>();
/*@Value("${websocket.socketKey}")
private String SOCKET_KEY;
@Value("${websocket.host}")
private String host;
@Value("${websocket.port}")
private int port;
@Value("${websocket.timeout}")
private int timeout;
@Value("${websocket.clientDB}")
private long clientDB;
@Value("${websocket.selectDB}")
private int selectDB;
@Value("${websocket.password}")
private String password;*/
private static final String SOCKET_KEY = "socketkey";
private static final String host = "localhost";
private static final int port = 6379;
private static final int timeout = 100000;
private static final long clientDB = 2;
private static final int selectDB = 2;
private static final String password = "Wise_@123456";
@OnOpen
public void onOpen(Session session,@PathParam("sid") String sid) {
log.info("有新的客户端上线: {}", session.getId());
clients.put(sid, session);
Jedis jedis = new Jedis(host, port, timeout);
// jedis.auth(password);
jedis.select(selectDB);
// jedis.getClient().setDb(clientDB);
List<Message> messageList = SerializeUtil.unserializeForList(jedis.get((SOCKET_KEY+sid).getBytes()));
if (session != null) {
for(int i=0; i<messageList.size(); i++){
Message message = messageList.get(i);
try {
JSONObject json = (JSONObject)JSONObject.toJSON(message);
String msg = json.toJSONString();
session.getBasicRemote().sendText(msg);
} catch (IOException e) {
e.printStackTrace();
}
}
jedis.del((SOCKET_KEY+sid).getBytes());
}
}
@OnClose
public void onClose(Session session,@PathParam("sid") String sid) {
String sessionId = session.getId();
log.info("有客户端离线: {}", sessionId);
clients.remove(sid);
}
@OnError
public void onError(Session session, Throwable throwable,@PathParam("sid") String sid) {
throwable.printStackTrace();
if (clients.get(sid) != null) {
clients.remove(sid);
}
}
@OnMessage
public void onMessage(String message) {
log.info("收到客户端发来的消息: {}", message);
this.sendTo(JSON.parseObject(message, Message.class));
}
/**
* 发送消息
*
* @param message 消息对象
*/
public void sendTo(Message message) {
if (clients.get(message.getUserId()) == null) {
Jedis jedis = new Jedis(host, port, timeout);
// jedis.auth(password);
jedis.select(selectDB);
// jedis.getClient().setDb(clientDB);
List<Message> messageList = SerializeUtil.unserializeForList(jedis.get((SOCKET_KEY+message.getUserId()).getBytes()));
messageList.add(message);
jedis.set((SOCKET_KEY+message.getUserId()).getBytes(), SerializeUtil.serialize(messageList));
}else{
Session s = clients.get(message.getUserId());
if (s != null) {
try {
JSONObject json = (JSONObject)JSONObject.toJSON(message);
String msg = json.toJSONString();
s.getBasicRemote().sendText(msg);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package cn.wise.sc.cement.business.util;
import cn.wise.sc.cement.business.model.FileExt;
import freemarker.template.Configuration;
import freemarker.template.Template;
import lombok.extern.slf4j.Slf4j;
......@@ -45,7 +46,8 @@ public class WordUtil {
String templeName,
String templateFileName,
Map<String, Object> beanParams,
HttpServletResponse response) {
HttpServletResponse response,
FileExt fileExt) {
Writer out = null;
File file = null;
try {
......@@ -74,7 +76,7 @@ public class WordUtil {
response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
response.setContentType("application/octet-stream");
templeName = new String((templeName).getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
response.setHeader("Content-Disposition", "attachment;filename=" + templeName + ".xls");
response.setHeader("Content-Disposition", "attachment;filename=" + templeName + fileExt.getName());
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
......
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Version>16.00</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
<AllowPNG/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>12650</WindowHeight>
<WindowWidth>22260</WindowWidth>
<WindowTopX>32767</WindowTopX>
<WindowTopY>32767</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font ss:FontName="等线" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s63">
<Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
<Font ss:FontName="等线" x:CharSet="134" ss:Size="11" ss:Color="#000000"
ss:Bold="1"/>
</Style>
<Style ss:ID="s64">
<Font ss:FontName="等线" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="8" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="52" ss:DefaultRowHeight="14">
<Column ss:AutoFitWidth="0" ss:Width="116.5"/>
<Column ss:AutoFitWidth="0" ss:Width="117"/>
<Row>
<Cell ss:MergeAcross="1" ss:StyleID="s63"><Data ss:Type="String">中国水泥发展中心物化检测所检测委托单</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">委托单位</Data></Cell>
<Cell ss:StyleID="s64"><Data ss:Type="String">${clientName}</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">委托编号</Data></Cell>
<Cell ss:StyleID="s64"><Data ss:Type="String">${entrustCode}</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">委托人</Data></Cell>
<Cell ss:StyleID="s64"><Data ss:Type="String">${userName}</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">电话</Data></Cell>
<Cell ss:StyleID="s64"><Data ss:Type="String">${userPhone}</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">传真</Data></Cell>
<Cell ss:StyleID="s64"><Data ss:Type="String">${userFax}</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">项目名称</Data></Cell>
<Cell ss:StyleID="s64"><Data ss:Type="String">${projectName}</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">样品数量</Data></Cell>
<Cell ss:StyleID="s64"><Data ss:Type="String">${sampleNum}</Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<Header x:Margin="0.3"/>
<Footer x:Margin="0.3"/>
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
</PageSetup>
<Print>
<ValidPrinterInfo/>
<PaperSizeIndex>9</PaperSizeIndex>
<HorizontalResolution>600</HorizontalResolution>
<VerticalResolution>600</VerticalResolution>
</Print>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>9</ActiveRow>
<ActiveCol>4</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?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:padding="512"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.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/officeDocument" Target="word/document.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:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" 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: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:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" 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" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex wp14"><w:body><w:p w14:paraId="5EF2F4A7" w14:textId="66ACC37B" w:rsidR="00E74DC9" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>中国水泥发展中心物化检测所</w:t></w:r></w:p><w:p w14:paraId="3CD7A115" w14:textId="77777777" w:rsidR="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="00644ADE"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:b/><w:bCs/><w:sz w:val="36"/><w:szCs w:val="36"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:b/><w:bCs/><w:sz w:val="36"/><w:szCs w:val="36"/></w:rPr><w:t>检 测 报 告</w:t></w:r></w:p><w:p w14:paraId="4B2369EB" w14:textId="052CF6DA" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="00644ADE"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:b/><w:bCs/><w:sz w:val="36"/><w:szCs w:val="36"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>报告编号:</w:t></w:r><w:r w:rsidR="00644ADE" w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr><w:t xml:space="preserve"> </w:t></w:r></w:p><w:tbl><w:tblPr><w:tblStyle w:val="a3"/><w:tblW w:w="8222" w:type="dxa"/><w:tblInd w:w="-5" w:type="dxa"/><w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/></w:tblPr><w:tblGrid><w:gridCol w:w="1701"/><w:gridCol w:w="3544"/><w:gridCol w:w="1276"/><w:gridCol w:w="1701"/></w:tblGrid><w:tr w:rsidR="008C003B" w14:paraId="180DD316" w14:textId="77777777" w:rsidTr="00644ADE"><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="22AC0A26" w14:textId="74AB427E" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>送样单位</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3544" w:type="dxa"/></w:tcPr><w:p w14:paraId="3D0E143E" w14:textId="47790230" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${sendName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1276" w:type="dxa"/></w:tcPr><w:p w14:paraId="602B7074" w14:textId="16ADA88C" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>送样人</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="7D85FB7D" w14:textId="46C35F97" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${sender}</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="008C003B" w14:paraId="67723B19" w14:textId="77777777" w:rsidTr="00644ADE"><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="6567C363" w14:textId="00BB8FB1" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>送样日期</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3544" w:type="dxa"/></w:tcPr><w:p w14:paraId="58BFA958" w14:textId="061E7D2F" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${sendDate}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1276" w:type="dxa"/></w:tcPr><w:p w14:paraId="4BD082E3" w14:textId="529AF015" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>样品数量</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="193A2A37" w14:textId="07E9EB00" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${sampleNum}件</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="0729EC86" w14:textId="77777777" w:rsidTr="00644ADE"><w:trPr><w:trHeight w:val="679"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/><w:vAlign w:val="center"/></w:tcPr><w:p w14:paraId="245213FD" w14:textId="40F07E1B" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="00644ADE"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>样品名称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="4C7A3401" w14:textId="2C48EC37" w:rsidR="00644ADE" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="00644ADE"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${sampleNames}</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="766C4BA1" w14:textId="77777777" w:rsidTr="00644ADE"><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="6E638234" w14:textId="1326CFD6" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>检测类别</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="3495EB2F" w14:textId="755A0240" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>委托</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="38F3E835" w14:textId="77777777" w:rsidTr="00644ADE"><w:trPr><w:trHeight w:val="1051"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/><w:vAlign w:val="center"/></w:tcPr><w:p w14:paraId="339E4C5C" w14:textId="68B44A5B" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="00644ADE"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>检测项目</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="5947F7A2" w14:textId="21AFBEE3" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="00644ADE"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${teamNames}</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="22C097DF" w14:textId="77777777" w:rsidTr="00644ADE"><w:trPr><w:trHeight w:val="3817"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/><w:vAlign w:val="center"/></w:tcPr><w:p w14:paraId="001FFCD8" w14:textId="2BF0634E" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="00644ADE"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>检测依据</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="6EF75D3B" w14:textId="06E15D21" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${methodNames}</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="07FA5A77" w14:textId="77777777" w:rsidTr="00644ADE"><w:trPr><w:trHeight w:val="3997"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/><w:vAlign w:val="center"/></w:tcPr><w:p w14:paraId="16679A00" w14:textId="77777777" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>主要仪器设备</w:t></w:r></w:p><w:p w14:paraId="518F0E2B" w14:textId="3EB2D99B" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>(编号</w:t></w:r><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>)</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="2D2F3B15" w14:textId="4946E079" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${equipmentNames}</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="343C9214" w14:textId="77777777" w:rsidTr="00644ADE"><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="2A6D45CC" w14:textId="77653747" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>项目名称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="477A2725" w14:textId="78C2DB56" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${projectName}</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="4FFC33AC" w14:textId="77777777" w:rsidTr="00644ADE"><w:trPr><w:trHeight w:val="121"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="77DDFF4B" w14:textId="2CA14737" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>签发日期</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="6FB6B9A0" w14:textId="79201571" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="00B528BD" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>${printDate}</w:t></w:r></w:p></w:tc></w:tr><w:tr w:rsidR="002D25D3" w14:paraId="0F4A4F82" w14:textId="77777777" w:rsidTr="00644ADE"><w:trPr><w:trHeight w:val="367"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1701" w:type="dxa"/></w:tcPr><w:p w14:paraId="33DED93F" w14:textId="6A36D845" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>备注</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="6521" w:type="dxa"/><w:gridSpan w:val="3"/></w:tcPr><w:p w14:paraId="1D4F8913" w14:textId="0129AC4E" w:rsidR="002D25D3" w:rsidRPr="00644ADE" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr></w:p></w:tc></w:tr></w:tbl><w:tbl><w:tblPr><w:tblW w:w="6908" w:type="dxa"/><w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/></w:tblPr><w:tblGrid><w:gridCol w:w="1636"/><w:gridCol w:w="4036"/><w:gridCol w:w="1236"/></w:tblGrid><w:tr w:rsidR="00644ADE" w:rsidRPr="00644ADE" w14:paraId="6ADDFBD0" w14:textId="77777777" w:rsidTr="00644ADE"><w:trPr><w:trHeight w:val="403"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1636" w:type="dxa"/><w:tcBorders><w:top w:val="nil"/><w:left w:val="nil"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap/><w:vAlign w:val="bottom"/><w:hideMark/></w:tcPr><w:p w14:paraId="27422F36" w14:textId="77777777" w:rsidR="00644ADE" w:rsidRPr="00644ADE" w:rsidRDefault="00644ADE" w:rsidP="00644ADE"><w:pPr><w:widowControl/><w:jc w:val="right"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:cs="宋体" w:hint="eastAsia"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>编制:</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="4036" w:type="dxa"/><w:tcBorders><w:top w:val="nil"/><w:left w:val="nil"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap/><w:vAlign w:val="bottom"/><w:hideMark/></w:tcPr><w:p w14:paraId="3119E224" w14:textId="77777777" w:rsidR="00644ADE" w:rsidRPr="00644ADE" w:rsidRDefault="00644ADE" w:rsidP="00644ADE"><w:pPr><w:widowControl/><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:cs="宋体" w:hint="eastAsia"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:cs="宋体" w:hint="eastAsia"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>审核:</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1236" w:type="dxa"/><w:tcBorders><w:top w:val="nil"/><w:left w:val="nil"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap/><w:vAlign w:val="bottom"/><w:hideMark/></w:tcPr><w:p w14:paraId="49054968" w14:textId="77777777" w:rsidR="00644ADE" w:rsidRPr="00644ADE" w:rsidRDefault="00644ADE" w:rsidP="00644ADE"><w:pPr><w:widowControl/><w:jc w:val="left"/><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:cs="宋体" w:hint="eastAsia"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r w:rsidRPr="00644ADE"><w:rPr><w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:cs="宋体" w:hint="eastAsia"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>批准:</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p w14:paraId="3E2782D1" w14:textId="77777777" w:rsidR="002D25D3" w:rsidRPr="002D25D3" w:rsidRDefault="002D25D3" w:rsidP="002D25D3"><w:pPr><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia"/><w:b/><w:bCs/></w:rPr></w:pPr></w:p><w:sectPr w:rsidR="002D25D3" w:rsidRPr="002D25D3"><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="425"/><w:docGrid w:type="lines" w:linePitch="312"/></w:sectPr></w:body></w:document></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="256"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.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"/><Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/><Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/></Relationships></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="44546A"/></a:dk2><a:lt2><a:srgbClr val="E7E6E6"/></a:lt2><a:accent1><a:srgbClr val="4472C4"/></a:accent1><a:accent2><a:srgbClr val="ED7D31"/></a:accent2><a:accent3><a:srgbClr val="A5A5A5"/></a:accent3><a:accent4><a:srgbClr val="FFC000"/></a:accent4><a:accent5><a:srgbClr val="5B9BD5"/></a:accent5><a:accent6><a:srgbClr val="70AD47"/></a:accent6><a:hlink><a:srgbClr val="0563C1"/></a:hlink><a:folHlink><a:srgbClr val="954F72"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="等线 Light" panose="020F0302020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游ゴシック Light"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="等线 Light"/><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:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></a:majorFont><a:minorFont><a:latin typeface="等线" panose="020F0502020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游明朝"/><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:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></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:lumMod val="110000"/><a:satMod val="105000"/><a:tint val="67000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="103000"/><a:tint val="73000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="109000"/><a:tint val="81000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:satMod val="103000"/><a:lumMod val="102000"/><a:tint val="94000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:satMod val="110000"/><a:lumMod val="100000"/><a:shade val="100000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="99000"/><a:satMod val="120000"/><a:shade val="78000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="63000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:solidFill><a:schemeClr val="phClr"><a:tint val="95000"/><a:satMod val="170000"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="93000"/><a:satMod val="150000"/><a:shade val="98000"/><a:lumMod val="102000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:tint val="98000"/><a:satMod val="130000"/><a:shade val="90000"/><a:lumMod val="103000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="63000"/><a:satMod val="120000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}"><thm15:themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="Office Theme" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{4A3C46E8-61CC-4603-A589-7422A47A8E4A}"/></a:ext></a:extLst></a:theme></pkg:xmlData></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:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex"><w:zoom w:percent="110"/><w:bordersDoNotSurroundHeader/><w:bordersDoNotSurroundFooter/><w:proofState w:spelling="clean" w:grammar="clean"/><w:defaultTabStop w:val="420"/><w:drawingGridVerticalSpacing w:val="156"/><w:displayHorizontalDrawingGridEvery w:val="0"/><w:displayVerticalDrawingGridEvery w:val="2"/><w:characterSpacingControl w:val="compressPunctuation"/><w:compat><w:spaceForUL/><w:balanceSingleByteDoubleByteWidth/><w:doNotLeaveBackslashAlone/><w:ulTrailSpace/><w:doNotExpandShiftReturn/><w:adjustLineHeightInTable/><w:useFELayout/><w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="15"/><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:compatSetting w:name="differentiateMultirowTableHeaders" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/><w:compatSetting w:name="useWord2013TrackBottomHyphenation" w:uri="http://schemas.microsoft.com/office/word" w:val="0"/></w:compat><w:rsids><w:rsidRoot w:val="00A01312"/><w:rsid w:val="00070EC8"/><w:rsid w:val="002D25D3"/><w:rsid w:val="00371A14"/><w:rsid w:val="00644ADE"/><w:rsid w:val="007570C4"/><w:rsid w:val="00767648"/><w:rsid w:val="008C003B"/><w:rsid w:val="008E2AA1"/><w:rsid w:val="00A01312"/><w:rsid w:val="00B528BD"/><w:rsid w:val="00E74DC9"/></w:rsids><m:mathPr><m:mathFont m:val="Cambria Math"/><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 v:ext="edit" spidmax="1026"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults><w:decimalSymbol w:val="."/><w:listSeparator w:val=","/><w14:docId w14:val="71ECAC3C"/><w15:chartTrackingRefBased/><w15:docId w15:val="{42CD0AE4-A76A-451E-A969-6A547C999A20}"/></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: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" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorEastAsia" w:hAnsiTheme="minorHAnsi" w:cstheme="minorBidi"/><w:kern w:val="2"/><w:sz w:val="21"/><w:szCs w:val="22"/><w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/></w:rPr></w:rPrDefault><w:pPrDefault/></w:docDefaults><w:latentStyles w:defLockedState="0" w:defUIPriority="99" w:defSemiHidden="0" w:defUnhideWhenUsed="0" w:defQFormat="0" w:count="376"><w:lsdException w:name="Normal" w:uiPriority="0" w:qFormat="1"/><w:lsdException w:name="heading 1" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 2" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="heading 3" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="heading 4" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="heading 5" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="heading 6" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="heading 7" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="heading 8" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="heading 9" w:semiHidden="1" w:uiPriority="9" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="index 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 6" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 7" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 8" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index 9" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 1" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 2" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 3" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 4" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 5" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 6" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 7" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 8" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="toc 9" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1"/><w:lsdException w:name="Normal Indent" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="footnote text" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="annotation text" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="header" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="footer" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="index heading" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="caption" w:semiHidden="1" w:uiPriority="35" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="table of figures" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="envelope address" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="envelope return" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="footnote reference" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="annotation reference" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="line number" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="page number" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="endnote reference" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="endnote text" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="table of authorities" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="macro" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="toa heading" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Bullet" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Number" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Bullet 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Bullet 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Bullet 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Bullet 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Number 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Number 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Number 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Number 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Title" w:uiPriority="10" w:qFormat="1"/><w:lsdException w:name="Closing" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Signature" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Default Paragraph Font" w:semiHidden="1" w:uiPriority="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text Indent" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Continue" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Continue 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Continue 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Continue 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="List Continue 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Message Header" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Subtitle" w:uiPriority="11" w:qFormat="1"/><w:lsdException w:name="Salutation" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Date" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text First Indent" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text First Indent 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Note Heading" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text Indent 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Body Text Indent 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Block Text" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Hyperlink" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="FollowedHyperlink" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Strong" w:uiPriority="22" w:qFormat="1"/><w:lsdException w:name="Emphasis" w:uiPriority="20" w:qFormat="1"/><w:lsdException w:name="Document Map" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Plain Text" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="E-mail Signature" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Top of Form" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Bottom of Form" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Normal (Web)" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Acronym" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Address" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Cite" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Code" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Definition" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Keyboard" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Preformatted" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Sample" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Typewriter" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="HTML Variable" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Normal Table" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="annotation subject" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="No List" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Outline List 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Outline List 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Outline List 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Simple 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Simple 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Simple 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Classic 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Classic 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Classic 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Classic 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Colorful 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Colorful 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Colorful 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Columns 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Columns 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Columns 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Columns 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Columns 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 6" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 7" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid 8" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 4" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 5" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 6" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 7" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table List 8" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table 3D effects 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table 3D effects 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table 3D effects 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Contemporary" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Elegant" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Professional" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Subtle 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Subtle 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Web 1" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Web 2" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Web 3" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Balloon Text" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Table Grid" w:uiPriority="39"/><w:lsdException w:name="Table Theme" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Placeholder Text" w:semiHidden="1"/><w:lsdException w:name="No Spacing" w:uiPriority="1" w:qFormat="1"/><w:lsdException w:name="Light Shading" w:uiPriority="60"/><w:lsdException w:name="Light List" w:uiPriority="61"/><w:lsdException w:name="Light Grid" w:uiPriority="62"/><w:lsdException w:name="Medium Shading 1" w:uiPriority="63"/><w:lsdException w:name="Medium Shading 2" w:uiPriority="64"/><w:lsdException w:name="Medium List 1" w:uiPriority="65"/><w:lsdException w:name="Medium List 2" w:uiPriority="66"/><w:lsdException w:name="Medium Grid 1" w:uiPriority="67"/><w:lsdException w:name="Medium Grid 2" w:uiPriority="68"/><w:lsdException w:name="Medium Grid 3" w:uiPriority="69"/><w:lsdException w:name="Dark List" w:uiPriority="70"/><w:lsdException w:name="Colorful Shading" w:uiPriority="71"/><w:lsdException w:name="Colorful List" w:uiPriority="72"/><w:lsdException w:name="Colorful Grid" w:uiPriority="73"/><w:lsdException w:name="Light Shading Accent 1" w:uiPriority="60"/><w:lsdException w:name="Light List Accent 1" w:uiPriority="61"/><w:lsdException w:name="Light Grid Accent 1" w:uiPriority="62"/><w:lsdException w:name="Medium Shading 1 Accent 1" w:uiPriority="63"/><w:lsdException w:name="Medium Shading 2 Accent 1" w:uiPriority="64"/><w:lsdException w:name="Medium List 1 Accent 1" w:uiPriority="65"/><w:lsdException w:name="Revision" w:semiHidden="1"/><w:lsdException w:name="List Paragraph" w:uiPriority="34" w:qFormat="1"/><w:lsdException w:name="Quote" w:uiPriority="29" w:qFormat="1"/><w:lsdException w:name="Intense Quote" w:uiPriority="30" w:qFormat="1"/><w:lsdException w:name="Medium List 2 Accent 1" w:uiPriority="66"/><w:lsdException w:name="Medium Grid 1 Accent 1" w:uiPriority="67"/><w:lsdException w:name="Medium Grid 2 Accent 1" w:uiPriority="68"/><w:lsdException w:name="Medium Grid 3 Accent 1" w:uiPriority="69"/><w:lsdException w:name="Dark List Accent 1" w:uiPriority="70"/><w:lsdException w:name="Colorful Shading Accent 1" w:uiPriority="71"/><w:lsdException w:name="Colorful List Accent 1" w:uiPriority="72"/><w:lsdException w:name="Colorful Grid Accent 1" w:uiPriority="73"/><w:lsdException w:name="Light Shading Accent 2" w:uiPriority="60"/><w:lsdException w:name="Light List Accent 2" w:uiPriority="61"/><w:lsdException w:name="Light Grid Accent 2" w:uiPriority="62"/><w:lsdException w:name="Medium Shading 1 Accent 2" w:uiPriority="63"/><w:lsdException w:name="Medium Shading 2 Accent 2" w:uiPriority="64"/><w:lsdException w:name="Medium List 1 Accent 2" w:uiPriority="65"/><w:lsdException w:name="Medium List 2 Accent 2" w:uiPriority="66"/><w:lsdException w:name="Medium Grid 1 Accent 2" w:uiPriority="67"/><w:lsdException w:name="Medium Grid 2 Accent 2" w:uiPriority="68"/><w:lsdException w:name="Medium Grid 3 Accent 2" w:uiPriority="69"/><w:lsdException w:name="Dark List Accent 2" w:uiPriority="70"/><w:lsdException w:name="Colorful Shading Accent 2" w:uiPriority="71"/><w:lsdException w:name="Colorful List Accent 2" w:uiPriority="72"/><w:lsdException w:name="Colorful Grid Accent 2" w:uiPriority="73"/><w:lsdException w:name="Light Shading Accent 3" w:uiPriority="60"/><w:lsdException w:name="Light List Accent 3" w:uiPriority="61"/><w:lsdException w:name="Light Grid Accent 3" w:uiPriority="62"/><w:lsdException w:name="Medium Shading 1 Accent 3" w:uiPriority="63"/><w:lsdException w:name="Medium Shading 2 Accent 3" w:uiPriority="64"/><w:lsdException w:name="Medium List 1 Accent 3" w:uiPriority="65"/><w:lsdException w:name="Medium List 2 Accent 3" w:uiPriority="66"/><w:lsdException w:name="Medium Grid 1 Accent 3" w:uiPriority="67"/><w:lsdException w:name="Medium Grid 2 Accent 3" w:uiPriority="68"/><w:lsdException w:name="Medium Grid 3 Accent 3" w:uiPriority="69"/><w:lsdException w:name="Dark List Accent 3" w:uiPriority="70"/><w:lsdException w:name="Colorful Shading Accent 3" w:uiPriority="71"/><w:lsdException w:name="Colorful List Accent 3" w:uiPriority="72"/><w:lsdException w:name="Colorful Grid Accent 3" w:uiPriority="73"/><w:lsdException w:name="Light Shading Accent 4" w:uiPriority="60"/><w:lsdException w:name="Light List Accent 4" w:uiPriority="61"/><w:lsdException w:name="Light Grid Accent 4" w:uiPriority="62"/><w:lsdException w:name="Medium Shading 1 Accent 4" w:uiPriority="63"/><w:lsdException w:name="Medium Shading 2 Accent 4" w:uiPriority="64"/><w:lsdException w:name="Medium List 1 Accent 4" w:uiPriority="65"/><w:lsdException w:name="Medium List 2 Accent 4" w:uiPriority="66"/><w:lsdException w:name="Medium Grid 1 Accent 4" w:uiPriority="67"/><w:lsdException w:name="Medium Grid 2 Accent 4" w:uiPriority="68"/><w:lsdException w:name="Medium Grid 3 Accent 4" w:uiPriority="69"/><w:lsdException w:name="Dark List Accent 4" w:uiPriority="70"/><w:lsdException w:name="Colorful Shading Accent 4" w:uiPriority="71"/><w:lsdException w:name="Colorful List Accent 4" w:uiPriority="72"/><w:lsdException w:name="Colorful Grid Accent 4" w:uiPriority="73"/><w:lsdException w:name="Light Shading Accent 5" w:uiPriority="60"/><w:lsdException w:name="Light List Accent 5" w:uiPriority="61"/><w:lsdException w:name="Light Grid Accent 5" w:uiPriority="62"/><w:lsdException w:name="Medium Shading 1 Accent 5" w:uiPriority="63"/><w:lsdException w:name="Medium Shading 2 Accent 5" w:uiPriority="64"/><w:lsdException w:name="Medium List 1 Accent 5" w:uiPriority="65"/><w:lsdException w:name="Medium List 2 Accent 5" w:uiPriority="66"/><w:lsdException w:name="Medium Grid 1 Accent 5" w:uiPriority="67"/><w:lsdException w:name="Medium Grid 2 Accent 5" w:uiPriority="68"/><w:lsdException w:name="Medium Grid 3 Accent 5" w:uiPriority="69"/><w:lsdException w:name="Dark List Accent 5" w:uiPriority="70"/><w:lsdException w:name="Colorful Shading Accent 5" w:uiPriority="71"/><w:lsdException w:name="Colorful List Accent 5" w:uiPriority="72"/><w:lsdException w:name="Colorful Grid Accent 5" w:uiPriority="73"/><w:lsdException w:name="Light Shading Accent 6" w:uiPriority="60"/><w:lsdException w:name="Light List Accent 6" w:uiPriority="61"/><w:lsdException w:name="Light Grid Accent 6" w:uiPriority="62"/><w:lsdException w:name="Medium Shading 1 Accent 6" w:uiPriority="63"/><w:lsdException w:name="Medium Shading 2 Accent 6" w:uiPriority="64"/><w:lsdException w:name="Medium List 1 Accent 6" w:uiPriority="65"/><w:lsdException w:name="Medium List 2 Accent 6" w:uiPriority="66"/><w:lsdException w:name="Medium Grid 1 Accent 6" w:uiPriority="67"/><w:lsdException w:name="Medium Grid 2 Accent 6" w:uiPriority="68"/><w:lsdException w:name="Medium Grid 3 Accent 6" w:uiPriority="69"/><w:lsdException w:name="Dark List Accent 6" w:uiPriority="70"/><w:lsdException w:name="Colorful Shading Accent 6" w:uiPriority="71"/><w:lsdException w:name="Colorful List Accent 6" w:uiPriority="72"/><w:lsdException w:name="Colorful Grid Accent 6" w:uiPriority="73"/><w:lsdException w:name="Subtle Emphasis" w:uiPriority="19" w:qFormat="1"/><w:lsdException w:name="Intense Emphasis" w:uiPriority="21" w:qFormat="1"/><w:lsdException w:name="Subtle Reference" w:uiPriority="31" w:qFormat="1"/><w:lsdException w:name="Intense Reference" w:uiPriority="32" w:qFormat="1"/><w:lsdException w:name="Book Title" w:uiPriority="33" w:qFormat="1"/><w:lsdException w:name="Bibliography" w:semiHidden="1" w:uiPriority="37" w:unhideWhenUsed="1"/><w:lsdException w:name="TOC Heading" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1" w:qFormat="1"/><w:lsdException w:name="Plain Table 1" w:uiPriority="41"/><w:lsdException w:name="Plain Table 2" w:uiPriority="42"/><w:lsdException w:name="Plain Table 3" w:uiPriority="43"/><w:lsdException w:name="Plain Table 4" w:uiPriority="44"/><w:lsdException w:name="Plain Table 5" w:uiPriority="45"/><w:lsdException w:name="Grid Table Light" w:uiPriority="40"/><w:lsdException w:name="Grid Table 1 Light" w:uiPriority="46"/><w:lsdException w:name="Grid Table 2" w:uiPriority="47"/><w:lsdException w:name="Grid Table 3" w:uiPriority="48"/><w:lsdException w:name="Grid Table 4" w:uiPriority="49"/><w:lsdException w:name="Grid Table 5 Dark" w:uiPriority="50"/><w:lsdException w:name="Grid Table 6 Colorful" w:uiPriority="51"/><w:lsdException w:name="Grid Table 7 Colorful" w:uiPriority="52"/><w:lsdException w:name="Grid Table 1 Light Accent 1" w:uiPriority="46"/><w:lsdException w:name="Grid Table 2 Accent 1" w:uiPriority="47"/><w:lsdException w:name="Grid Table 3 Accent 1" w:uiPriority="48"/><w:lsdException w:name="Grid Table 4 Accent 1" w:uiPriority="49"/><w:lsdException w:name="Grid Table 5 Dark Accent 1" w:uiPriority="50"/><w:lsdException w:name="Grid Table 6 Colorful Accent 1" w:uiPriority="51"/><w:lsdException w:name="Grid Table 7 Colorful Accent 1" w:uiPriority="52"/><w:lsdException w:name="Grid Table 1 Light Accent 2" w:uiPriority="46"/><w:lsdException w:name="Grid Table 2 Accent 2" w:uiPriority="47"/><w:lsdException w:name="Grid Table 3 Accent 2" w:uiPriority="48"/><w:lsdException w:name="Grid Table 4 Accent 2" w:uiPriority="49"/><w:lsdException w:name="Grid Table 5 Dark Accent 2" w:uiPriority="50"/><w:lsdException w:name="Grid Table 6 Colorful Accent 2" w:uiPriority="51"/><w:lsdException w:name="Grid Table 7 Colorful Accent 2" w:uiPriority="52"/><w:lsdException w:name="Grid Table 1 Light Accent 3" w:uiPriority="46"/><w:lsdException w:name="Grid Table 2 Accent 3" w:uiPriority="47"/><w:lsdException w:name="Grid Table 3 Accent 3" w:uiPriority="48"/><w:lsdException w:name="Grid Table 4 Accent 3" w:uiPriority="49"/><w:lsdException w:name="Grid Table 5 Dark Accent 3" w:uiPriority="50"/><w:lsdException w:name="Grid Table 6 Colorful Accent 3" w:uiPriority="51"/><w:lsdException w:name="Grid Table 7 Colorful Accent 3" w:uiPriority="52"/><w:lsdException w:name="Grid Table 1 Light Accent 4" w:uiPriority="46"/><w:lsdException w:name="Grid Table 2 Accent 4" w:uiPriority="47"/><w:lsdException w:name="Grid Table 3 Accent 4" w:uiPriority="48"/><w:lsdException w:name="Grid Table 4 Accent 4" w:uiPriority="49"/><w:lsdException w:name="Grid Table 5 Dark Accent 4" w:uiPriority="50"/><w:lsdException w:name="Grid Table 6 Colorful Accent 4" w:uiPriority="51"/><w:lsdException w:name="Grid Table 7 Colorful Accent 4" w:uiPriority="52"/><w:lsdException w:name="Grid Table 1 Light Accent 5" w:uiPriority="46"/><w:lsdException w:name="Grid Table 2 Accent 5" w:uiPriority="47"/><w:lsdException w:name="Grid Table 3 Accent 5" w:uiPriority="48"/><w:lsdException w:name="Grid Table 4 Accent 5" w:uiPriority="49"/><w:lsdException w:name="Grid Table 5 Dark Accent 5" w:uiPriority="50"/><w:lsdException w:name="Grid Table 6 Colorful Accent 5" w:uiPriority="51"/><w:lsdException w:name="Grid Table 7 Colorful Accent 5" w:uiPriority="52"/><w:lsdException w:name="Grid Table 1 Light Accent 6" w:uiPriority="46"/><w:lsdException w:name="Grid Table 2 Accent 6" w:uiPriority="47"/><w:lsdException w:name="Grid Table 3 Accent 6" w:uiPriority="48"/><w:lsdException w:name="Grid Table 4 Accent 6" w:uiPriority="49"/><w:lsdException w:name="Grid Table 5 Dark Accent 6" w:uiPriority="50"/><w:lsdException w:name="Grid Table 6 Colorful Accent 6" w:uiPriority="51"/><w:lsdException w:name="Grid Table 7 Colorful Accent 6" w:uiPriority="52"/><w:lsdException w:name="List Table 1 Light" w:uiPriority="46"/><w:lsdException w:name="List Table 2" w:uiPriority="47"/><w:lsdException w:name="List Table 3" w:uiPriority="48"/><w:lsdException w:name="List Table 4" w:uiPriority="49"/><w:lsdException w:name="List Table 5 Dark" w:uiPriority="50"/><w:lsdException w:name="List Table 6 Colorful" w:uiPriority="51"/><w:lsdException w:name="List Table 7 Colorful" w:uiPriority="52"/><w:lsdException w:name="List Table 1 Light Accent 1" w:uiPriority="46"/><w:lsdException w:name="List Table 2 Accent 1" w:uiPriority="47"/><w:lsdException w:name="List Table 3 Accent 1" w:uiPriority="48"/><w:lsdException w:name="List Table 4 Accent 1" w:uiPriority="49"/><w:lsdException w:name="List Table 5 Dark Accent 1" w:uiPriority="50"/><w:lsdException w:name="List Table 6 Colorful Accent 1" w:uiPriority="51"/><w:lsdException w:name="List Table 7 Colorful Accent 1" w:uiPriority="52"/><w:lsdException w:name="List Table 1 Light Accent 2" w:uiPriority="46"/><w:lsdException w:name="List Table 2 Accent 2" w:uiPriority="47"/><w:lsdException w:name="List Table 3 Accent 2" w:uiPriority="48"/><w:lsdException w:name="List Table 4 Accent 2" w:uiPriority="49"/><w:lsdException w:name="List Table 5 Dark Accent 2" w:uiPriority="50"/><w:lsdException w:name="List Table 6 Colorful Accent 2" w:uiPriority="51"/><w:lsdException w:name="List Table 7 Colorful Accent 2" w:uiPriority="52"/><w:lsdException w:name="List Table 1 Light Accent 3" w:uiPriority="46"/><w:lsdException w:name="List Table 2 Accent 3" w:uiPriority="47"/><w:lsdException w:name="List Table 3 Accent 3" w:uiPriority="48"/><w:lsdException w:name="List Table 4 Accent 3" w:uiPriority="49"/><w:lsdException w:name="List Table 5 Dark Accent 3" w:uiPriority="50"/><w:lsdException w:name="List Table 6 Colorful Accent 3" w:uiPriority="51"/><w:lsdException w:name="List Table 7 Colorful Accent 3" w:uiPriority="52"/><w:lsdException w:name="List Table 1 Light Accent 4" w:uiPriority="46"/><w:lsdException w:name="List Table 2 Accent 4" w:uiPriority="47"/><w:lsdException w:name="List Table 3 Accent 4" w:uiPriority="48"/><w:lsdException w:name="List Table 4 Accent 4" w:uiPriority="49"/><w:lsdException w:name="List Table 5 Dark Accent 4" w:uiPriority="50"/><w:lsdException w:name="List Table 6 Colorful Accent 4" w:uiPriority="51"/><w:lsdException w:name="List Table 7 Colorful Accent 4" w:uiPriority="52"/><w:lsdException w:name="List Table 1 Light Accent 5" w:uiPriority="46"/><w:lsdException w:name="List Table 2 Accent 5" w:uiPriority="47"/><w:lsdException w:name="List Table 3 Accent 5" w:uiPriority="48"/><w:lsdException w:name="List Table 4 Accent 5" w:uiPriority="49"/><w:lsdException w:name="List Table 5 Dark Accent 5" w:uiPriority="50"/><w:lsdException w:name="List Table 6 Colorful Accent 5" w:uiPriority="51"/><w:lsdException w:name="List Table 7 Colorful Accent 5" w:uiPriority="52"/><w:lsdException w:name="List Table 1 Light Accent 6" w:uiPriority="46"/><w:lsdException w:name="List Table 2 Accent 6" w:uiPriority="47"/><w:lsdException w:name="List Table 3 Accent 6" w:uiPriority="48"/><w:lsdException w:name="List Table 4 Accent 6" w:uiPriority="49"/><w:lsdException w:name="List Table 5 Dark Accent 6" w:uiPriority="50"/><w:lsdException w:name="List Table 6 Colorful Accent 6" w:uiPriority="51"/><w:lsdException w:name="List Table 7 Colorful Accent 6" w:uiPriority="52"/><w:lsdException w:name="Mention" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Smart Hyperlink" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Hashtag" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Unresolved Mention" w:semiHidden="1" w:unhideWhenUsed="1"/><w:lsdException w:name="Smart Link" w:semiHidden="1" w:unhideWhenUsed="1"/></w:latentStyles><w:style w:type="paragraph" w:default="1" w:styleId="a"><w:name w:val="Normal"/><w:qFormat/><w:pPr><w:widowControl w:val="0"/><w:jc w:val="both"/></w:pPr></w:style><w:style w:type="paragraph" w:styleId="1"><w:name w:val="heading 1"/><w:basedOn w:val="a"/><w:next w:val="a"/><w:link w:val="10"/><w:uiPriority w:val="9"/><w:qFormat/><w:rsid w:val="00644ADE"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before="340" w:after="330" w:line="578" w:lineRule="auto"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:b/><w:bCs/><w:kern w:val="44"/><w:sz w:val="44"/><w:szCs w:val="44"/></w:rPr></w:style><w:style w:type="character" w:default="1" w:styleId="a0"><w:name w:val="Default Paragraph Font"/><w:uiPriority w:val="1"/><w:semiHidden/><w:unhideWhenUsed/></w:style><w:style w:type="table" w:default="1" w:styleId="a1"><w:name w:val="Normal Table"/><w:uiPriority w:val="99"/><w:semiHidden/><w:unhideWhenUsed/><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><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="numbering" w:default="1" w:styleId="a2"><w:name w:val="No List"/><w:uiPriority w:val="99"/><w:semiHidden/><w:unhideWhenUsed/></w:style><w:style w:type="table" w:styleId="a3"><w:name w:val="Table Grid"/><w:basedOn w:val="a1"/><w:uiPriority w:val="39"/><w:rsid w:val="002D25D3"/><w:tblPr><w:tblBorders><w:top w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" w:space="0" w:color="auto"/></w:tblBorders></w:tblPr></w:style><w:style w:type="paragraph" w:styleId="a4"><w:name w:val="No Spacing"/><w:uiPriority w:val="1"/><w:qFormat/><w:rsid w:val="00644ADE"/><w:pPr><w:widowControl w:val="0"/><w:jc w:val="both"/></w:pPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="10"><w:name w:val="标题 1 字符"/><w:basedOn w:val="a0"/><w:link w:val="1"/><w:uiPriority w:val="9"/><w:rsid w:val="00644ADE"/><w:rPr><w:b/><w:bCs/><w:kern w:val="44"/><w:sz w:val="44"/><w:szCs w:val="44"/></w:rPr></w:style></w:styles></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/webSettings.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"><pkg:xmlData><w:webSettings 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" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex"><w:divs><w:div w:id="258485310"><w:bodyDiv w:val="1"/><w:marLeft w:val="0"/><w:marRight w:val="0"/><w:marTop w:val="0"/><w:marBottom w:val="0"/><w:divBdr><w:top w:val="none" w:sz="0" w:space="0" w:color="auto"/><w:left w:val="none" w:sz="0" w:space="0" w:color="auto"/><w:bottom w:val="none" w:sz="0" w:space="0" w:color="auto"/><w:right w:val="none" w:sz="0" w:space="0" w:color="auto"/></w:divBdr></w:div><w:div w:id="1379739808"><w:bodyDiv w:val="1"/><w:marLeft w:val="0"/><w:marRight w:val="0"/><w:marTop w:val="0"/><w:marBottom w:val="0"/><w:divBdr><w:top w:val="none" w:sz="0" w:space="0" w:color="auto"/><w:left w:val="none" w:sz="0" w:space="0" w:color="auto"/><w:bottom w:val="none" w:sz="0" w:space="0" w:color="auto"/><w:right w:val="none" w:sz="0" w:space="0" w:color="auto"/></w:divBdr></w:div></w:divs><w:optimizeForBrowser/><w:allowPNG/></w:webSettings></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" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex"><w:font w:name="等线"><w:altName w:val="DengXian"/><w:panose1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="variable"/><w:sig w:usb0="A00002BF" w:usb1="38CF7CFA" w:usb2="00000016" w:usb3="00000000" w:csb0="0004000F" w:csb1="00000000"/></w:font><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="E0002EFF" w:usb1="C000785B" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/></w:font><w:font w:name="宋体"><w:altName w:val="SimSun"/><w:panose1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="variable"/><w:sig w:usb0="00000003" w:usb1="288F0000" w:usb2="00000016" w:usb3="00000000" w:csb0="00040001" w:csb1="00000000"/></w:font><w:font w:name="等线 Light"><w:panose1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="variable"/><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="/docProps/core.xml" pkg:contentType="application/vnd.openxmlformats-package.core-properties+xml" pkg:padding="256"><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"><dc:title/><dc:subject/><dc:creator>tiger</dc:creator><cp:keywords/><dc:description/><cp:lastModifiedBy>tiger</cp:lastModifiedBy><cp:revision>2</cp:revision><dcterms:created xsi:type="dcterms:W3CDTF">2020-10-10T07:07:00Z</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF">2020-10-10T07:07:00Z</dcterms:modified></cp:coreProperties></pkg:xmlData></pkg:part><pkg:part pkg:name="/docProps/app.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" pkg:padding="256"><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><TotalTime>6</TotalTime><Pages>1</Pages><Words>22</Words><Characters>130</Characters><Application>Microsoft Office Word</Application><DocSecurity>0</DocSecurity><Lines>1</Lines><Paragraphs>1</Paragraphs><ScaleCrop>false</ScaleCrop><Company/><LinksUpToDate>false</LinksUpToDate><CharactersWithSpaces>151</CharactersWithSpaces><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>16.0000</AppVersion></Properties></pkg:xmlData></pkg:part></pkg:package>
\ No newline at end of file
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