diff --git a/src/main/java/com/interplug/qcast/biz/excelDown/ExcelDownController.java b/src/main/java/com/interplug/qcast/biz/excelDown/ExcelDownController.java index eeec4138..ead51d4c 100644 --- a/src/main/java/com/interplug/qcast/biz/excelDown/ExcelDownController.java +++ b/src/main/java/com/interplug/qcast/biz/excelDown/ExcelDownController.java @@ -19,7 +19,7 @@ public class ExcelDownController { private final ExcelDownService excelDownService; @Operation(description = "과거데이터_견적 엑셀다운로드 조회") - @PostMapping("/quotExclDownData") + @PostMapping("/quot-excl-down-data") @ResponseStatus(HttpStatus.OK) public QuotResponse quotExclDownData(@RequestBody QuotRequest quotRequest) { @@ -34,7 +34,7 @@ public class ExcelDownController { } @Operation(description = "과거데이터_자연재해보상입력 엑셀다운로드 조회") - @PostMapping("/ntrCtsCmpExclDownData") + @PostMapping("/ntr-cts-cmp-excl-down-data") @ResponseStatus(HttpStatus.OK) public List ntrCtsCmpExclDownData(@RequestBody NtrCtsCmpRequest ntrCtsCmpRequest) { return excelDownService.selectNtrCtsCmpExclDownData(ntrCtsCmpRequest); diff --git a/src/main/java/com/interplug/qcast/biz/excelDown/dto/NtrCtsCmpRequest.java b/src/main/java/com/interplug/qcast/biz/excelDown/dto/NtrCtsCmpRequest.java index f8d00dc5..189562e8 100644 --- a/src/main/java/com/interplug/qcast/biz/excelDown/dto/NtrCtsCmpRequest.java +++ b/src/main/java/com/interplug/qcast/biz/excelDown/dto/NtrCtsCmpRequest.java @@ -8,6 +8,7 @@ import lombok.Setter; @Getter @Setter public class NtrCtsCmpRequest { + private String sch_baseDt; /* 과거일자 기준일 */ private String sch_dtType; /* 기간 구분 ( 자연재해보상통지일, 보증서발급일, 설치일 ) */ private String sch_startDt; /* 시작일 */ private String sch_endDt; /* 종료일 */ diff --git a/src/main/java/com/interplug/qcast/biz/excelDown/dto/QuotRequest.java b/src/main/java/com/interplug/qcast/biz/excelDown/dto/QuotRequest.java index 33d355a7..ae947495 100644 --- a/src/main/java/com/interplug/qcast/biz/excelDown/dto/QuotRequest.java +++ b/src/main/java/com/interplug/qcast/biz/excelDown/dto/QuotRequest.java @@ -9,6 +9,7 @@ import lombok.Setter; @Setter public class QuotRequest { private String langCd; /* 언어 */ + private String sch_baseDt; /* 과거일자 기준일 */ private String sch_startDt; /* 시작일 */ private String sch_endDt; /* 종료일 */ private String sch_saleStoreId; /* 판매대리점Id */ diff --git a/src/main/java/com/interplug/qcast/biz/user/UserController.java b/src/main/java/com/interplug/qcast/biz/user/UserController.java new file mode 100644 index 00000000..cda9bb95 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/user/UserController.java @@ -0,0 +1,49 @@ +package com.interplug.qcast.biz.user; + +import com.interplug.qcast.biz.user.dto.StoreRequest; +import com.interplug.qcast.biz.user.dto.UserRequest; +import com.interplug.qcast.biz.user.dto.UserResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Slf4j +@RestController +@RequestMapping("/api/user") +@RequiredArgsConstructor +@Tag(name = "UserController", description = "User 관련 API") +public class UserController { + private final UserService userService; + + @Operation(description = "판매점 정보를 등록/수정 한다.(동기화)") + @PutMapping("/store-save") + @ResponseStatus(HttpStatus.OK) + public UserResponse setStoreInfo(@RequestBody StoreRequest storeReq) { + UserResponse userResponse = new UserResponse(); + + int resultCnt = userService.setStoreSave(storeReq); + + if (resultCnt > 0) userResponse.setCode("200"); + else userResponse.setCode("500"); + + return userResponse; + } + + @Operation(description = "user 정보를 등록/수정 한다.(동기화)") + @PutMapping("/user-save") + public UserResponse updateUserInfo(@RequestBody List userReqList) { + UserResponse userResponse = new UserResponse(); + + int resultCnt = userService.setUserSave(userReqList); + + if (resultCnt > 0) userResponse.setCode("200"); + else userResponse.setCode("500"); + + return userResponse; + } +} diff --git a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java new file mode 100644 index 00000000..1b982a71 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java @@ -0,0 +1,13 @@ +package com.interplug.qcast.biz.user; + +import com.interplug.qcast.biz.user.dto.StoreRequest; +import com.interplug.qcast.biz.user.dto.UserRequest; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserMapper { + + int setStoreSave(StoreRequest storeReq); + + int setUserSave(UserRequest userReqList); +} \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/user/UserService.java b/src/main/java/com/interplug/qcast/biz/user/UserService.java new file mode 100644 index 00000000..9c65d631 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/user/UserService.java @@ -0,0 +1,29 @@ +package com.interplug.qcast.biz.user; + +import com.interplug.qcast.biz.user.dto.StoreRequest; +import com.interplug.qcast.biz.user.dto.UserRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class UserService { + private final UserMapper userMapper; + + public int setStoreSave(StoreRequest storeReq) { + return userMapper.setStoreSave(storeReq); + } + + public int setUserSave(List userReqList) { + int resultCnt = 0; + if (!userReqList.isEmpty()) { + for (UserRequest userReq : userReqList) { + resultCnt += userMapper.setUserSave(userReq); + } + } + return resultCnt; + } + +} diff --git a/src/main/java/com/interplug/qcast/biz/user/dto/StoreRequest.java b/src/main/java/com/interplug/qcast/biz/user/dto/StoreRequest.java new file mode 100644 index 00000000..59da54c6 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/user/dto/StoreRequest.java @@ -0,0 +1,40 @@ +package com.interplug.qcast.biz.user.dto; + +import lombok.Data; + +@Data +public class StoreRequest { + + private String saleStoreId; + private String saleStoreName; + private String saleStoreNameKana; + private String zipNo; + private String address; + private String tel; + private String fax; + private String applicationDate; + private String approvalDate; + private String approveFlg; + private String paymentTerms; + private String firstAgentFlg; + private String secondAgentFlg; + private String firstAgentId; + private String parentSaleAgentId; + private String businessCharger; + private String businessChargerCd; + private String dispCompanyName; + private String dispZipNo; + private String dispAddress; + private String dispTel; + private String dispFax; + private String dispMail; + private String saleStoreLevel; + private String delFlg; + private String registDatetime; + private String lastEditDatetime; + private String lastEditUser; + +} + + + diff --git a/src/main/java/com/interplug/qcast/biz/user/dto/UserRequest.java b/src/main/java/com/interplug/qcast/biz/user/dto/UserRequest.java new file mode 100644 index 00000000..4db72aef --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/user/dto/UserRequest.java @@ -0,0 +1,25 @@ +package com.interplug.qcast.biz.user.dto; + +import lombok.Data; + +@Data +public class UserRequest { + + private String saleStoreId; + private String userId; + private String password; + private String category; + private String name; + private String nameKana; + private String mail; + private String groupId; + private String tel; + private String fax; + private String registDatetime; + private String lastEditDatetime; + private String lastEditUser; + +} + + + diff --git a/src/main/java/com/interplug/qcast/biz/user/dto/UserResponse.java b/src/main/java/com/interplug/qcast/biz/user/dto/UserResponse.java new file mode 100644 index 00000000..92935c2b --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/user/dto/UserResponse.java @@ -0,0 +1,15 @@ +package com.interplug.qcast.biz.user.dto; + +import lombok.Data; + +@Data +public class UserResponse { + + private String code; + private String message; + + +} + + + diff --git a/src/main/resources/mappers/excelDown/excelDownMapper.xml b/src/main/resources/mappers/excelDown/excelDownMapper.xml index f40a727e..f2f70a18 100644 --- a/src/main/resources/mappers/excelDown/excelDownMapper.xml +++ b/src/main/resources/mappers/excelDown/excelDownMapper.xml @@ -27,13 +27,13 @@ , COALESCE(M.BUSINESS_TEAM, '') AS BUSINESS_TEAM /* 영업팀(판매점 등록) 営業チーム_販売店登録 */ , (CASE WHEN UPPER(#{langCd}) = 'JA' THEN C1.CODE_JP ELSE C1.CODE_NM - END) AS OBJECT_STATUS /* 주택구분 住宅区分 */ + END) AS OBJECT_STATUS /* 주택구분 住宅区分 */ , CONVERT(varchar, B.MANAGER_LAST_EDIT_DATETIME, 120) AS MANAGER_LAST_EDIT_DATETIME /* 관리자 최종 갱신일시管理者最終更新日時 */ , X.SALE_STORE_ID /* 최종갱신판매점ID 最終更新販売店ID */ , A.LAST_EDIT_USER /* 최종갱신자 最終更新者 */ , (CASE WHEN UPPER(#{langCd}) = 'JA' THEN C2.CODE_JP ELSE C2.CODE_NM - END) AS ROF_TYP /* 지붕종류 屋根種類 */ + END) AS ROF_TYP /* 지붕종류 屋根種類 */ , CASE WHEN A.DIFF_ROOF_ENABLED = 1 THEN A.ROOF_MATERIAL_ID_MULTI ELSE COALESCE((CASE WHEN UPPER(#{langCd}) = 'JA' THEN C3.CODE_JP ELSE C3.CODE_NM END), '') END AS ROOF_MATERIAL_NM /* 지붕재 屋根材 */ @@ -42,7 +42,7 @@ , A.SNOWFALL /* 적설수준 積雪レベル */ , (CASE WHEN UPPER(#{langCd}) = 'JA' THEN C4.CODE_JP ELSE C4.CODE_NM - END) AS CNS_LVL /* 시공레벨 施工レベル */ + END) AS CNS_LVL /* 시공레벨 施工レベル */ , U.HEIGHT /* 설치높이 設置高さ */ , W.MENSODO AS CTND_CLSF /* 면조도구분 面粗度区分 */ , V.CAPACITY AS ATH_CPC /* 인정용량 認定容量 */ @@ -138,7 +138,7 @@ LEFT JOIN M_PREFECTURE E ON B.PREF_ID = E.PREF_ID - LEFT JOIN M_CUST_SALES_STORE G + LEFT JOIN M_SALES_STORE G ON B.SALE_STORE_ID = G.SALE_STORE_ID /*본인정보*/ LEFT JOIN T_STATISTICS H ON A.OBJECT_NO = H.OBJECT_NO @@ -172,13 +172,13 @@ AND A.PLAN_NO = V.PLAN_NO LEFT JOIN T_MENSODO W ON A.OBJECT_NO = W.OBJECT_NO - LEFT JOIN M_CUST_SALES_STORE_USER X + LEFT JOIN M_USER X ON A.LAST_EDIT_USER = X.USER_ID - LEFT JOIN M_CUST_SALES_STORE Y + LEFT JOIN M_SALES_STORE Y ON G.FIRST_AGENT_ID = Y.SALE_STORE_ID /*1차점정보*/ WHERE A.DEL_FLG = 0 AND B.DEL_FLG = 0 - + AND B.ESTIMATE_DETAIL_CREATE_DATE >= #{sch_baseDt} /* 과거일자 기준일 */ AND B.ESTIMATE_DETAIL_CREATE_DATE BETWEEN #{sch_startDt} and #{sch_endDt} @@ -225,7 +225,7 @@ , D.FIRST_AGENT_FLG /* 一次代理店フラグ */ --> FROM T_OBJECT C - LEFT JOIN M_CUST_SALES_STORE D + LEFT JOIN M_SALES_STORE D ON C.SALE_STORE_ID = D.SALE_STORE_ID LEFT JOIN T_PLAN B ON C.OBJECT_NO = B.OBJECT_NO @@ -241,7 +241,7 @@ LEFT JOIN M_BUSINESS_CHARGER G ON C.BUSINESS_CHARGER_CD = G.BUSINESS_CHARGER_CD AND G.DEL_FLG = 0 - LEFT JOIN M_CUST_SALES_STORE H + LEFT JOIN M_SALES_STORE H ON D.FIRST_AGENT_ID = H.SALE_STORE_ID AND H.DEL_FLG = 0 LEFT JOIN M_PREFECTURE I @@ -255,7 +255,7 @@ WHERE C.DEL_FLG = 0 AND D.DEL_FLG = 0 AND B.DEL_FLG = 0 - + AND C.ESTIMATE_DETAIL_CREATE_DATE >= #{sch_baseDt} /* 과거일자 기준일 */ AND C.ESTIMATE_DETAIL_CREATE_DATE BETWEEN #{sch_startDt} and #{sch_endDt} @@ -349,7 +349,7 @@ LEFT JOIN T_OBJECT D ON A.OBJECT_NO = D.OBJECT_NO WHERE D.DEL_FLG != 1 - + AND D.ESTIMATE_DETAIL_CREATE_DATE >= #{sch_baseDt} /* 과거일자 기준일 */ diff --git a/src/main/resources/mappers/user/userMapper.xml b/src/main/resources/mappers/user/userMapper.xml new file mode 100644 index 00000000..54b24a52 --- /dev/null +++ b/src/main/resources/mappers/user/userMapper.xml @@ -0,0 +1,175 @@ + + + + + + /* sqlid : com.interplug.qcast.user.setStoreSave */ + MERGE M_SALES_STORE AS A + USING + ( SELECT #{saleStoreId} AS SALE_STORE_ID ) AS D + ON (A.SALE_STORE_ID = D.SALE_STORE_ID + ) + WHEN MATCHED THEN + UPDATE SET + SALE_STORE_NAME = #{saleStoreName} + , SALE_STORE_NAME_KANA = #{saleStoreNameKana} + , ZIP_NO = #{zipNo} + , ADDRESS = #{address} + , TEL = #{tel} + , FAX = #{fax} + , APPLICATION_DATE = #{applicationDate} + , APPROVAL_DATE = #{approvalDate} + , APPROVE_FLG = #{approveFlg} + , PAYMENT_TERMS = #{paymentTerms} + , FIRST_AGENT_FLG = #{firstAgentFlg} + , SECOND_AGENT_FLG = #{secondAgentFlg} + , FIRST_AGENT_ID = #{firstAgentId} + , PARENT_SALE_AGENT_ID = #{parentSaleAgentId} + , BUSINESS_CHARGER = #{businessCharger} + , BUSINESS_CHARGER_CD = #{businessChargerCd} + , DISP_COMPANY_NAME = #{dispCompanyName} + , DISP_ZIP_NO = #{dispZipNo} + , DISP_ADDRESS = #{dispAddress} + , DISP_TEL = #{dispTel} + , DISP_FAX = #{dispFax} + , DISP_MAIL = #{dispMail} + , SALE_STORE_LEVEL = #{saleStoreLevel} + , DEL_FLG = #{delFlg} + , LAST_EDIT_DATETIME = #{lastEditDatetime} + , LAST_EDIT_USER = #{lastEditUser} + WHEN NOT MATCHED THEN + INSERT ( + SALE_STORE_ID + , SALE_STORE_NAME + , SALE_STORE_NAME_KANA + , ZIP_NO + , ADDRESS + , TEL + , FAX + , APPLICATION_DATE + , APPROVAL_DATE + , APPROVE_FLG + , PAYMENT_TERMS + , FIRST_AGENT_FLG + , SECOND_AGENT_FLG + , FIRST_AGENT_ID + , PARENT_SALE_AGENT_ID + , OUTPUT_COMP_CLASS -- 출력 대비표 분류 + , INDUSTRIAL_OUTPUT_COMP_CLASS -- 산업출력 대비표 출력 + , FIXED_PRICE_FLG -- 정가 표시 + , QCELLS_FLG -- 패널선택 + , HANWFA_FLG -- 패널선택 + , OUT_STANDARD_FLG -- 비표준대응 + , BUSINESS_CHARGER + , BUSINESS_CHARGER_CD + , DISP_COMPANY_NAME + , DISP_ZIP_NO + , DISP_ADDRESS + , DISP_TEL + , DISP_FAX + , DISP_MAIL + , SALE_STORE_LEVEL + , REGIST_DATETIME + , DEL_FLG + , SNOWFALL_FLG -- 적설 + , LAST_EDIT_DATETIME + , LAST_EDIT_USER + ) VALUES ( + #{saleStoreId} + , #{saleStoreName} + , #{saleStoreNameKana} + , #{zipNo} + , #{address} + , #{tel} + , #{fax} + , #{applicationDate} + , #{approvalDate} + , #{approveFlg} + , #{paymentTerms} + , #{firstAgentFlg} + , #{secondAgentFlg} + , #{firstAgentId} + , #{parentSaleAgentId} + , 0 -- 출력 대비표 분류 + , 0 -- 산업출력 대비표 출력 + , 0 -- 정가 표시 + , 0 -- 패널선택 + , 0 -- 패널선택 + , 0 -- 비표준대응 + , #{businessCharger} + , #{businessChargerCd} + , #{dispCompanyName} + , #{dispZipNo} + , #{dispAddress} + , #{dispTel} + , #{dispFax} + , #{dispMail} + , #{saleStoreLevel} + , #{registDatetime} + , 0 + , 0 -- 적설 + , #{lastEditDatetime} + , #{lastEditUser} + ); + + + + + /* sqlid : com.interplug.qcast.user.setUserSave */ + MERGE M_USER AS A + USING + ( SELECT #{userId} AS USER_ID ) AS D + ON (A.USER_ID = D.USER_ID + ) + WHEN MATCHED THEN + UPDATE SET + SALE_STORE_ID = #{saleStoreId} + , CATEGORY = #{category} + , NAME = #{name} + , NAME_KANA = #{nameKana} + , TEL = #{tel} + , FAX = #{fax} + , MAIL = #{mail} + , LAST_EDIT_DATETIME = #{lastEditDatetime} + , LAST_EDIT_USER = #{lastEditUser} + -- , GROUP_ID -- '70000' , '60000' + -- , MODULE_SELECT_GROUP_ID -- 모듈 선택 그룹 ('G1','GA' ,'G2') + -- , VERSION_MANAGEMENT_ID -- 관리ID ('hanbaiten', 'hanwha_eigyo') + -- , DISP_COST_PRICE -- 구매 값 표시 + -- , DISP_SELLING_PRICE -- 판매 가격 표시 + WHEN NOT MATCHED THEN + INSERT ( + USER_ID + , SALE_STORE_ID + , PASSWORD + , CATEGORY + , NAME + , NAME_KANA + , TEL + , FAX + , MAIL + , GROUP_ID + , DISP_COST_PRICE + , DISP_SELLING_PRICE + , REGIST_DATETIME + , LAST_EDIT_DATETIME + , LAST_EDIT_USER + ) VALUES ( + #{userId} + , #{saleStoreId} + , #{userId} + , #{category} + , #{name} + , #{nameKana} + , #{tel} + , #{fax} + , #{mail} + , #{groupId} + , 0 + , 0 + , #{registDatetime} + , #{lastEditDatetime} + , #{lastEditUser} + ); + + \ No newline at end of file