From 141e46f15008fd598160e5fffcceae8731b46740 Mon Sep 17 00:00:00 2001 From: rjy1537 Date: Fri, 23 Jan 2026 15:15:18 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=EC=8B=A0=EA=B7=9C=20=ED=8C=90=EB=A7=A4?= =?UTF-8?q?=EC=A0=90=20=EB=93=B1=EB=A1=9D=EC=8B=9C=202=EC=B0=A8=EC=9D=B4?= =?UTF-8?q?=EC=83=81=EC=9D=B8=EA=B2=BD=EC=9A=B0=20=EC=A0=95=EA=B0=80=20?= =?UTF-8?q?=EA=B0=80=EA=B2=A9=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interplug/qcast/biz/user/UserMapper.java | 18 +++++++ .../interplug/qcast/biz/user/UserService.java | 8 +++ .../resources/mappers/user/userMapper.xml | 52 ++++++++++++++++--- 3 files changed, 71 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java index 26ea7cb4..aa862d29 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java @@ -54,6 +54,24 @@ public interface UserMapper { */ int setUserSave(UserRequest userReqList) throws Exception; + /** + * 판매점의 정가가격 등록 여부 체크(2차점이상인 판매점만 해당) + * + * @param storeReq + * @return + * @throws Exception + */ + int getStoreUnitPriceChk(StoreRequest storeReq) throws Exception; + + /** + * 판매점의 정가가격 등록 + * + * @param storeReq + * @return + * @throws Exception + */ + int setStoreUnitPrice(StoreRequest storeReq) throws Exception; + /** * 영업사원 삭제 * diff --git a/src/main/java/com/interplug/qcast/biz/user/UserService.java b/src/main/java/com/interplug/qcast/biz/user/UserService.java index 74bb9e32..dbad77a2 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserService.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserService.java @@ -74,6 +74,14 @@ public class UserService { userMapper.setStoreInfoSave(storeRequest); userMapper.setStoreSapCdSave(storeRequest); userMapper.setStoreNorthModuleSave(storeRequest); + + // 2차점 이상인 판매점 신규 등록시 판매점에 정가 가격 추가 + if ("1".equals(storeRequest.getSecondAgentFlg())) { + if (userMapper.getStoreUnitPriceChk(storeRequest) == 0) { + // 등록된 가격이 없는경우 정가 가격 등록 + userMapper.setStoreUnitPrice(storeRequest); + } + } } catch (Exception e) { log.error(e.getMessage()); } diff --git a/src/main/resources/mappers/user/userMapper.xml b/src/main/resources/mappers/user/userMapper.xml index 3b81b23e..c6c201dc 100644 --- a/src/main/resources/mappers/user/userMapper.xml +++ b/src/main/resources/mappers/user/userMapper.xml @@ -87,8 +87,9 @@ , DISP_FAX = #{dispFax} , DISP_MAIL = #{dispMail} , SALE_STORE_LEVEL = #{saleStoreLevel} + , PRICE_PATTERN = (CASE WHEN ISNULL(PRICE_PATTERN, '') = '' AND #{secondAgentFlg} = '1' THEN '510' ELSE PRICE_PATTERN END) , DEL_FLG = #{delFlg} - , LAST_EDIT_DATETIME = #{lastEditDatetime} + , LAST_EDIT_DATETIME = GETDATE() , LAST_EDIT_USER = #{lastEditUser} WHEN NOT MATCHED THEN INSERT ( @@ -107,6 +108,7 @@ , SECOND_AGENT_FLG , FIRST_AGENT_ID , PARENT_SALE_AGENT_ID + , PRICE_PATTERN , OUTPUT_COMP_CLASS -- 출력 대비표 분류 , INDUSTRIAL_OUTPUT_COMP_CLASS -- 산업출력 대비표 출력 , FIXED_PRICE_FLG -- 정가 표시 @@ -143,6 +145,7 @@ , #{secondAgentFlg} , #{firstAgentId} , #{parentSaleAgentId} + , (CASE WHEN #{secondAgentFlg} = '1' THEN '510' ELSE NULL END) , 0 -- 출력 대비표 분류 , 0 -- 산업출력 대비표 출력 , 0 -- 정가 표시 @@ -161,7 +164,7 @@ , #{registDatetime} , 0 , 0 -- 적설 - , #{lastEditDatetime} + , GETDATE() , #{lastEditUser} ); @@ -175,7 +178,7 @@ WHEN MATCHED THEN UPDATE SET BIZ_NO = #{bizNo} - , LAST_EDIT_DATETIME = (CASE WHEN #{lastEditDatetime} != '' THEN #{lastEditDatetime} ELSE #{registDatetime} END) + , LAST_EDIT_DATETIME = GETDATE() WHEN NOT MATCHED THEN INSERT ( SALE_STORE_ID @@ -184,7 +187,7 @@ ) VALUES ( #{saleStoreId} , #{bizNo} - , (CASE WHEN #{lastEditDatetime} != '' THEN #{lastEditDatetime} ELSE #{registDatetime} END) + , GETDATE() ); @@ -207,7 +210,7 @@ , TEL = #{tel} , FAX = #{fax} , MAIL = #{mail} - , LAST_EDIT_DATETIME = #{lastEditDatetime} + , LAST_EDIT_DATETIME = GETDATE() , LAST_EDIT_USER = #{lastEditUser} -- , GROUP_ID -- '70000' , '60000' -- , MODULE_SELECT_GROUP_ID -- 모듈 선택 그룹 ('G1','GA' ,'G2') @@ -226,6 +229,8 @@ , FAX , MAIL , GROUP_ID + , MODULE_SELECT_GROUP_ID + , VERSION_MANAGEMENT_ID , DISP_COST_PRICE , DISP_SELLING_PRICE , REGIST_DATETIME @@ -242,14 +247,47 @@ , #{fax} , #{mail} , #{groupId} + , 'G1' /* 일반 공개용 */ + , 'hanbaiten' /* 일반 판매점 */ , 0 , 0 - , #{registDatetime} - , #{lastEditDatetime} + , GETDATE() + , GETDATE() , #{lastEditUser} ); + + + + /* sqlid : com.interplug.qcast.user.setStoreUnitPrice */ + INSERT INTO M_SALE_STORE_PRICE( + SALE_STORE_ID + , ITEM_ID + , COST_PRICE + , SALE_PRICE + , DISP_FLG + , LAST_EDIT_DATETIME + , LAST_EDIT_USER + ) + SELECT #{saleStoreId} + , ITEM_ID + , COST_PRICE + , SALE_PRICE + , '1' + , GETDATE() + , #{lastEditUser} + FROM M_PRICE_PATTERN_MONEY + WHERE PRICE_PATTERN = '510' + + /* sqlid : com.interplug.qcast.user.setStoreNorthModuleSave */ MERGE INTO M_SALES_STORE_NORTH_MODULE AS A From fe1b0da69518eaeea4d95912b454b2a35cd088a3 Mon Sep 17 00:00:00 2001 From: rjy1537 Date: Mon, 26 Jan 2026 14:13:05 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=ED=8C=90=EB=A7=A4=EC=A0=90=20=EB=8F=99?= =?UTF-8?q?=EA=B8=B0=ED=99=94=EC=8B=9C=20=EA=B0=80=EA=B2=A9=20=ED=8C=A8?= =?UTF-8?q?=ED=84=B4=20=EC=B6=94=EA=B0=80(1=EC=B0=A8=ED=8C=90=EB=A7=A4?= =?UTF-8?q?=EC=A0=90=20:=20bos=EB=9E=AD=ED=81=AC,=202=EC=B0=A8=ED=8C=90?= =?UTF-8?q?=EB=A7=A4=EC=A0=90:=EC=A0=95=EA=B0=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/interplug/qcast/biz/user/UserMapper.java | 11 ++++++++++- .../com/interplug/qcast/biz/user/UserService.java | 13 +++++++------ .../interplug/qcast/biz/user/dto/StoreRequest.java | 3 +++ src/main/resources/mappers/user/userMapper.xml | 11 ++++++++++- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java index aa862d29..d2ad3b01 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java @@ -55,7 +55,16 @@ public interface UserMapper { int setUserSave(UserRequest userReqList) throws Exception; /** - * 판매점의 정가가격 등록 여부 체크(2차점이상인 판매점만 해당) + * 판매점의 등록 여부 체크 + * + * @param storeReq + * @return + * @throws Exception + */ + int getStoreChk(StoreRequest storeReq) throws Exception; + + /** + * 판매점의 가격 등록 여부 체크 * * @param storeReq * @return diff --git a/src/main/java/com/interplug/qcast/biz/user/UserService.java b/src/main/java/com/interplug/qcast/biz/user/UserService.java index dbad77a2..3cc159d5 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserService.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserService.java @@ -70,17 +70,18 @@ public class UserService { // 판매점 동기화 for (StoreRequest storeRequest : storeList) { try { + int storeChk = userMapper.getStoreChk(storeRequest); userMapper.setStoreSave(storeRequest); userMapper.setStoreInfoSave(storeRequest); userMapper.setStoreSapCdSave(storeRequest); userMapper.setStoreNorthModuleSave(storeRequest); - // 2차점 이상인 판매점 신규 등록시 판매점에 정가 가격 추가 - if ("1".equals(storeRequest.getSecondAgentFlg())) { - if (userMapper.getStoreUnitPriceChk(storeRequest) == 0) { - // 등록된 가격이 없는경우 정가 가격 등록 - userMapper.setStoreUnitPrice(storeRequest); - } + // 신규판매점 등록 이면서 판매점 가격이 등록이 안되어 있는 경우 추가 + if (storeRequest.getPricePattern() != null + && storeChk == 0 + && userMapper.getStoreUnitPriceChk(storeRequest) == 0) { + // 등록된 가격이 없는경우 정가 가격 등록 + userMapper.setStoreUnitPrice(storeRequest); } } catch (Exception e) { log.error(e.getMessage()); 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 index 20af621f..7b93f1e3 100644 --- a/src/main/java/com/interplug/qcast/biz/user/dto/StoreRequest.java +++ b/src/main/java/com/interplug/qcast/biz/user/dto/StoreRequest.java @@ -95,6 +95,9 @@ public class StoreRequest { @Schema(description = "수정자") private String lastEditUser; + @Schema(description = "가격 패턴(1차점 : BOS 랭크, 2차점 : 정가)") + private String pricePattern; + @Schema(description = "북쪽 모듈 여부") private String northModuleFlg; } diff --git a/src/main/resources/mappers/user/userMapper.xml b/src/main/resources/mappers/user/userMapper.xml index c6c201dc..4e8ee2e8 100644 --- a/src/main/resources/mappers/user/userMapper.xml +++ b/src/main/resources/mappers/user/userMapper.xml @@ -257,6 +257,15 @@ ); + + - /* sqlid : com.interplug.qcast.user.getStoreChk */ + - + + /* sqlid : com.interplug.qcast.user.deleteStoreUnitPrice */ + DELETE FROM M_SALE_STORE_PRICE + WHERE SALE_STORE_ID = #{saleStoreId} + /* sqlid : com.interplug.qcast.user.setStoreUnitPrice */ From 132cfa6d0a8754d89b6c36ae664fb8bc37eb8102 Mon Sep 17 00:00:00 2001 From: rjy1537 Date: Mon, 26 Jan 2026 17:32:57 +0900 Subject: [PATCH 5/9] =?UTF-8?q?=ED=8C=90=EB=A7=A4=EC=A0=90=20=EA=B0=80?= =?UTF-8?q?=EA=B2=A9=20=EC=A0=95=EB=B3=B4=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interplug/qcast/biz/user/UserMapper.java | 4 +- .../interplug/qcast/biz/user/UserService.java | 70 ++++++++++++------- .../resources/mappers/user/userMapper.xml | 6 +- 3 files changed, 50 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java index da8ae562..73011edc 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java @@ -55,13 +55,13 @@ public interface UserMapper { int setUserSave(UserRequest userReqList) throws Exception; /** - * 판매점 가격 패턴 조회 + * 판매점 레벨 조회 * * @param storeReq * @return * @throws Exception */ - String getStorePricePattern(StoreRequest storeReq) throws Exception; + String getStoreLevel(StoreRequest storeReq) throws Exception; /** * 판매점의 정가가격 삭제 diff --git a/src/main/java/com/interplug/qcast/biz/user/UserService.java b/src/main/java/com/interplug/qcast/biz/user/UserService.java index 514f8f4d..64df59c2 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserService.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserService.java @@ -28,20 +28,25 @@ public class UserService { * @throws Exception */ public int setStoreSave(StoreRequest storeReq) throws Exception { - String prevPricePattern = userMapper.getStorePricePattern(storeReq); // 등록된 가격 랭크 조회 - String pricePattern = - StringUtils.isEmpty(storeReq.getPricePattern()) ? "" : storeReq.getPricePattern(); + String prevSaleStoreLevel = userMapper.getStoreLevel(storeReq); // 등록된 판매점 레벨 + String saleStoreLevel = + StringUtils.isEmpty(storeReq.getSaleStoreLevel()) ? "" : storeReq.getSaleStoreLevel(); int resultCnt = userMapper.setStoreSave(storeReq); userMapper.setStoreInfoSave(storeReq); userMapper.setStoreSapCdSave(storeReq); userMapper.setStoreNorthModuleSave(storeReq); - // 가격 패턴이 이전에 등록된 가격 패턴과 다른경우 적용 - if (storeReq.getPricePattern() != null && !prevPricePattern.equals(pricePattern)) { - // 등록된 가격이 없는경우 정가 가격 삭제후 저장 - userMapper.deleteStoreUnitPrice(storeReq); - userMapper.setStoreUnitPrice(storeReq); + log.info("setStoreSave ==================> ", prevSaleStoreLevel + ", " + saleStoreLevel); + // 신규 판매점 이거나 1차판매점에서 하위판매점으로 변경된 경우 가격 등록 + if (prevSaleStoreLevel == null + || (!prevSaleStoreLevel.equals(saleStoreLevel) && "1".equals(prevSaleStoreLevel))) { + // 판매점에 등록된 가격 삭제 후 가격 패턴의 아이템 등록 + log.info("setStoreSave prevSaleStoreLevel =================> 시작"); + int deleteCnt = userMapper.deleteStoreUnitPrice(storeReq); + int priceCnt = userMapper.setStoreUnitPrice(storeReq); + log.info( + "setStoreSave prevSaleStoreLevel ==================> 종료" + deleteCnt + ", " + priceCnt); } return resultCnt; } @@ -82,22 +87,30 @@ public class UserService { // 판매점 동기화 for (StoreRequest storeRequest : storeList) { try { - String prevPricePattern = userMapper.getStorePricePattern(storeRequest); // 등록된 가격 랭크 조회 - String pricePattern = - StringUtils.isEmpty(storeRequest.getPricePattern()) + String prevSaleStoreLevel = userMapper.getStoreLevel(storeRequest); // 등록된 판매점 레벨 + String saleStoreLevel = + StringUtils.isEmpty(storeRequest.getSaleStoreLevel()) ? "" - : storeRequest.getPricePattern(); + : storeRequest.getSaleStoreLevel(); userMapper.setStoreSave(storeRequest); userMapper.setStoreInfoSave(storeRequest); userMapper.setStoreSapCdSave(storeRequest); userMapper.setStoreNorthModuleSave(storeRequest); - // 가격 패턴이 이전에 등록된 가격 패턴과 다른경우 적용 - if (storeRequest.getPricePattern() != null && !prevPricePattern.equals(pricePattern)) { - // 등록된 가격이 없는경우 정가 가격 삭제후 저장 - userMapper.deleteStoreUnitPrice(storeRequest); - userMapper.setStoreUnitPrice(storeRequest); + log.info("setStoreSave ==================> ", prevSaleStoreLevel + ", " + saleStoreLevel); + // 신규 판매점 이거나 1차판매점에서 하위판매점으로 변경된 경우 가격 등록 + if (prevSaleStoreLevel == null + || (!prevSaleStoreLevel.equals(saleStoreLevel) && "1".equals(prevSaleStoreLevel))) { + // 판매점에 등록된 가격 삭제 후 가격 패턴의 아이템 등록 + log.info("setStoreSave prevSaleStoreLevel =================> 시작"); + int deleteCnt = userMapper.deleteStoreUnitPrice(storeRequest); + int priceCnt = userMapper.setStoreUnitPrice(storeRequest); + log.info( + "setStoreSave prevSaleStoreLevel ==================> 종료" + + deleteCnt + + ", " + + priceCnt); } } catch (Exception e) { log.error(e.getMessage()); @@ -167,20 +180,27 @@ public class UserService { List storeList = storeSyncResponse.getStoreList(); for (StoreRequest storeRequest : storeList) { - String prevPricePattern = userMapper.getStorePricePattern(storeRequest); // 등록된 가격 랭크 조회 - String pricePattern = - StringUtils.isEmpty(storeRequest.getPricePattern()) ? "" : storeRequest.getPricePattern(); + String prevSaleStoreLevel = userMapper.getStoreLevel(storeRequest); // 등록된 판매점 레벨 + String saleStoreLevel = + StringUtils.isEmpty(storeRequest.getSaleStoreLevel()) + ? "" + : storeRequest.getSaleStoreLevel(); userMapper.setStoreSave(storeRequest); userMapper.setStoreInfoSave(storeRequest); userMapper.setStoreSapCdSave(storeRequest); userMapper.setStoreNorthModuleSave(storeRequest); - // 가격 패턴이 이전에 등록된 가격 패턴과 다른경우 적용 - if (storeRequest.getPricePattern() != null && !prevPricePattern.equals(pricePattern)) { - // 등록된 가격이 없는경우 정가 가격 삭제후 저장 - userMapper.deleteStoreUnitPrice(storeRequest); - userMapper.setStoreUnitPrice(storeRequest); + log.info("setStoreSave ==================> ", prevSaleStoreLevel + ", " + saleStoreLevel); + // 신규 판매점 이거나 1차판매점에서 하위판매점으로 변경된 경우 가격 등록 + if (prevSaleStoreLevel == null + || (!prevSaleStoreLevel.equals(saleStoreLevel) && "1".equals(prevSaleStoreLevel))) { + // 판매점에 등록된 가격 삭제 후 가격 패턴의 아이템 등록 + log.info("setStoreSave prevSaleStoreLevel =================> 시작"); + int deleteCnt = userMapper.deleteStoreUnitPrice(storeRequest); + int priceCnt = userMapper.setStoreUnitPrice(storeRequest); + log.info( + "setStoreSave prevSaleStoreLevel ==================> 종료" + deleteCnt + ", " + priceCnt); } } diff --git a/src/main/resources/mappers/user/userMapper.xml b/src/main/resources/mappers/user/userMapper.xml index 136d287e..f338dc87 100644 --- a/src/main/resources/mappers/user/userMapper.xml +++ b/src/main/resources/mappers/user/userMapper.xml @@ -257,10 +257,10 @@ ); - + /* sqlid : com.interplug.qcast.user.getStoreLevel */ SELECT - PRICE_PATTERN + SALE_STORE_LEVEL FROM M_SALES_STORE WHERE SALE_STORE_ID = #{saleStoreId} From a52842776d5c3700ca3f6dcb58c21039641fbaef Mon Sep 17 00:00:00 2001 From: ysCha Date: Tue, 27 Jan 2026 17:39:34 +0900 Subject: [PATCH 6/9] [1429] TT.DISP_ORDER, TT.ITEM_ID --- src/main/resources/mappers/displayItem/displayItemMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mappers/displayItem/displayItemMapper.xml b/src/main/resources/mappers/displayItem/displayItemMapper.xml index b28eb556..f258ae50 100644 --- a/src/main/resources/mappers/displayItem/displayItemMapper.xml +++ b/src/main/resources/mappers/displayItem/displayItemMapper.xml @@ -103,7 +103,7 @@ AND MII.SALT_AFFECTED_FLG = #{saltAffectedFlg} ) TT - ORDER BY TT.DISP_ORDER + ORDER BY TT.DISP_ORDER, TT.ITEM_ID