package com.zt.life.modules.project.service;
|
|
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.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.zt.common.db.query.QueryFilter;
|
|
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<SoftwareTestOrderDao, SoftwareTestOrder> {
|
@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<SoftwareTestOrder> page(QueryFilter queryFilter) {
|
User user = UserContext.getUser();
|
Integer secretClass = user.getSecretClass();
|
queryFilter.getQueryParams().put("secretClass",secretClass);
|
List<SoftwareTestOrder> 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<String, String> 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<SoftwareTestOrderDeliverable> deliverableList = softwareTestOrderDeliverableService.getList(orderId);
|
data.setDeliverableList(deliverableList);
|
|
List<SoftwareTestOrderMeasured> 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);
|
List<?> measuredList = testItemResult;
|
data.setMeasuredList((List<SoftwareTestOrderMeasured>) measuredList);
|
|
List<?> productLibraryResult = baseDao.dictList("product_library_file", projectCode,null);
|
List<?> deliverableList = productLibraryResult;
|
data.setDeliverableList((List<SoftwareTestOrderDeliverable>) deliverableList);
|
}
|
|
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<DictDto> userDicts = sysDictTypeService.getUserDicts();
|
DictDto testType1Dict = userDicts.stream()
|
.filter(c -> c.getDictType().equals("test_type1"))
|
.collect(Collectors.toList()).get(0);
|
|
List<HashMap<String, Object>> testType11 = new ArrayList<>();
|
List<HashMap<String, Object>> testType12 = new ArrayList<>();
|
List<HashMap<String, Object>> testType21 = new ArrayList<>();
|
List<HashMap<String, Object>> 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<String, Object> 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<String, Object> 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 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();
|
}
|
}
|
}
|