과거데이터 : API URL 수정,판매점&USER 테이블명 변경, 과거일자 기준일 추가

USER : 판매점&USER 동기화 API 추가
This commit is contained in:
DESKTOP-6ARNG1Q\dlsgk 2024-09-05 11:16:41 +09:00
parent 257a791e6a
commit cf8c045c2b
11 changed files with 361 additions and 13 deletions

View File

@ -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<NtrCtsCmpResponse> ntrCtsCmpExclDownData(@RequestBody NtrCtsCmpRequest ntrCtsCmpRequest) {
return excelDownService.selectNtrCtsCmpExclDownData(ntrCtsCmpRequest);

View File

@ -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; /* 종료일 */

View File

@ -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 */

View File

@ -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<UserRequest> userReqList) {
UserResponse userResponse = new UserResponse();
int resultCnt = userService.setUserSave(userReqList);
if (resultCnt > 0) userResponse.setCode("200");
else userResponse.setCode("500");
return userResponse;
}
}

View File

@ -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);
}

View File

@ -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<UserRequest> userReqList) {
int resultCnt = 0;
if (!userReqList.isEmpty()) {
for (UserRequest userReq : userReqList) {
resultCnt += userMapper.setUserSave(userReq);
}
}
return resultCnt;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -0,0 +1,15 @@
package com.interplug.qcast.biz.user.dto;
import lombok.Data;
@Data
public class UserResponse {
private String code;
private String message;
}

View File

@ -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 T_GUARANTEE F ON A.OBJECT_NO = F.OBJECT_NO AND A.PLAN_NO = F.PLAN_NO -->
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} /* 과거일자 기준일 */
<if test="sch_startDt != null and sch_startDt != '' and sch_endDt != null and sch_endDt != ''"> <!-- 견적일 -->
AND B.ESTIMATE_DETAIL_CREATE_DATE BETWEEN #{sch_startDt} and #{sch_endDt}
</if>
@ -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} /* 과거일자 기준일 */
<if test="sch_startDt != null and sch_startDt != '' and sch_endDt != null and sch_endDt != ''"> <!-- 견적일 -->
AND C.ESTIMATE_DETAIL_CREATE_DATE BETWEEN #{sch_startDt} and #{sch_endDt}
</if>
@ -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} /* 과거일자 기준일 */
<if test="sch_dtType != null and sch_dtType != ''">
<if test="sch_startDt != null and sch_startDt != '' and sch_endDt != null and sch_endDt != ''">
<choose>

View File

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.interplug.qcast.biz.user.UserMapper">
<insert id="setStoreSave" parameterType="com.interplug.qcast.biz.user.dto.StoreRequest" >
/* 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}
);
</insert>
<insert id="setUserSave" parameterType="com.interplug.qcast.biz.user.dto.UserRequest" >
/* 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}
);
</insert>
</mapper>