package com.zt.life.modules.project.service; import cn.hutool.core.convert.Convert; import com.zt.common.service.BaseService; import com.zt.common.utils.CommonUtils; import com.zt.core.context.User; import com.zt.core.context.UserContext; import com.zt.core.sys.dto.DictDto; import com.zt.core.sys.dto.DictItemDto; import com.zt.core.sys.dto.DictLeafDto; import com.zt.life.export.dto.WordFile; import com.zt.life.modules.mainPart.utils.GetShowDictList; import com.zt.life.export.service.WordFileService; import com.zt.life.modules.project.dao.SoftwareTestOrderDao; import com.zt.life.modules.project.dto.SoftwareTestOrderDto; import com.zt.life.modules.project.model.Project; import com.zt.life.modules.project.model.SoftwareTestOrder; import com.zt.life.modules.project.model.SoftwareTestOrderDeliverable; import com.zt.life.modules.project.model.SoftwareTestOrderMeasured; import com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent; import com.zt.life.modules.sysBaseInfo.service.TestAgencyInfoService; import com.zt.life.sys.service.SysOssConfigService; import com.zt.modules.coderule.service.SysCodeRuleService; import com.zt.modules.oss.service.SysOssService; import com.zt.modules.sys.service.SysDictTypeService; import org.apache.tomcat.util.bcel.classfile.Constant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zt.common.db.query.QueryFilter; import javax.naming.Context; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileNotFoundException; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; /** * software_test_order * * @author zt generator * @since 1.0.0 2023-11-08 */ @Service public class SoftwareTestOrderService extends BaseService { @Autowired private ProjectService projectService; @Autowired private SoftwareTestOrderDeliverableService softwareTestOrderDeliverableService; @Autowired private SoftwareTestOrderMeasuredService softwareTestOrderMeasuredService; @Autowired private TestAgencyInfoService testAgencyInfoService; @Autowired private SysCodeRuleService sysCodeRuleService; @Autowired private SysDictTypeService sysDictTypeService; @Autowired private WordFileService wordFileService; @Autowired private GetShowDictList getShowDictList; @Autowired private SysOssConfigService sysOssConfigService; @Autowired private SysOssService sysOssService; /** * 分页查询 * * @param queryFilter * @return */ public List page(QueryFilter queryFilter) { User user = UserContext.getUser(); Integer secretClass = user.getSecretClass(); Long deptId = user.getDeptId(); queryFilter.getQueryParams().put("secretClass",secretClass); queryFilter.getQueryParams().put("deptId",deptId); List list = baseDao.getList(queryFilter.getQueryParams()); if (list != null && list.size() > 0) { sysOssService.setListOsses(list, "test_order"); } return list; } public String selectOrderId(Long projectId) { return baseDao.selectOrderId(projectId); } /** * 删除 * * @param ids */ public void delete(Long[] ids) { super.deleteLogic(ids); } public Boolean save(SoftwareTestOrderDto softwareTestOrderDto) { Long softwareTestOrderId = softwareTestOrderDto.getSoftwareTestOrder().getId(); if (softwareTestOrderId != null) baseDao.updateById(softwareTestOrderDto.getSoftwareTestOrder()); else { Map map = new HashMap<>(); map.put("funCode", "software_test_order"); map.put("projectId",softwareTestOrderDto.getProjectId().toString()); /* DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); softwareTestOrderDto.getSoftwareTestOrder().getEntrustSignDate();*/ softwareTestOrderDto.getSoftwareTestOrder().setProjectId(softwareTestOrderDto.getProjectId()); softwareTestOrderDto.getSoftwareTestOrder().setCode(sysCodeRuleService.getNewCode(map)); baseDao.insert(softwareTestOrderDto.getSoftwareTestOrder()); softwareTestOrderId = softwareTestOrderDto.getSoftwareTestOrder().getId(); } for (SoftwareTestOrderMeasured softwareTestOrderMeasured : softwareTestOrderDto.getMeasuredList()) { softwareTestOrderMeasured.setOrderId(softwareTestOrderId); if (softwareTestOrderMeasured.getId() != null) { SoftwareTestOrderMeasured Measured = softwareTestOrderMeasuredService.get(softwareTestOrderMeasured.getId()); if (CommonUtils.isActureChangeData(softwareTestOrderMeasured,Measured)) { softwareTestOrderMeasuredService.update(softwareTestOrderMeasured); } } else { softwareTestOrderMeasured.setOrderId(softwareTestOrderId); softwareTestOrderMeasuredService.insert(softwareTestOrderMeasured); } } for (SoftwareTestOrderDeliverable softwareTestOrderDeliverable : softwareTestOrderDto.getDeliverableList()) { softwareTestOrderDeliverable.setOrderId(softwareTestOrderId); if (softwareTestOrderDeliverable.getId() != null) { softwareTestOrderDeliverableService.update(softwareTestOrderDeliverable); } else { softwareTestOrderDeliverable.setOrderId(softwareTestOrderId); softwareTestOrderDeliverableService.insert(softwareTestOrderDeliverable); } } if (softwareTestOrderDto.getTestAgencyInfo().getId() == 10000) { softwareTestOrderDto.getTestAgencyInfo().setId(softwareTestOrderId); testAgencyInfoService.insert(softwareTestOrderDto.getTestAgencyInfo()); } else { testAgencyInfoService.update(softwareTestOrderDto.getTestAgencyInfo()); } sysOssConfigService.updateOss(softwareTestOrderDto.getId(), softwareTestOrderDto.getFiles());// 保存附件 return true; } public SoftwareTestOrderDto getDto(Long projectId, Long orderId) { SoftwareTestOrderDto data = new SoftwareTestOrderDto(); if (orderId != null) { data.setId(orderId); SoftwareTestOrder softwareTestOrder = this.get(orderId); data.setSoftwareTestOrder(softwareTestOrder); projectId = softwareTestOrder.getProjectId(); data.setTestAgencyInfo(testAgencyInfoService.get(orderId)); List deliverableList = softwareTestOrderDeliverableService.getList(orderId); data.setDeliverableList(deliverableList); List measuredList = softwareTestOrderMeasuredService.getList(orderId); data.setMeasuredList(measuredList); } else { Project project = projectService.get(projectId); String projectCode = project.getCode(); String softIdentity =project.getSoftwareIdentity(); List testItemResult = baseDao.dictList("testItem_type", projectCode,softIdentity); data.setMeasuredList((List) testItemResult); List productLibraryResult = baseDao.dictList("product_library_file", projectCode,null); data.setDeliverableList((List) productLibraryResult); } if (projectId != null) { data.setProjectId(projectId); data.setProject(projectService.get(projectId)); } if (data.getTestAgencyInfo() == null) data.setTestAgencyInfo(testAgencyInfoService.get(10000L)); return data; } public void exportWord(Long id, HttpServletRequest request, HttpServletResponse response) { try { SoftwareTestOrderDto dataObj = this.getDto(null, id); //特殊列表生成 List userDicts = sysDictTypeService.getUserDicts(); DictDto testType1Dict = userDicts.stream() .filter(c -> c.getDictType().equals("test_type1")) .collect(Collectors.toList()).get(0); List> testType11 = new ArrayList<>(); List> testType12 = new ArrayList<>(); List> testType21 = new ArrayList<>(); List> testType22 = new ArrayList<>(); int i = 0; String testType = "," + dataObj.getSoftwareTestOrder().getTestType1() + ","; for (DictItemDto dictItemDto : ((DictLeafDto) testType1Dict).getDataList()) { String value = dictItemDto.getDictValue(); String desc = (testType.contains("," + value + ",") ? "☑" : "□") + dictItemDto.getDictLabel(); HashMap stateItem = new HashMap<>(); stateItem.put("item", desc); if ((i++) % 2 == 0) { testType12.add(stateItem); } else { testType11.add(stateItem); } } i = 0; testType = "," + dataObj.getSoftwareTestOrder().getTestType2() + ","; for (DictItemDto dictItemDto : ((DictLeafDto) testType1Dict).getDataList()) { String value = dictItemDto.getDictValue(); String desc = (testType.contains("," + value + ",") ? "☑" : "□") + dictItemDto.getDictLabel(); HashMap stateItem = new HashMap<>(); stateItem.put("item", desc); if ((i++) % 2 == 0) { testType22.add(stateItem); } else { testType21.add(stateItem); } } dataObj.getSoftwareTestOrder().setTestType11(testType11); dataObj.getSoftwareTestOrder().setTestType12(testType12); dataObj.getSoftwareTestOrder().setTestType21(testType21); dataObj.getSoftwareTestOrder().setTestType22(testType22); //通用字典列表字符串生成 String criticalLevelStr = getShowDictList.getShowDictList(dataObj.getProject().getCriticalLevel(), "critical_level", false); dataObj.getSoftwareTestOrder().setCriticalLevelStr(criticalLevelStr); for (SoftwareTestOrderMeasured measured : dataObj.getMeasuredList()) { String value = measured.getIsMeasured(); String isMeasuredStr = getShowDictList.getShowDictList(value, "is_or_not", false); measured.setIsMeasuredStr(isMeasuredStr); } String secretClass = getShowDictList.getShowDictList(dataObj.getProject().getSecretClass(), "secret_class", false); dataObj.getSoftwareTestOrder().setSecretClassStr(secretClass); String sortwareTypeStr = getShowDictList.getShowDictList(dataObj.getProject().getSoftwareType(), "software_type", false); dataObj.getSoftwareTestOrder().setSortwareTypeStr(sortwareTypeStr); String testBasisStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestBasis(), "test_basis", true); dataObj.getSoftwareTestOrder().setTestBasisStr(testBasisStr); String testStandardStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestStandard(), "test_standard", true); dataObj.getSoftwareTestOrder().setTestStandardStr(testStandardStr); String testLevelStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestLevel(), "test_level", false); dataObj.getSoftwareTestOrder().setTestLevelStr(testLevelStr); String test = dataObj.getSoftwareTestOrder().getOtherRequire(); String otherRequireStr = getShowDictList.getShowDictList(test, "is_or_not", false); dataObj.getSoftwareTestOrder().setOtherRequireStr(otherRequireStr); String articleNatureStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getArticleNature(), "article_nature", false); dataObj.getSoftwareTestOrder().setArticleNatureStr(articleNatureStr); String sampleStatusStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getSampleStatus(), "is_or_not", false); dataObj.getSoftwareTestOrder().setSampleStatusStr(sampleStatusStr); WordFile wordFile = new WordFile(); wordFile.setModulePath("测试委托单.docx"); wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_测试委托单.docx"); wordFileService.exportWordFile(request, dataObj, wordFile, response); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }