From e6172117ac9615afc1ef0d15c4abe1e9c86745cb Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Mon, 18 Nov 2024 13:31:20 +0900 Subject: [PATCH 01/14] =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/module/ModuleInfoController.java | 24 -------------- .../qcast/biz/module/ModuleInfoMapper.java | 13 -------- .../qcast/biz/module/ModuleInfoService.java | 18 ---------- .../biz/module/dto/ModuleInfoResponse.java | 15 --------- .../RoofMaterialInfoController.java | 33 ------------------- .../roofmaterial/RoofMaterialInfoMapper.java | 10 ------ .../roofmaterial/RoofMaterialInfoService.java | 23 ------------- .../dto/RoofMaterialInfoResponse.java | 16 --------- .../qcast/biz/trestle/TrestleInfoMapper.java | 10 ------ .../qcast/biz/trestle/TrestleInfoService.java | 17 ---------- .../biz/trestle/dto/TrestleInfoResponse.java | 17 ---------- .../mappers/module/moduleInfoMapper.xml | 14 -------- .../roofmaterial/roofMaterialInfoMapper.xml | 10 ------ .../mappers/trestle/TrestleInfoMapper.xml | 18 ---------- 14 files changed, 238 deletions(-) delete mode 100644 src/main/java/com/interplug/qcast/biz/module/ModuleInfoController.java delete mode 100644 src/main/java/com/interplug/qcast/biz/module/ModuleInfoMapper.java delete mode 100644 src/main/java/com/interplug/qcast/biz/module/ModuleInfoService.java delete mode 100644 src/main/java/com/interplug/qcast/biz/module/dto/ModuleInfoResponse.java delete mode 100644 src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoController.java delete mode 100644 src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoMapper.java delete mode 100644 src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoService.java delete mode 100644 src/main/java/com/interplug/qcast/biz/roofmaterial/dto/RoofMaterialInfoResponse.java delete mode 100644 src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoMapper.java delete mode 100644 src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoService.java delete mode 100644 src/main/java/com/interplug/qcast/biz/trestle/dto/TrestleInfoResponse.java delete mode 100644 src/main/resources/mappers/module/moduleInfoMapper.xml delete mode 100644 src/main/resources/mappers/roofmaterial/roofMaterialInfoMapper.xml delete mode 100644 src/main/resources/mappers/trestle/TrestleInfoMapper.xml diff --git a/src/main/java/com/interplug/qcast/biz/module/ModuleInfoController.java b/src/main/java/com/interplug/qcast/biz/module/ModuleInfoController.java deleted file mode 100644 index 907628ac..00000000 --- a/src/main/java/com/interplug/qcast/biz/module/ModuleInfoController.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.interplug.qcast.biz.module; - -import com.interplug.qcast.biz.module.dto.ModuleInfoResponse; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -@RestController -@RequestMapping("/api/module/module-infos") -@RequiredArgsConstructor -@Tag(name = "ModuleInfoController", description = "모듈 정보 API") -public class ModuleInfoController { - private final ModuleInfoService moduleService; - - @Operation(description = "지붕재 ID와 가대 ID에 따라 설치 가능한 모듈 목록을 조회한다.") - @GetMapping - public List getModulesByRoofMaterialIdAndTrestleId( - @RequestParam("roofMaterialId") Integer roofMaterialId, - @RequestParam("trestleId") Integer trestleId) { - return moduleService.getModulesByRoofMaterialIdAndTrestleId(roofMaterialId, trestleId); - } -} diff --git a/src/main/java/com/interplug/qcast/biz/module/ModuleInfoMapper.java b/src/main/java/com/interplug/qcast/biz/module/ModuleInfoMapper.java deleted file mode 100644 index 394f01a8..00000000 --- a/src/main/java/com/interplug/qcast/biz/module/ModuleInfoMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.interplug.qcast.biz.module; - -import com.interplug.qcast.biz.module.dto.ModuleInfoResponse; -import java.util.List; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -@Mapper -public interface ModuleInfoMapper { - - List getModulesByRoofMaterialIdAndTrestleId( - @Param("roofMaterialId") Integer roofMaterialId, @Param("trestleId") Integer trestleId); -} diff --git a/src/main/java/com/interplug/qcast/biz/module/ModuleInfoService.java b/src/main/java/com/interplug/qcast/biz/module/ModuleInfoService.java deleted file mode 100644 index f0442d26..00000000 --- a/src/main/java/com/interplug/qcast/biz/module/ModuleInfoService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.interplug.qcast.biz.module; - -import com.interplug.qcast.biz.module.dto.ModuleInfoResponse; -import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class ModuleInfoService { - - private final ModuleInfoMapper moduleMapper; - - public List getModulesByRoofMaterialIdAndTrestleId( - Integer roofMaterialId, Integer trestleId) { - return moduleMapper.getModulesByRoofMaterialIdAndTrestleId(roofMaterialId, trestleId); - } -} diff --git a/src/main/java/com/interplug/qcast/biz/module/dto/ModuleInfoResponse.java b/src/main/java/com/interplug/qcast/biz/module/dto/ModuleInfoResponse.java deleted file mode 100644 index f2b265f2..00000000 --- a/src/main/java/com/interplug/qcast/biz/module/dto/ModuleInfoResponse.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.interplug.qcast.biz.module.dto; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class ModuleInfoResponse { - private Integer id; - private String name; -} diff --git a/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoController.java b/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoController.java deleted file mode 100644 index cb3f7ce6..00000000 --- a/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoController.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.interplug.qcast.biz.roofmaterial; - -import com.interplug.qcast.biz.roofmaterial.dto.RoofMaterialInfoResponse; -import com.interplug.qcast.biz.trestle.dto.TrestleInfoResponse; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/roof-material/roof-material-infos") -@Tag(name = "RoofMaterialInfoController", description = "지붕재 정보 API") -public class RoofMaterialInfoController { - private final RoofMaterialInfoService roofMaterialInfoService; - - @Operation(description = "지붕재 목록들을 조회한다.") - @GetMapping - public List getRoofMaterials() { - return roofMaterialInfoService.getRoofMaterials(); - } - - @Operation(description = "지붕재ID에 따라 설치 가능한 가대 목록을 가져온다.") - @GetMapping("/{roofMaterialId}/trestles") - public List getTrestlesByRoofMaterialId( - @PathVariable Integer roofMaterialId) { - return roofMaterialInfoService.getTrestlesByRoofMaterialId(roofMaterialId); - } -} diff --git a/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoMapper.java b/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoMapper.java deleted file mode 100644 index 8098ddcb..00000000 --- a/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.interplug.qcast.biz.roofmaterial; - -import com.interplug.qcast.biz.roofmaterial.dto.RoofMaterialInfoResponse; -import java.util.List; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface RoofMaterialInfoMapper { - List getRoofMaterials(); -} diff --git a/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoService.java b/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoService.java deleted file mode 100644 index 4b115446..00000000 --- a/src/main/java/com/interplug/qcast/biz/roofmaterial/RoofMaterialInfoService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.interplug.qcast.biz.roofmaterial; - -import com.interplug.qcast.biz.roofmaterial.dto.RoofMaterialInfoResponse; -import com.interplug.qcast.biz.trestle.TrestleInfoService; -import com.interplug.qcast.biz.trestle.dto.TrestleInfoResponse; -import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class RoofMaterialInfoService { - private final RoofMaterialInfoMapper roofMapper; - private final TrestleInfoService trestleInfoService; - - public List getRoofMaterials() { - return roofMapper.getRoofMaterials(); - } - - public List getTrestlesByRoofMaterialId(Integer roofMaterialId) { - return trestleInfoService.getTrestlesByRoofMaterialId(roofMaterialId); - } -} diff --git a/src/main/java/com/interplug/qcast/biz/roofmaterial/dto/RoofMaterialInfoResponse.java b/src/main/java/com/interplug/qcast/biz/roofmaterial/dto/RoofMaterialInfoResponse.java deleted file mode 100644 index 155367de..00000000 --- a/src/main/java/com/interplug/qcast/biz/roofmaterial/dto/RoofMaterialInfoResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.interplug.qcast.biz.roofmaterial.dto; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -public class RoofMaterialInfoResponse { - - private Integer id; - private String name; -} diff --git a/src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoMapper.java b/src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoMapper.java deleted file mode 100644 index c124d5b1..00000000 --- a/src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.interplug.qcast.biz.trestle; - -import com.interplug.qcast.biz.trestle.dto.TrestleInfoResponse; -import java.util.List; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface TrestleInfoMapper { - List getTrestlesByRoofMaterialId(Integer roofMaterialId); -} diff --git a/src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoService.java b/src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoService.java deleted file mode 100644 index 03a69e9b..00000000 --- a/src/main/java/com/interplug/qcast/biz/trestle/TrestleInfoService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.interplug.qcast.biz.trestle; - -import com.interplug.qcast.biz.trestle.dto.TrestleInfoResponse; -import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class TrestleInfoService { - - private final TrestleInfoMapper trestleMapper; - - public List getTrestlesByRoofMaterialId(Integer roofMaterialId) { - return trestleMapper.getTrestlesByRoofMaterialId(roofMaterialId); - } -} diff --git a/src/main/java/com/interplug/qcast/biz/trestle/dto/TrestleInfoResponse.java b/src/main/java/com/interplug/qcast/biz/trestle/dto/TrestleInfoResponse.java deleted file mode 100644 index 542d5035..00000000 --- a/src/main/java/com/interplug/qcast/biz/trestle/dto/TrestleInfoResponse.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.interplug.qcast.biz.trestle.dto; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class TrestleInfoResponse { - private Integer id; - private String name; - private Integer manufacturerId; - private String manufacturerName; -} diff --git a/src/main/resources/mappers/module/moduleInfoMapper.xml b/src/main/resources/mappers/module/moduleInfoMapper.xml deleted file mode 100644 index 30d4aedd..00000000 --- a/src/main/resources/mappers/module/moduleInfoMapper.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/main/resources/mappers/roofmaterial/roofMaterialInfoMapper.xml b/src/main/resources/mappers/roofmaterial/roofMaterialInfoMapper.xml deleted file mode 100644 index a710c623..00000000 --- a/src/main/resources/mappers/roofmaterial/roofMaterialInfoMapper.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/main/resources/mappers/trestle/TrestleInfoMapper.xml b/src/main/resources/mappers/trestle/TrestleInfoMapper.xml deleted file mode 100644 index 6b1ca1f3..00000000 --- a/src/main/resources/mappers/trestle/TrestleInfoMapper.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - \ No newline at end of file From 8125c7d4c70973fd2ed6760f579e07330ee67276 Mon Sep 17 00:00:00 2001 From: "LAPTOP-L3VE7KK2\\USER" Date: Tue, 19 Nov 2024 15:25:42 +0900 Subject: [PATCH 02/14] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EC=84=9C=20=EB=B3=B5?= =?UTF-8?q?=EC=82=AC=20API=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/estimate/EstimateController.java | 4 +- .../qcast/biz/estimate/EstimateMapper.java | 5 +- .../qcast/biz/estimate/EstimateService.java | 230 ++++++++++++------ .../biz/estimate/dto/EstimateCopyRequest.java | 31 +++ .../biz/estimate/dto/EstimateRequest.java | 3 - .../qcast/biz/estimate/dto/ItemRequest.java | 3 + .../qcast/biz/estimate/dto/RoofRequest.java | 3 + .../qcast/biz/estimate/dto/RoofResponse.java | 12 + .../qcast/biz/object/ObjectMapper.java | 3 + .../qcast/biz/object/dto/ObjectRequest.java | 3 + .../mappers/estimate/estimateMapper.xml | 50 +++- .../resources/mappers/object/objectMapper.xml | 94 +++++++ 12 files changed, 358 insertions(+), 83 deletions(-) create mode 100644 src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateCopyRequest.java diff --git a/src/main/java/com/interplug/qcast/biz/estimate/EstimateController.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateController.java index 4552609b..6fe3ec28 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateController.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateController.java @@ -59,9 +59,9 @@ public class EstimateController { @Operation(description = "견적서를 복사한다.") @PostMapping("/save-estimate-copy") @ResponseStatus(HttpStatus.CREATED) - public EstimateResponse insertEstimateCopy(@RequestBody EstimateRequest estimateRequest) + public EstimateResponse insertEstimateCopy(@RequestBody EstimateCopyRequest estimateCopyRequest) throws Exception { - return estimateService.insertEstimateCopy(estimateRequest); + return estimateService.insertEstimateCopy(estimateCopyRequest); } @Operation(description = "견적서를 엑셀로 다운로드한다.") diff --git a/src/main/java/com/interplug/qcast/biz/estimate/EstimateMapper.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateMapper.java index 5bce0c41..5e287c47 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateMapper.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateMapper.java @@ -30,6 +30,9 @@ public interface EstimateMapper { // 견적서 지붕재 목록 조회 public List selectEstimateRoofList(EstimateRequest estimateRequest); + // 견적서 지붕재 아이템 목록 조회 + public List selectEstimateRoofItemList(EstimateRequest estimateRequest); + // 견적서 지붕재 PC 목록 조회 public List selectEstimateRoofPcList(EstimateRequest estimateRequest); @@ -76,5 +79,5 @@ public interface EstimateMapper { public int deleteEstimateItemList(EstimateRequest estimateRequest); // 견적서 복사 - public int insertEstimateCopy(EstimateRequest estimateRequest); + public int insertEstimateCopy(EstimateCopyRequest estimateCopyRequest); } diff --git a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java index f6d6108a..3fa16552 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java @@ -6,9 +6,8 @@ import com.interplug.qcast.biz.file.FileMapper; import com.interplug.qcast.biz.file.dto.FileRequest; import com.interplug.qcast.biz.file.dto.FileResponse; import com.interplug.qcast.biz.object.ObjectMapper; +import com.interplug.qcast.biz.object.dto.ObjectRequest; import com.interplug.qcast.biz.object.dto.ObjectResponse; -import com.interplug.qcast.biz.object.dto.PlanRequest; -import com.interplug.qcast.biz.object.dto.PlanResponse; import com.interplug.qcast.biz.pwrGnrSimulation.PwrGnrSimService; import com.interplug.qcast.biz.pwrGnrSimulation.dto.PwrGnrSimGuideResponse; import com.interplug.qcast.biz.pwrGnrSimulation.dto.PwrGnrSimRequest; @@ -50,6 +49,9 @@ public class EstimateService { @Autowired Messages message; + @Value("${file.ini.root.path}") + private String baseDirPath; + @Value("${qsp.url}") private String QSP_API_URL; @@ -607,98 +609,186 @@ public class EstimateService { /** * 견적서 복사 * - * @param estimateRequest 견적서 복사 정보 + * @param estimateCopyRequest 견적서 복사 정보 * @return EstimateResponse 견적서 복사 후 상세 정보 * @throws Exception */ - public EstimateResponse insertEstimateCopy(EstimateRequest estimateRequest) throws Exception { + public EstimateResponse insertEstimateCopy(EstimateCopyRequest estimateCopyRequest) + throws Exception { // Validation - if (StringUtils.isEmpty(estimateRequest.getObjectNo())) { + if (StringUtils.isEmpty(estimateCopyRequest.getObjectNo())) { throw new QcastException( ErrorCode.INVALID_INPUT_VALUE, message.getMessage("common.message.required.data", "Object No")); } - if (StringUtils.isEmpty(estimateRequest.getPlanNo())) { + if (StringUtils.isEmpty(estimateCopyRequest.getPlanNo())) { throw new QcastException( ErrorCode.INVALID_INPUT_VALUE, message.getMessage("common.message.required.data", "Plan No")); } - + // 응답 객체 EstimateResponse response = new EstimateResponse(); - // [1]. 총 플랜 목록 조회 및 제약조건 처리 (플랜 10개까지만 등록) - PlanRequest planRequest = new PlanRequest(); - planRequest.setObjectNo(estimateRequest.getObjectNo()); - List planList = objectMapper.selectPlanList(planRequest); - if (planList.size() > 9) { - throw new QcastException( - ErrorCode.INTERNAL_SERVER_ERROR, message.getMessage("common.message.plan.save.limit")); - } + try { - List itemList = new ArrayList(); - List estimateItemList = estimateMapper.selectEstimateItemList(estimateRequest); - for (ItemResponse itemResponse : estimateItemList) { - ItemRequest itemRequest = new ItemRequest(); - itemRequest.setItemId(itemResponse.getItemId()); - itemRequest.setAmount(itemResponse.getAmount()); + ObjectRequest objectRequest = new ObjectRequest(); + objectRequest.setSaleStoreId(estimateCopyRequest.getCopySaleStoreId()); + objectRequest.setReceiveUser( + StringUtils.defaultString(estimateCopyRequest.getCopyReceiveUser())); + objectRequest.setDelFlg("0"); + objectRequest.setTempFlg("0"); + objectRequest.setTempDelFlg("0"); + objectRequest.setUserId(estimateCopyRequest.getUserId()); - itemList.add(itemRequest); - } + // [1]. 신규 물건번호 생성 + objectMapper.insertObjectNo(objectRequest); + objectRequest.setObjectNo(estimateCopyRequest.getObjectNo()); + objectRequest.setCopyObjectNo(objectMapper.selectObjectNo(objectRequest)); - // [2]. 아이템 관련 데이터 셋팅 (복사 시 정가 셋팅) - String[] arrItemId = new String[itemList.size()]; - int i = 0; - for (ItemRequest itemRequest : itemList) { - arrItemId[i++] = itemRequest.getItemId(); - } - estimateRequest.setArrItemId(arrItemId); - // 아이템의 마스터 정보 및 정가 정보 조회 - List itemResponseList = estimateMapper.selectItemMasterList(estimateRequest); + // [2]. 물건정보 복사 + objectRequest.setContentsPath(baseDirPath + "\\\\" + objectRequest.getCopyObjectNo()); + objectMapper.insertObjectCopy(objectRequest); + objectRequest.setObjectNo(objectRequest.getCopyObjectNo()); + objectMapper.updateObjectDelivery(objectRequest); - int j = 1; - for (ItemRequest itemRequest : itemList) { - itemRequest.setDispOrder(String.valueOf(j++)); + // [3]. 아이템 관련 데이터 셋팅 (복사 시 정가 셋팅) + EstimateRequest estimateRequest = new EstimateRequest(); + estimateRequest.setObjectNo(estimateCopyRequest.getObjectNo()); + estimateRequest.setPlanNo(estimateCopyRequest.getPlanNo()); - for (ItemResponse itemResponse : itemResponseList) { - if (itemRequest.getItemId().equals(itemResponse.getItemId())) { - itemRequest.setItemNo(itemResponse.getItemNo()); - itemRequest.setItemName(itemResponse.getItemName()); - itemRequest.setUnit(itemResponse.getUnit()); - itemRequest.setPnowW(itemResponse.getPnowW()); - itemRequest.setSpecification(itemResponse.getPnowW()); - itemRequest.setUnitPrice(itemResponse.getSalePrice()); - itemRequest.setSalePrice(itemResponse.getSalePrice()); - itemRequest.setPkgMaterialFlg(itemResponse.getPkgMaterialFlg()); - itemRequest.setItemGroup(itemResponse.getItemGroup()); + List itemList = new ArrayList(); + List estimateItemList = estimateMapper.selectEstimateItemList(estimateRequest); + for (ItemResponse itemResponse : estimateItemList) { + ItemRequest itemRequest = new ItemRequest(); + itemRequest.setDispOrder(itemResponse.getDispOrder()); + itemRequest.setPaDispOrder(itemResponse.getPaDispOrder()); + itemRequest.setItemId(itemResponse.getItemId()); + itemRequest.setAmount(itemResponse.getAmount()); + itemRequest.setBomAmount(itemResponse.getBomAmount()); + itemRequest.setSpecialNoteCd(itemResponse.getSpecialNoteCd()); + itemRequest.setItemChangeFlg("0"); - break; + itemList.add(itemRequest); + } + + String[] arrItemId = new String[itemList.size()]; + int i = 0; + for (ItemRequest itemRequest : itemList) { + arrItemId[i++] = itemRequest.getItemId(); + } + estimateRequest.setArrItemId(arrItemId); + // 아이템의 마스터 정보 및 정가 정보 조회 + List itemResponseList = estimateMapper.selectItemMasterList(estimateRequest); + + for (ItemRequest itemRequest : itemList) { + for (ItemResponse itemResponse : itemResponseList) { + if (itemRequest.getItemId().equals(itemResponse.getItemId())) { + itemRequest.setItemNo(itemResponse.getItemNo()); + itemRequest.setItemName(itemResponse.getItemName()); + itemRequest.setUnit(itemResponse.getUnit()); + itemRequest.setPnowW(itemResponse.getPnowW()); + itemRequest.setSpecification(itemResponse.getPnowW()); + itemRequest.setUnitPrice(itemResponse.getSalePrice()); + itemRequest.setSalePrice(itemResponse.getSalePrice()); + itemRequest.setPkgMaterialFlg(itemResponse.getPkgMaterialFlg()); + itemRequest.setFileUploadFlg(itemResponse.getFileUploadFlg()); + itemRequest.setItemGroup(itemResponse.getItemGroup()); + + break; + } } } + + // [4]. 견적서 복사 + estimateCopyRequest.setCopyObjectNo(objectRequest.getObjectNo()); + estimateCopyRequest.setCopyPlanNo("1"); + estimateMapper.insertEstimateCopy(estimateCopyRequest); + + // [5]. 견적서 아이템 복사 + for (ItemRequest itemRequest : itemList) { + itemRequest.setObjectNo(estimateCopyRequest.getCopyObjectNo()); + itemRequest.setPlanNo(estimateCopyRequest.getCopyPlanNo()); + itemRequest.setPartAdd( + !StringUtils.isEmpty(itemRequest.getPartAdd()) ? itemRequest.getPartAdd() : "0"); + itemRequest.setItemChangeFlg( + !StringUtils.isEmpty(itemRequest.getItemChangeFlg()) + ? itemRequest.getItemChangeFlg() + : "0"); + itemRequest.setUserId(estimateCopyRequest.getUserId()); + + estimateMapper.insertEstimateItem(itemRequest); + } + + // [6]. 견적서 지붕재 복사 + List roofList = estimateMapper.selectEstimateRoofList(estimateRequest); + List roofItemList = estimateMapper.selectEstimateRoofItemList(estimateRequest); + + for (RoofResponse roofResponse : roofList) { + List roofItemList2 = new ArrayList(); + + // 현재 매칭되는 지붕재 아이템 축출 + for (RoofResponse roofItemResponse : roofItemList) { + if (roofResponse.getRoofNo().equals(roofItemResponse.getRoofNo())) { + roofItemList2.add(roofItemResponse); + } + } + + RoofRequest roofRequest = new RoofRequest(); + roofRequest.setObjectNo(estimateCopyRequest.getCopyObjectNo()); + roofRequest.setPlanNo(estimateCopyRequest.getCopyPlanNo()); + roofRequest.setRoofSurface(roofResponse.getRoofSurface()); + roofRequest.setRoofMaterialId(roofResponse.getRoofMaterialId()); + roofRequest.setSupportMethodId(roofResponse.getSupportMethodId()); + roofRequest.setConstructSpecification(roofResponse.getConstructSpecification()); + roofRequest.setSlope(roofResponse.getSlope()); + roofRequest.setAngle(roofResponse.getAngle()); + roofRequest.setClassType(roofResponse.getClassType()); + roofRequest.setAzimuth(roofResponse.getAzimuth()); + roofRequest.setUserId(estimateCopyRequest.getUserId()); + + estimateMapper.insertEstimateRoof(roofRequest); + + for (RoofResponse roofItemResponse : roofItemList2) { + ItemRequest itemRequest = new ItemRequest(); + itemRequest.setRoofNo(roofRequest.getRoofNo()); + itemRequest.setObjectNo(estimateCopyRequest.getCopyObjectNo()); + itemRequest.setPlanNo(estimateCopyRequest.getCopyPlanNo()); + itemRequest.setItemId(roofItemResponse.getItemId()); + itemRequest.setItemNo(roofItemResponse.getItemNo()); + itemRequest.setItemName(roofItemResponse.getItemName()); + itemRequest.setSpecification(roofItemResponse.getSpecification()); + itemRequest.setAmount(roofItemResponse.getAmount()); + itemRequest.setPcItemId(roofItemResponse.getPcItemId()); + itemRequest.setCircuit(roofItemResponse.getCircuit()); + + estimateMapper.insertEstimateRoofItem(itemRequest); + } + } + + // [7]. 견적서 도면 복사 (추후 개발 필요) + + // [8]. QSP Q.CAST SEND API + List resultList = new ArrayList(); + estimateRequest.setObjectNo(estimateCopyRequest.getCopyObjectNo()); + estimateRequest.setPlanNo(estimateCopyRequest.getCopyPlanNo()); + resultList = this.sendEstimateApi(estimateRequest); + // API에서 받은 문서번호 업데이트 + for (EstimateSendResponse result : resultList) { + estimateRequest.setObjectNo(result.getObjectNo()); + estimateRequest.setPlanNo(result.getPlanNo()); + estimateRequest.setDocNo(result.getDocNo()); + estimateRequest.setSyncFlg(result.getSyncFlg()); + + estimateMapper.updateEstimateApi(estimateRequest); + } + + } catch (Exception e) { + throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR); } - // 견적서 복사 - estimateMapper.insertEstimateCopy(estimateRequest); - - // 견적서 아이템 복사 - for (ItemRequest itemRequest : itemList) { - itemRequest.setObjectNo(estimateRequest.getObjectNo()); - itemRequest.setPlanNo(estimateRequest.getCopyPlanNo()); - itemRequest.setPartAdd( - !StringUtils.isEmpty(itemRequest.getPartAdd()) ? itemRequest.getPartAdd() : "0"); - itemRequest.setItemChangeFlg( - !StringUtils.isEmpty(itemRequest.getItemChangeFlg()) - ? itemRequest.getItemChangeFlg() - : "0"); - itemRequest.setUserId(estimateRequest.getUserId()); - - estimateMapper.insertEstimateItem(itemRequest); - } - - // 도면 복사 (추후 개발 필요) - - // 리턴 - response.setObjectNo(estimateRequest.getObjectNo()); - response.setPlanNo(estimateRequest.getCopyPlanNo()); + // [9]. 최종 생성 물건번호 리턴 + response.setObjectNo(estimateCopyRequest.getCopyObjectNo()); + response.setPlanNo(estimateCopyRequest.getCopyPlanNo()); return response; } diff --git a/src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateCopyRequest.java b/src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateCopyRequest.java new file mode 100644 index 00000000..e90d5442 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateCopyRequest.java @@ -0,0 +1,31 @@ +package com.interplug.qcast.biz.estimate.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class EstimateCopyRequest { + @Schema(description = "물건번호") + private String objectNo; + + @Schema(description = "플랜번호") + private String planNo; + + @Schema(description = "판매점ID") + private String saleStoreId; + + @Schema(description = "복사 판매점 ID") + private String copySaleStoreId; + + @Schema(description = "복사 물건번호") + private String copyObjectNo; + + @Schema(description = "복사 플랜번호") + private String copyPlanNo; + + @Schema(description = "복사 담당자명") + private String copyReceiveUser; + + @Schema(description = "사용자아이디") + private String userId; +} diff --git a/src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateRequest.java b/src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateRequest.java index d7d9073f..8d7b428b 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateRequest.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/dto/EstimateRequest.java @@ -156,9 +156,6 @@ public class EstimateRequest { @Schema(description = "비고") private String remarks; - @Schema(description = "복사 플랜번호") - private String copyPlanNo; - @Schema(description = "아이템번호 목록") private String[] arrItemId; diff --git a/src/main/java/com/interplug/qcast/biz/estimate/dto/ItemRequest.java b/src/main/java/com/interplug/qcast/biz/estimate/dto/ItemRequest.java index cdaf6adf..960a29a7 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/dto/ItemRequest.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/dto/ItemRequest.java @@ -71,6 +71,9 @@ public class ItemRequest { @Schema(description = "PC 아이템 ID") private String pcItemId; + @Schema(description = "회로") + private String circuit; + @Schema(description = "W") private String pnowW; diff --git a/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofRequest.java b/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofRequest.java index 4aebc2c5..1a2aedcc 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofRequest.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofRequest.java @@ -48,6 +48,9 @@ public class RoofRequest { @Schema(description = "각도") private String angle; + @Schema(description = "경사각 선택코드") + private String classType; + @Schema(description = "방위각") private String azimuth; diff --git a/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofResponse.java b/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofResponse.java index 77b9c447..927a570a 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofResponse.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/dto/RoofResponse.java @@ -77,12 +77,24 @@ public class RoofResponse { @Schema(description = "아이템 번호") private String itemNo; + @Schema(description = "아이템명") + private String itemName; + + @Schema(description = "W") + private String specification; + @Schema(description = "매수") private String amount; @Schema(description = "용량") private String volKw; + @Schema(description = "PC 아이템 ID") + private String pcItemId; + + @Schema(description = "회로") + private String circuit; + @Schema(description = "Pc 모듈 매수") private String pcModuleAmount; } diff --git a/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java b/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java index 00b9bb7c..1d7fb162 100644 --- a/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java +++ b/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java @@ -43,6 +43,9 @@ public interface ObjectMapper { // 물건정보 등록 public int insertObject(ObjectRequest objectRequest); + // 물건정보 복사 + public int insertObjectCopy(ObjectRequest objectRequest); + // 물건정보 수정 public int updateObject(ObjectRequest objectRequest); diff --git a/src/main/java/com/interplug/qcast/biz/object/dto/ObjectRequest.java b/src/main/java/com/interplug/qcast/biz/object/dto/ObjectRequest.java index d9a36cbe..4a07696a 100644 --- a/src/main/java/com/interplug/qcast/biz/object/dto/ObjectRequest.java +++ b/src/main/java/com/interplug/qcast/biz/object/dto/ObjectRequest.java @@ -152,6 +152,9 @@ public class ObjectRequest { @Schema(description = "검색 - 정렬순서") private String schSortType; + @Schema(description = "복사 물건번호") + private String copyObjectNo; + // 페이징정보 @Schema(description = "시작 Row") private String startRow; diff --git a/src/main/resources/mappers/estimate/estimateMapper.xml b/src/main/resources/mappers/estimate/estimateMapper.xml index 3b1c8d38..49e45638 100644 --- a/src/main/resources/mappers/estimate/estimateMapper.xml +++ b/src/main/resources/mappers/estimate/estimateMapper.xml @@ -291,6 +291,7 @@ , P.PLAN_NO , ROUND(CAST(P.SETUP_HEIGHT AS FLOAT), 2) AS SETUP_HEIGHT , P.SURFACE_TYPE + , RE.ROOF_NO , RE.ROOF_SURFACE , RE.ROOF_MATERIAL_ID , RE.SUPPORT_METHOD_ID @@ -319,6 +320,25 @@ AND P.PLAN_NO = #{planNo} + + + + + +