소스 검색

구매발주 취소처리 및 구매요청정보에 발주상태정보 추가

dwkim 2 년 전
부모
커밋
7615da2048

+ 2 - 0
src/main/java/com/oqpo/api/entity/pomng/PchReqDtlPtclEntity.java

@@ -29,6 +29,8 @@ public class PchReqDtlPtclEntity implements Serializable {
29 29
     private String storeUnitUnqNo;
30 30
     private String unitGubun;
31 31
     private Integer pchOrdAmt;
32
+    private String podrDtlStCd;
33
+    private String podrDtlStNm;
32 34
 
33 35
 
34 36
 }

+ 5 - 0
src/main/java/com/oqpo/api/mapper/pomng/PchOrdMapper.java

@@ -29,4 +29,9 @@ public interface PchOrdMapper {
29 29
     List<PchOdrDtlPtclEntity> selectOdrDtlList(@Param("pchPodrUnqNo") String pchPodrUnqNo);
30 30
 
31 31
     List<PchOdrDtlPtclEntity> selectOdrDtlStatusList(@Param("pchPodrUnqNo") String pchPodrUnqNo);
32
+
33
+    int updateCancelPodrDtl(@Param("userId") String userId, List<PchOdrDtlPtclEntity> gridUpdateData) throws Exception;
34
+    int updateChgPodrStCd(@Param("userId") String userId, @Param("pchOdrStCd") String pchOdrStCd, @Param("pchPodrUnqNo") String pchPodrUnqNo) throws Exception;
35
+
36
+
32 37
 }

+ 3 - 0
src/main/java/com/oqpo/api/mapper/stinfo/StoreBaseInfoMapper.java

@@ -26,4 +26,7 @@ public interface StoreBaseInfoMapper {
26 26
     StoreBaseInfoEntity selectStoreLoanInfo(@Param("brandId") String brandId, @Param("storeId") String storeId)throws Exception;
27 27
 
28 28
     int updateCloseStore(@Param("userId") String userId, @Param("brandId") String brandId, @Param("afflShopId") String afflShopId) throws Exception;
29
+
30
+    String selectStoreLoanMgntUnqNo( @Param("storeId") String storeId)throws Exception;
31
+
29 32
 }

+ 59 - 8
src/main/java/com/oqpo/api/service/pomng/PchOrdService.java

@@ -10,12 +10,15 @@ import com.oqpo.api.entity.pomng.PchReqDtlPtclEntity;
10 10
 import com.oqpo.api.entity.stockmng.StckMgntBaseInfoEntity;
11 11
 import com.oqpo.api.enums.SystemMessageCode;
12 12
 import com.oqpo.api.exception.GlobalException;
13
+import com.oqpo.api.mapper.loanmng.LoanStateMapper;
13 14
 import com.oqpo.api.mapper.oper.UserMngMapper;
14 15
 import com.oqpo.api.mapper.pomng.PchOrdMapper;
15 16
 import com.oqpo.api.mapper.pomng.PchReqMapper;
17
+import com.oqpo.api.mapper.stinfo.StoreBaseInfoMapper;
16 18
 import com.oqpo.api.mapper.stockmng.StockMngMapper;
17 19
 import com.oqpo.api.service.CommonService;
18 20
 import com.oqpo.api.web.dto.request.GridRequest;
21
+import com.oqpo.api.web.dto.request.pomng.pchOrd.CancelPchOrdDtlRequest;
19 22
 import com.oqpo.api.web.dto.request.pomng.pchOrd.PchReqOrdInitRequest;
20 23
 import com.oqpo.api.web.dto.request.pomng.pchOrd.SavePchOrdRequest;
21 24
 import com.oqpo.api.web.dto.response.GridResponse;
@@ -49,6 +52,12 @@ public class PchOrdService extends CommonService {
49 52
     @Autowired
50 53
     private PchReqMapper pchReqMapper;
51 54
 
55
+    @Autowired
56
+    private StoreBaseInfoMapper storeBaseInfoMapper;
57
+
58
+    @Autowired
59
+    private LoanStateMapper loanStateMapper;
60
+
52 61
 
53 62
     /* 구매요청건 발주 가능 여부 체크 */
54 63
     public String  chkPchReqUseOrd(String userId, PchReqOrdInitRequest pchReqOrdInitRequest ) throws Exception {
@@ -414,6 +423,48 @@ public class PchOrdService extends CommonService {
414 423
     }
415 424
 
416 425
 
426
+    /*
427
+      발주 취소처리
428
+     */
429
+    @Transactional
430
+    public void cancelPchOrdDtl(String userId, CancelPchOrdDtlRequest cancelPchOrdDtlRequest) throws Exception {
431
+        try {
432
+            // 품목 삭제 상태처리
433
+            Integer podrAmt = 0 ;
434
+            List<PchOdrDtlPtclEntity> gridUpdateData = cancelPchOrdDtlRequest.toCodeEntities(cancelPchOrdDtlRequest.getGridUpdateData());
435
+            if (gridUpdateData.size() > 0) {
436
+                pchOrdMapper.updateCancelPodrDtl(userId,  gridUpdateData) ;
437
+
438
+                for (int i = 0 ; i < gridUpdateData.size() ; i++) {
439
+                    PchOdrDtlPtclEntity delItem = gridUpdateData.get(i);
440
+                    podrAmt = podrAmt + delItem.getPodrAmt();
441
+                }
442
+            }
443
+
444
+            //발주취소로 인한 발주 head 상태값 변경처리  pchPodrUnqNo
445
+            String pchOdrStCd = selectOdrDtlStatusList(cancelPchOrdDtlRequest.getPchPodrUnqNo());
446
+            pchOrdMapper.updateChgPodrStCd(userId, pchOdrStCd, cancelPchOrdDtlRequest.getPchPodrUnqNo());
447
+
448
+            // 매장 구매요청 발주일경우 사용금액 차감 처리함
449
+            if (!"".equals(cancelPchOrdDtlRequest.getStoreId())) {
450
+                String loanMgntUnqNo = storeBaseInfoMapper.selectStoreLoanMgntUnqNo(cancelPchOrdDtlRequest.getStoreId());
451
+
452
+                if (loanMgntUnqNo != null) {
453
+                    loanStateMapper.updateloanMinusPchReqUseAmt(loanMgntUnqNo, cancelPchOrdDtlRequest.getStoreId(), podrAmt);
454
+                }
455
+            }
456
+
457
+
458
+        } catch (GlobalException e) {
459
+            //e.getStackTrace();
460
+            e.printStackTrace();
461
+            throw new GlobalException(e.getSystemMessageCode());
462
+        } catch (Exception e) {
463
+            e.printStackTrace();
464
+            throw new RuntimeException();
465
+        }
466
+    }
467
+
417 468
     public String  selectOdrDtlStatusList(String  pchReqUnqNo) throws Exception {
418 469
         //PCH_ODR_ST_CD
419 470
         String pchOdrStCd = "";
@@ -426,23 +477,23 @@ public class PchOrdService extends CommonService {
426 477
 
427 478
         for (int i = 0 ; i < dtlEntity.size() ; i++ ) {
428 479
             PchOdrDtlPtclEntity entity = dtlEntity.get(i);
429
-            if ( "POD0".equals(entity.getPodrDtlStCd())) {
480
+            if ( "POD0".equals(entity.getPodrDtlStCd())) {  // 요청
430 481
                 pod0 = pod0 + entity.getPodrStatusCnt() ;
431
-            } else if ( "POD1".equals(entity.getPodrDtlStCd()) ||  "POD3".equals(entity.getPodrDtlStCd())) {
482
+            } else if ( "POD1".equals(entity.getPodrDtlStCd()) ||  "POD3".equals(entity.getPodrDtlStCd())) {  // 접수 ,출하
432 483
                 pod1 = pod1 + entity.getPodrStatusCnt() ;
433
-            } else if ( "POD2".equals(entity.getPodrDtlStCd())) {
484
+            } else if ( "POD2".equals(entity.getPodrDtlStCd())) {  //발주취소
434 485
                 pod2 = pod2 + entity.getPodrStatusCnt() ;
435
-            } else if ( "POD4".equals(entity.getPodrDtlStCd())) {
486
+            } else if ( "POD4".equals(entity.getPodrDtlStCd())) {  //입고완료
436 487
                 pod4 = pod4 + entity.getPodrStatusCnt() ;
437 488
             }
438 489
         }
439 490
 
440 491
         if (pod0 > 0 ) {
441
-            pchOdrStCd = "PO20";
442
-        } else if ( pod0 == 0 || pod2 == 0 ) {
443
-            pchOdrStCd = "PO99";
492
+            pchOdrStCd = "PO20";  //요청
493
+        } else if ( pod0 == 0 && pod1 == 0 &&  pod4 == 0 ) {
494
+            pchOdrStCd = "PO99";  // 취소
444 495
         } else {
445
-            pchOdrStCd = "PO30";
496
+            pchOdrStCd = "PO30";  // 접수
446 497
         }
447 498
 
448 499
         return pchOdrStCd;

+ 21 - 1
src/main/java/com/oqpo/api/web/controller/pomng/PchOrdController.java

@@ -3,6 +3,7 @@ package com.oqpo.api.web.controller.pomng;
3 3
 import com.oqpo.api.enums.DataMessageCode;
4 4
 import com.oqpo.api.enums.SystemMessageCode;
5 5
 import com.oqpo.api.service.pomng.PchOrdService;
6
+import com.oqpo.api.web.dto.request.pomng.pchOrd.CancelPchOrdDtlRequest;
6 7
 import com.oqpo.api.web.dto.request.pomng.pchOrd.PchOrdSearchGridRequest;
7 8
 import com.oqpo.api.web.dto.request.pomng.pchOrd.PchReqOrdInitRequest;
8 9
 import com.oqpo.api.web.dto.request.pomng.pchOrd.SavePchOrdRequest;
@@ -104,7 +105,7 @@ public class PchOrdController {
104 105
     })
105 106
     @ApiOperation(value = "구매발주 정보 저장")
106 107
     @PostMapping("/save-pchPo")
107
-    public ResponseEntity<SaveResponse> savePchReq(@ApiIgnore String userId, @RequestBody @Valid SavePchOrdRequest savePchOrdRequest) throws Exception {
108
+    public ResponseEntity<SaveResponse> savePchOdr(@ApiIgnore String userId, @RequestBody @Valid SavePchOrdRequest savePchOrdRequest) throws Exception {
108 109
         pchOrdService.savePchOrdInfo(userId,  savePchOrdRequest);
109 110
         return ResponseEntity.ok(SaveResponse.toDTO(SystemMessageCode.SAVE_OK));
110 111
     }
@@ -144,4 +145,23 @@ public class PchOrdController {
144 145
     }
145 146
 
146 147
 
148
+    /**
149
+     * 설명 : 구매발주 취소처리
150
+     *
151
+     * @param userId
152
+     * @param savePchReqlRequest
153
+     * @return SaveResponse
154
+     * @throws Exception
155
+     */
156
+
157
+    @ApiImplicitParams({
158
+            @ApiImplicitParam(name = "X-AUTH-TOKEN", value = "CONN-KEY", required = true, dataType = "String", paramType = "header")
159
+    })
160
+    @ApiOperation(value = "구매발주 취소 처리")
161
+    @PostMapping("/cancel-pchPo")
162
+    public ResponseEntity<SaveResponse> cancelPchOdr(@ApiIgnore String userId, @RequestBody @Valid CancelPchOrdDtlRequest cancelPchOrdDtlRequest) throws Exception {
163
+        pchOrdService.cancelPchOrdDtl(userId,  cancelPchOrdDtlRequest);
164
+        return ResponseEntity.ok(SaveResponse.toDTO(SystemMessageCode.SAVE_OK));
165
+    }
166
+
147 167
 }

+ 55 - 0
src/main/java/com/oqpo/api/web/dto/request/pomng/pchOrd/CancelPchOrdDtlRequest.java

@@ -0,0 +1,55 @@
1
+package com.oqpo.api.web.dto.request.pomng.pchOrd;
2
+
3
+import com.oqpo.api.entity.pomng.PchOdrDtlPtclEntity;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.*;
6
+
7
+import javax.validation.constraints.NotBlank;
8
+import java.util.ArrayList;
9
+import java.util.List;
10
+
11
+@Getter
12
+@Setter
13
+public class CancelPchOrdDtlRequest {
14
+
15
+    @NotBlank
16
+    @ApiModelProperty(value = "CRUD")
17
+    private String viewCd;
18
+
19
+    @NotBlank
20
+    @ApiModelProperty(value = "발주번호")
21
+    private String pchPodrUnqNo;
22
+
23
+
24
+    @ApiModelProperty(value = "매장아이디")
25
+    private String storeId;
26
+
27
+    @ApiModelProperty(value = "삭제대상 발주 품목 리스트")
28
+    private List<CancelPoItemList> gridUpdateData;
29
+
30
+
31
+    public List<PchOdrDtlPtclEntity> toCodeEntities(List<CancelPoItemList> gridData) {
32
+        List<PchOdrDtlPtclEntity> entities = new ArrayList<>();
33
+        if (gridData == null || gridData.size() == 0)
34
+            return entities;
35
+
36
+        gridData.forEach(x -> {
37
+            PchOdrDtlPtclEntity entity = new PchOdrDtlPtclEntity();
38
+            entity.setPchPodrUnqNo(x.getPchPodrUnqNo());
39
+            entity.setPchPodrDtlNo(x.getPchPodrDtlNo());
40
+            entity.setPodrAmt(x.getPodrAmt());
41
+            entities.add(entity);
42
+        });
43
+        return entities;
44
+    }
45
+
46
+    @Getter
47
+    @Builder
48
+    @AllArgsConstructor(access = AccessLevel.PROTECTED)
49
+    static class CancelPoItemList {
50
+
51
+        @ApiModelProperty(value = "구매요청고유번호") private String pchPodrUnqNo;
52
+        @ApiModelProperty(value = "구매요청상세번호") private String pchPodrDtlNo;
53
+        @ApiModelProperty(value = "발주 금액") private Integer podrAmt;
54
+    }
55
+}

+ 2 - 0
src/main/java/com/oqpo/api/web/dto/response/pomng/pchOrd/PchOdrInfoResponse.java

@@ -37,6 +37,7 @@ public class PchOdrInfoResponse {
37 37
     @ApiModelProperty(value = "발주담당자전화번호") private String podrMgrTelNo;
38 38
     @ApiModelProperty(value = "배송구분명") private String dlvDvsnNm;
39 39
     @ApiModelProperty(value = "납품요청일") private String dlvReqDt;
40
+    @ApiModelProperty(value = "매장아이디") private String storeId;
40 41
 
41 42
     @ApiModelProperty(value = "구매발주 품목 정보")
42 43
     private List<PchOdrInfoResponse.PchOrdPoDtlInfo> pchOdrDtlList;
@@ -60,6 +61,7 @@ public class PchOdrInfoResponse {
60 61
                 .podrMgrTelNo(entity.getPodrMgrTelNo() == null ? "" : entity.getPodrMgrTelNo())
61 62
                 .dlvDvsnNm(entity.getDlvDvsnNm() == null ? "" : entity.getDlvDvsnNm())
62 63
                 .dlvReqDt(entity.getDlvReqDt() == null ? "" : entity.getDlvReqDt())
64
+                .storeId(entity.getStoreId() == null ? "" : entity.getStoreId())
63 65
                 .pchOdrDtlList(dtlEntityList.stream()
64 66
                         .map(m -> PchOrdPoDtlInfo.builder()
65 67
                                 .pchPodrUnqNo(m.getPchPodrUnqNo())

+ 4 - 0
src/main/java/com/oqpo/api/web/dto/response/pomng/pchReq/PchReqInfoResponse.java

@@ -116,6 +116,8 @@ public class PchReqInfoResponse {
116 116
                                 .brandUnitUnqNo(m.getBrandUnitUnqNo() == null ? "" : m.getBrandUnitUnqNo())
117 117
                                 .storeUnitUnqNo(m.getStoreUnitUnqNo() == null ? "" : m.getStoreUnitUnqNo())
118 118
                                 .unitGubun(m.getUnitGubun() == null ? "" : m.getUnitGubun())
119
+                                .podrDtlStCd(m.getPodrDtlStCd() == null ? "" : m.getPodrDtlStCd())
120
+                                .podrDtlStNm(m.getPodrDtlStNm() == null ? "" : m.getPodrDtlStNm())
119 121
                                 .build())
120 122
                         .collect(Collectors.toList()))
121 123
                 .build();
@@ -138,6 +140,8 @@ public class PchReqInfoResponse {
138 140
         @ApiModelProperty(value = "브랜드단가고유번호") private String brandUnitUnqNo;
139 141
         @ApiModelProperty(value = "매장단가고유번호") private String storeUnitUnqNo;
140 142
         @ApiModelProperty(value = "단가구분") private String unitGubun;
143
+        @ApiModelProperty(value = "발주상태코드") private String podrDtlStCd;
144
+        @ApiModelProperty(value = "발주상태명") private String podrDtlStNm;
141 145
 
142 146
 
143 147
     }

+ 22 - 0
src/main/resources/mybatis/sqlmaps/pomng/PchOrd.xml

@@ -212,6 +212,7 @@
212 212
             , fn_whs_location_nm(base.brand_id, base.shmt_whs_id, base.shmt_location) as shmt_location_nm
213 213
             , base.podr_total_amt, base.podr_item_qty, base.podr_mgr_nm, base.podr_mgr_tel_no
214 214
             , fn_code_nm(upper('dlv_dvsn'),base.dlv_dvsn) as dlv_dvsn_nm,  date_format(base.dlv_req_dt, '%y.%m.%d') as dlv_req_dt
215
+            , base.store_id
215 216
         from pch_odr_base_info base
216 217
         where 1 = 1
217 218
         and base.pch_podr_unq_no = #{pchPodrUnqNo}
@@ -236,4 +237,25 @@
236 237
         where pch_podr_unq_no = #{pchPodrUnqNo}
237 238
         group by podr_dtl_st_cd
238 239
     </select>
240
+
241
+    <update id="updateCancelPodrDtl">
242
+        <foreach collection="gridUpdateData" item="item" separator=";">
243
+            UPDATE /* PchOrd.updateCancelPodrDtl */
244
+            pch_odr_dtl_ptcl SET
245
+            podr_dtl_st_cd = 'POD2',
246
+            sys_chg_dttm = NOW(),
247
+            sys_chg_id = #{userId}
248
+            WHERE pch_podr_unq_no = #{item.pchPodrUnqNo}
249
+            AND pch_podr_dtl_no = #{item.pchPodrDtlNo}
250
+        </foreach>
251
+    </update>
252
+
253
+    <update id="updateChgPodrStCd">
254
+            UPDATE /* PchOrd.updateChgPodrStCd */
255
+            pch_odr_base_info SET
256
+            pch_odr_st_cd = #{pchOdrStCd},
257
+            sys_chg_dttm = NOW(),
258
+            sys_chg_id = #{userId}
259
+            WHERE pch_podr_unq_no = #{pchPodrUnqNo}
260
+    </update>
239 261
 </mapper>

+ 6 - 4
src/main/resources/mybatis/sqlmaps/pomng/PchReq.xml

@@ -85,10 +85,12 @@
85 85
     </select>
86 86
 
87 87
     <select id="selectPchReqDtlPtcl" resultType="com.oqpo.api.entity.pomng.PchReqDtlPtclEntity">
88
-            SELECT pch_req_unq_no, pch_req_dtl_no, item_id, item_nm, unit, fn_code_nm('DSTRBT_COST_UNIT',unit) AS unit_nm
89
-                  , pch_req_qty, pch_req_amt, unit_amt, brand_unit_unq_no, store_unit_unq_no, unit_gubun
90
-            FROM pch_req_dtl_ptcl
91
-            WHERE pch_req_unq_no = #{pchReqUnqNo}
88
+            SELECT ptcl.pch_req_unq_no, ptcl.pch_req_dtl_no, ptcl.item_id, ptcl.item_nm, ptcl.unit, fn_code_nm('DSTRBT_COST_UNIT',ptcl.unit) AS unit_nm
89
+                  , ptcl.pch_req_qty, ptcl.pch_req_amt, ptcl.unit_amt, ptcl.brand_unit_unq_no, ptcl.store_unit_unq_no, ptcl.unit_gubun
90
+                  , odr.podr_dtl_st_cd, fn_code_nm(upper('podr_dtl_st_cd'), odr.podr_dtl_st_cd) as podr_dtl_st_nm
91
+            FROM pch_req_dtl_ptcl ptcl
92
+            left outer join pch_odr_dtl_ptcl odr on odr.pch_req_unq_no = ptcl.pch_req_unq_no and odr.pch_req_dtl_no = ptcl.pch_req_dtl_no
93
+            WHERE ptcl.pch_req_unq_no = #{pchReqUnqNo}
92 94
     </select>
93 95
 
94 96
 

+ 6 - 0
src/main/resources/mybatis/sqlmaps/stinfo/Store.xml

@@ -220,4 +220,10 @@
220 220
         </if>
221 221
     </update>
222 222
 
223
+    <select id="selectStoreLoanMgntUnqNo" resultType="String">
224
+        select loan_mgnt_unq_no
225
+         from store_base_info
226
+         where store_id = #{storeId}
227
+    </select>
228
+
223 229
 </mapper>