Procházet zdrojové kódy

단가관련 정보 수정

dwkim před 2 roky
rodič
revize
3559fb0810

+ 3 - 2
src/main/java/com/oqpo/api/entity/stinfo/StoreItemUnitEntity.java

@@ -23,7 +23,7 @@ public class StoreItemUnitEntity implements Serializable {
23 23
     private String unitNm ;
24 24
     private String curr ;
25 25
     private String currNm ;
26
-    private Integer unitAmt ;
26
+    private Long unitAmt ;
27 27
     private String storeId ;
28 28
     private String storeNm ;
29 29
     private String brandId ;
@@ -38,8 +38,9 @@ public class StoreItemUnitEntity implements Serializable {
38 38
     private String sysChgDttm ;
39 39
     private String sysChgId ;
40 40
     private Integer itemCnt;
41
-    private Integer spplyUnitAmt;
41
+    private Long spplyUnitAmt;
42 42
     private String unitTargetCd;
43 43
     private String unitTargetNm;
44
+
44 45
     private List<FileEntity> fileEntity ;
45 46
 }

+ 3 - 0
src/main/java/com/oqpo/api/enums/SystemMessageCode.java

@@ -45,6 +45,9 @@ public enum SystemMessageCode {
45 45
     ERR_NOTWAREHOUSE (40018, "입고수량은 납품수량보다 적거나 같아야 합니다.", HttpStatus.BAD_REQUEST),
46 46
     ERR_NONEXISTBRAND (40019, "브랜드에 소속된 사용자가 아닙니다.", HttpStatus.BAD_REQUEST),
47 47
     ERR_NOTEQWRITE (40020, "생성자만 수정 가능합니다.", HttpStatus.BAD_REQUEST),
48
+    ERR_EXISTUNIT (40021, "진행중인 단가계약가 있습니다.", HttpStatus.BAD_REQUEST),
49
+    ERR_CHGDTOPP (40022, "시작일과 종료일이 잘 못되어져 있습니다.", HttpStatus.BAD_REQUEST),
50
+    ERR_NOTCHGDT (40023, "시작일은 변경 불가 합니다.", HttpStatus.BAD_REQUEST),
48 51
     ;
49 52
 
50 53
 

+ 6 - 1
src/main/java/com/oqpo/api/mapper/stinfo/ItemUnitMapper.java

@@ -14,7 +14,12 @@ public interface ItemUnitMapper {
14 14
     int selectItemUnitGridCnt(@Param("sBrandId") String sBrandId, @Param("fromDt") String fromDt, @Param("toDt") String toDt, @Param("sUnitStCd") String sUnitStCd, @Param("sSpplyId") String sSpplyId, @Param("sClass1") String sClass1, @Param("sClass2") String sClass2, @Param("sClass3") String sClass3, @Param("sClass4") String sClass4, @Param("sItemNm") String sItemNm)throws Exception;
15 15
 
16 16
     ItemUnitEntity selectItemUnitInfo(@Param("brandId") String brandId, @Param("brandUnitUnqNo") String brandUnitUnqNo)throws Exception;
17
-    ItemUnitEntity selectItemUnitDupContInfoNo(@Param("brandId") String brandId, @Param("spplyId") String spplyId, @Param("itemId") String itemId, @Param("contSttDt") String contSttDt, @Param("contEndDt") String contEndDt)throws Exception;
17
+
18
+    int selectItemUnitDupCnt(@Param("brandId") String brandId, @Param("spplyId") String spplyId, @Param("itemId") String itemId, @Param("contSttDt") String contSttDt)throws Exception;
19
+
20
+    String selectItemUnitChaPass(@Param("brandUnitUnqNo") String brandUnitUnqNo, @Param("contSttDt") String contSttDt)throws Exception;
21
+
22
+
18 23
     int updateItemUnitContEnd(@Param("brandId") String brandId, @Param("brandUnitUnqNo") String brandUnitUnqNo, @Param("contEndDt") String contEndDt) throws Exception;
19 24
 
20 25
     int insertMergItemUnitInfo(@Param("userId") String userId, ItemUnitEntity entity) throws Exception;

+ 4 - 0
src/main/java/com/oqpo/api/mapper/stinfo/StoreItemUnitMapper.java

@@ -21,7 +21,11 @@ public interface StoreItemUnitMapper {
21 21
     List<StoreItemUnitEntity> selectStoreItemUnitInfo(@Param("brandId") String brandId, @Param("storeId") String storeId, @Param("contSttDt") String contSttDt, @Param("contEndDt") String contEndDt)throws Exception;
22 22
 
23 23
     String selectStoreItemUnitContDateInfo(@Param("brandId") String brandId, @Param("storeId") String storeId, @Param("contSttDt") String contSttDt,  @Param("contEndDt") String contEndDt)throws Exception;
24
+
25
+
26
+
24 27
     String selectStoreItemUnitExistYn(@Param("brandId") String brandId, @Param("storeId") String storeId, @Param("contSttDt") String contSttDt,  @Param("contEndDt") String contEndDt)throws Exception;
28
+    StoreItemUnitEntity selectStoreItemUnitContDtInfo(@Param("brandId") String brandId, @Param("storeId") String storeId)throws Exception;
25 29
 
26 30
 
27 31
     int updateStoreItemUnitContEnd(@Param("brandId") String brandId, @Param("storeId") String storeId, @Param("contEndDt") String contEndDt,  @Param("contSttDt") String contSttDt) throws Exception;

+ 59 - 23
src/main/java/com/oqpo/api/service/stinfo/ItemUnitService.java

@@ -30,7 +30,10 @@ import org.springframework.beans.factory.annotation.Autowired;
30 30
 import org.springframework.stereotype.Service;
31 31
 import org.springframework.transaction.annotation.Transactional;
32 32
 
33
+import java.lang.reflect.GenericDeclaration;
34
+import java.text.SimpleDateFormat;
33 35
 import java.util.ArrayList;
36
+import java.util.Date;
34 37
 import java.util.List;
35 38
 import java.util.stream.Collectors;
36 39
 
@@ -174,10 +177,18 @@ public class ItemUnitService extends CommonService {
174 177
 
175 178
             if ("C".equals(saveItemUnitInfolRequest.getViewCd())) {
176 179
                 //selectItemUnitDupContInfoNo  날짜 기준 계약 존재여부 파악
177
-                ItemUnitEntity condtEntity = itemUnitMapper.selectItemUnitDupContInfoNo(entity.getBrandId(), entity.getSpplyId(), entity.getItemId(), entity.getContSttDt(), entity.getContEndDt());
180
+                int dupCnt = itemUnitMapper.selectItemUnitDupCnt(entity.getBrandId(), entity.getSpplyId(), entity.getItemId(), entity.getContSttDt());
178 181
 
179
-                if (condtEntity != null && !"".equals(condtEntity.getBrandUnitUnqNo())) {
180
-                    itemUnitMapper.updateItemUnitContEnd(entity.getBrandId(), entity.getBrandUnitUnqNo(), entity.getContEndDt());
182
+                if (dupCnt != 0) {
183
+                    // 이미 진행중인 계약단가가 있습니다.
184
+                    throw new GlobalException(SystemMessageCode.ERR_EXISTUNIT);
185
+                }
186
+            } else {
187
+                String passChk = itemUnitMapper.selectItemUnitChaPass(entity.getBrandUnitUnqNo(),entity.getContSttDt());
188
+
189
+                if ("N".equals(passChk)) {
190
+                    // 시작일은 변경 불가
191
+                    throw new GlobalException(SystemMessageCode.ERR_NOTCHGDT);
181 192
                 }
182 193
             }
183 194
 
@@ -288,12 +299,19 @@ public class ItemUnitService extends CommonService {
288 299
             entity.setBrandId(saveStoreItemUnitInfolRequest.getBrandId());
289 300
             entity.setStoreId(saveStoreItemUnitInfolRequest.getStoreId());
290 301
 
302
+            //신규
303
+            if ("C".toString().equals(saveStoreItemUnitInfolRequest.getViewCd())) {
304
+                entity.setContSttDt(saveStoreItemUnitInfolRequest.getContSttDt().replaceAll("\\.",""));
305
+                entity.setContEndDt(saveStoreItemUnitInfolRequest.getContEndDt().replaceAll("\\.",""));
306
+            }
307
+
291 308
             List<StoreItemUnitEntity> gridUpdateData = saveStoreItemUnitInfolRequest.toCodeEntities(saveStoreItemUnitInfolRequest.getGridUpdateData());
292 309
             List<StoreItemUnitEntity> gridInsertData = saveStoreItemUnitInfolRequest.toCodeEntities(saveStoreItemUnitInfolRequest.getGridInsertData());
293 310
 
294
-            String contSttDt = "";
295
-            String contEndDt = "";
311
+            //String contSttDt = "";
312
+            //String contEndDt = "";
296 313
 
314
+            /*
297 315
             if (gridUpdateData.size() > 0) {
298 316
                 for (int k = 0; k < gridUpdateData.size(); k++) {
299 317
 
@@ -301,35 +319,53 @@ public class ItemUnitService extends CommonService {
301 319
                     contEndDt = gridUpdateData.get(k).getContEndDt().replaceAll("\\.", "");
302 320
                     gridUpdateData.get(k).setContSttDt(contSttDt);
303 321
                     gridUpdateData.get(k).setContEndDt(contEndDt);
304
-
305 322
                     entity.setContSttDt(contSttDt);
306 323
                     entity.setContEndDt(contEndDt);
307 324
                 }
308 325
             }
326
+            */
327
+
328
+                if (gridInsertData.size() > 0) {
329
+                    for (int k = 0; k < gridInsertData.size(); k++) {
330
+                        if ("C".toString().equals(saveStoreItemUnitInfolRequest.getViewCd())) {
331
+                            gridInsertData.get(k).setContSttDt(entity.getContSttDt());
332
+                            gridInsertData.get(k).setContEndDt(entity.getContEndDt());
333
+                        } else {
334
+                            gridInsertData.get(k).setContSttDt(gridInsertData.get(k).getContSttDt().replaceAll("\\.",""));
335
+                            gridInsertData.get(k).setContEndDt(gridInsertData.get(k).getContEndDt().replaceAll("\\.",""));
336
+                        }
337
+                    }
338
+                }
309 339
 
310
-            if (gridInsertData.size() > 0) {
311
-                for (int k = 0; k < gridInsertData.size(); k++) {
312 340
 
313
-                    contSttDt = gridInsertData.get(k).getContSttDt().replaceAll("\\.", "");
314
-                    contEndDt = gridInsertData.get(k).getContEndDt().replaceAll("\\.", "");
315
-                    gridInsertData.get(k).setContSttDt(contSttDt);
316
-                    gridInsertData.get(k).setContEndDt(contEndDt);
317 341
 
318
-                    entity.setContSttDt(contSttDt);
319
-                    entity.setContEndDt(contEndDt);
342
+            // 신규일경우 계약기간 날짜 체크함
343
+            if ("C".toString().equals(saveStoreItemUnitInfolRequest.getViewCd())) {
344
+                SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
345
+                Date chkenddate = formatter.parse(entity.getContEndDt());
346
+                Date chksttdate = formatter.parse(entity.getContSttDt());
347
+                int result1 = chkenddate.compareTo(chksttdate);
348
+                // 시작일과 종료일이 반대기간으로 되어져있을 경우
349
+                if (result1 < 0) {
350
+                    throw new GlobalException(SystemMessageCode.ERR_CHGDTOPP);
320 351
                 }
321
-            }
352
+
353
+                StoreItemUnitEntity dtEntity = storeItemUnitMapper.selectStoreItemUnitContDtInfo(entity.getBrandId(), entity.getStoreId());
354
+
355
+
356
+                if (dtEntity.getContSttDt() != null && !dtEntity.getContSttDt().equals("")) {
357
+                    // 서로 상이하면 기존 종료일자는 전송시작일보다 클경우 오류
322 358
 
323 359
 
324
-            // 동일 단가계약일자 존재시
325
-            String rcontEndDt = "";
326
-            String existYn = storeItemUnitMapper.selectStoreItemUnitExistYn(entity.getBrandId(), entity.getStoreId(), entity.getContSttDt(), entity.getContEndDt());
360
+                    // 문자열 -> Date
361
+                    Date dtEnddate = formatter.parse(dtEntity.getContEndDt());
362
+                    Date sttdate = formatter.parse(entity.getContSttDt());
363
+                    int result = dtEnddate.compareTo(sttdate);
327 364
 
328
-            if ("N".equals(existYn)) {
329
-                rcontEndDt =  storeItemUnitMapper.selectStoreItemUnitContDateInfo(entity.getBrandId(), entity.getStoreId(), entity.getContSttDt(), entity.getContEndDt());
330
-                if (!"".equals(rcontEndDt))
331
-                {
332
-                    storeItemUnitMapper.updateStoreItemUnitContEnd(entity.getBrandId(), entity.getStoreId(), rcontEndDt,  entity.getContSttDt());
365
+                    if (result > 0) {
366
+                        // 진행중 단가계약이 있습니다.
367
+                        throw new GlobalException(SystemMessageCode.ERR_EXISTUNIT);
368
+                    }
333 369
                 }
334 370
             }
335 371
 

+ 1 - 1
src/main/java/com/oqpo/api/web/dto/request/stinfo/itemUnit/SaveStoreItemUnitInfolRequest.java

@@ -84,7 +84,7 @@ public class SaveStoreItemUnitInfolRequest {
84 84
         private String curr;
85 85
 
86 86
         @ApiModelProperty(value = "단가금액")
87
-        private Integer unitAmt;
87
+        private Long unitAmt;
88 88
 
89 89
         @ApiModelProperty(value = "계약문서첨부파일번호")
90 90
         private String shortContFileNo;

+ 6 - 2
src/main/java/com/oqpo/api/web/dto/response/stinfo/itemUnit/StoreItemUnitInfoResponse.java

@@ -41,6 +41,7 @@ public class StoreItemUnitInfoResponse {
41 41
                 .gridRows(entities.stream()
42 42
                         .map(m -> StoreItemUnitInfoData.builder()
43 43
                                 .viewCd(m.getViewCd())
44
+                                .viewNm("C".toString().equals(m.getViewCd()) ? "추가" : "" )
44 45
                                 .storeUnitUnqNo(m.getStoreUnitUnqNo() == null ? "" :m.getStoreUnitUnqNo())
45 46
                                 .brandUnitUnqNo(m.getBrandUnitUnqNo() == null ? "" :m.getBrandUnitUnqNo())
46 47
                                 .brandId(m.getBrandId())
@@ -71,6 +72,9 @@ public class StoreItemUnitInfoResponse {
71 72
         @ApiModelProperty(value = "작업구분")
72 73
         private String viewCd;
73 74
 
75
+        @ApiModelProperty(value = "작업구분명")
76
+        private String viewNm;
77
+
74 78
         @ApiModelProperty(value = "매장단가고유번호")
75 79
         private String storeUnitUnqNo;
76 80
 
@@ -108,7 +112,7 @@ public class StoreItemUnitInfoResponse {
108 112
         private String currNm;
109 113
 
110 114
         @ApiModelProperty(value = "단가금액")
111
-        private Integer unitAmt;
115
+        private Long unitAmt;
112 116
 
113 117
         @ApiModelProperty(value = "대상여부")
114 118
         private String unitTargetCd;
@@ -117,7 +121,7 @@ public class StoreItemUnitInfoResponse {
117 121
         private String unitTargetNm;
118 122
 
119 123
         @ApiModelProperty(value = "공급사단가")
120
-        private Integer spplyUnitAmt ;
124
+        private Long spplyUnitAmt ;
121 125
     }
122 126
 
123 127
 

+ 10 - 4
src/main/resources/mybatis/sqlmaps/stinfo/ItemUnit.xml

@@ -110,14 +110,20 @@
110 110
         and   iunit.brand_id = #{brandId}
111 111
     </select>
112 112
 
113
-    <select id="selectItemUnitDupContInfoNo" resultType="com.oqpo.api.entity.stinfo.StoreItemUnitEntity">
114
-        select /* selectItemUnitDupContInfoNo */
115
-               brand_unit_unq_no
113
+    <select id="selectItemUnitDupCnt" resultType="int">
114
+        select /* selectItemUnitDupCnt */
115
+               count(*) as cnt
116 116
         from   brand_item_unit_info
117 117
         where  brand_id = #{brandId}
118 118
         and    spply_id = #{spplyId}
119 119
         and    item_id  = #{itemId}
120
-        and    cont_end_dt between #{contSttDt} and #{contEndDt}
120
+        and    date_format(cont_end_dt,'%Y%m%d') <![CDATA[ >= ]]> date_format(#{contSttDt} ,'%Y%m%d')
121
+    </select>
122
+
123
+    <select id="selectItemUnitChaPass" resultType="String">
124
+        select  case when cont_stt_dt = #{contSttDt} then 'Y' else 'N' end
125
+        from  brand_item_unit_info
126
+        where brand_unit_unq_no =#{brandUnitUnqNo}
121 127
     </select>
122 128
 
123 129
     <update id="updateItemUnitContEnd" >

+ 10 - 1
src/main/resources/mybatis/sqlmaps/stinfo/StoreItemUnit.xml

@@ -118,6 +118,7 @@
118 118
                                   and unit.cont_stt_dt = #{contSttDt} and unit.cont_end_dt = #{contEndDt}
119 119
                 left outer join store_base_info store on unit.store_id = store.store_id and store.store_id = #{storeId}
120 120
                 where item.brand_id = #{brandId}
121
+                order by view_cd
121 122
     </select>
122 123
 
123 124
     <select id="selectStoreItemUnitContDateInfo" resultType="String">
@@ -139,6 +140,14 @@
139 140
         and    cont_end_dt = #{contEndDt}
140 141
     </select>
141 142
 
143
+    <select id="selectStoreItemUnitContDtInfo" resultType="com.oqpo.api.entity.stinfo.StoreItemUnitEntity">
144
+        select  distinct nvl(max(cont_stt_dt) ,'') as cont_stt_dt, nvl(max(cont_end_dt) ,'') as cont_end_dt
145
+        from  store_item_unit_info
146
+        where  brand_id = #{brandId}
147
+        and    store_id = #{storeId}
148
+    </select>
149
+
150
+
142 151
     <update id="updateStoreItemUnitContEnd" >
143 152
         update /* updateStoreItemUnitContEnd */
144 153
                 store_item_unit_info
@@ -218,7 +227,7 @@
218 227
                  item.store_sale_unit_amt as usit_amt, 'Y' as unit_target_cd,
219 228
                  fn_code_nm('DSTRBT_COST_UNIT','Y') as unit_target_nm,
220 229
                  item.unit_amt as spply_unit_amt,
221
-                 item.brand_unit_unq_no
230
+                 item.brand_unit_unq_no, item.store_sale_unit_amt as unit_amt
222 231
 
223 232
          from   brand_item_unit_info item
224 233
          where  item.brand_id = #{brandId}