jinlin
2023-11-16 6af5b3def3f511a19c7ccff6f223ef239b178d48
modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java
@@ -1,22 +1,62 @@
package com.zt.life.modules.project.service;
import com.zt.common.service.BaseService;
import com.zt.common.utils.CommonUtils;
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.sysBaseInfo.service.TestAgencyInfoService;
import com.zt.modules.coderule.service.SysCodeRuleService;
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.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * software_test_order
 *
 * @author zt generator
 * @author zt generator
 * @since 1.0.0 2023-11-08
 */
@Service
public class SoftwareTestOrderService  extends BaseService<SoftwareTestOrderDao, SoftwareTestOrder> {
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;
    /**
     * 分页查询
@@ -25,8 +65,10 @@
     * @return
     */
    public List<SoftwareTestOrder> page(QueryFilter queryFilter) {
        return baseDao.getList(queryFilter.getQueryParams());
        List<SoftwareTestOrder> list = baseDao.getList(queryFilter.getQueryParams());
        return list;
    }
    /**
     * 删除
@@ -37,4 +79,176 @@
        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");
            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) {
                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());
        }
        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();
            List<?> testItemResult = baseDao.dictList("testItem_type", projectCode);
            List<?> measuredList = testItemResult;
            data.setMeasuredList((List<SoftwareTestOrderMeasured>) measuredList);
            List<?> productLibraryResult = baseDao.dictList("product_library_file", projectCode);
            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().toString(), "critical_level");
            dataObj.getSoftwareTestOrder().setCriticalLevelStr(criticalLevelStr);
           for (SoftwareTestOrderMeasured measured : dataObj.getMeasuredList()) {
               String value = measured.getIsMeasured();
               String isMeasuredStr = getShowDictList.getShowDictList(value, "is_or_not");
               SoftwareTestOrderMeasured newMeasured = new SoftwareTestOrderMeasured();
           }
            String sortwareTypeStr = getShowDictList.getShowDictList(dataObj.getProject().getSoftwareType(), "software_type");
            dataObj.getSoftwareTestOrder().setSortwareTypeStr(sortwareTypeStr);
            String testBasisStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestBasis(), "test_basis");
            dataObj.getSoftwareTestOrder().setTestBasisStr(testBasisStr);
            String testStandardStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestStandard(), "test_standard");
            dataObj.getSoftwareTestOrder().setTestStandardStr(testStandardStr);
            String testLevelStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestLevel().toString(), "test_level");
            dataObj.getSoftwareTestOrder().setTestLevelStr(testLevelStr);
            String test =dataObj.getSoftwareTestOrder().getOtherRequire();
            String otherRequireStr = getShowDictList.getShowDictList(test, "other_require");
            dataObj.getSoftwareTestOrder().setOtherRequireStr(otherRequireStr);
            String articleNatureStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getArticleNature(), "article_nature");
            dataObj.getSoftwareTestOrder().setArticleNatureStr(articleNatureStr);
            String sampleStatusStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getSampleStatus(), "is_or_not");
            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();
        }
    }
}