Browse Source

재고기준정보관리

hoseongs 2 years ago
parent
commit
fc5a89464f

+ 2 - 0
src/main/java/com/oqpo/api/mapper/stockmng/StockMngMapper.java

@@ -39,6 +39,8 @@ public interface StockMngMapper {
39 39
 
40 40
     int updateStckMgntBaseInfo4StckProc(@Param("userId") String userId, StckMgntBaseInfoEntity entity) throws Exception;
41 41
 
42
+    int updateStckMgntBaseInfo4BaseChg(@Param("userId") String userId, StckMgntBaseInfoEntity entity) throws Exception;
43
+
42 44
     int insertStckMgntDtlHist(@Param("userId") String userId, StckMgntDtlHistEntity entity) throws Exception;
43 45
 
44 46
 }

+ 44 - 0
src/main/java/com/oqpo/api/service/stockmng/StockBaseMngService.java

@@ -0,0 +1,44 @@
1
+package com.oqpo.api.service.stockmng;
2
+
3
+
4
+import com.oqpo.api.entity.stockmng.StckMgntBaseInfoEntity;
5
+import com.oqpo.api.exception.GlobalException;
6
+import com.oqpo.api.mapper.stockmng.StockMngMapper;
7
+import com.oqpo.api.service.CommonService;
8
+import com.oqpo.api.web.dto.request.GridRequest;
9
+import com.oqpo.api.web.dto.request.stockmng.SaveStockBaseInfoRequest;
10
+import com.oqpo.api.web.dto.response.GridResponse;
11
+import com.oqpo.api.web.dto.response.stockmng.StockMngListResponse;
12
+import lombok.extern.slf4j.Slf4j;
13
+import org.springframework.beans.factory.annotation.Autowired;
14
+import org.springframework.stereotype.Service;
15
+import org.springframework.transaction.annotation.Transactional;
16
+
17
+import java.util.List;
18
+import java.util.stream.Collectors;
19
+
20
+@Service
21
+@Slf4j
22
+public class StockBaseMngService extends CommonService {
23
+
24
+    @Autowired
25
+    private StockMngMapper stockMngMapper;
26
+
27
+    /* 재고기준정보 저장 */
28
+    @Transactional
29
+    public void saveStockBaseInfo(String userId, SaveStockBaseInfoRequest saveStockBaseInfoRequest) throws Exception {
30
+        try {
31
+            List<StckMgntBaseInfoEntity> list = saveStockBaseInfoRequest.toEntities(saveStockBaseInfoRequest.getGridUpdateData());
32
+            for (StckMgntBaseInfoEntity item : list) {
33
+                stockMngMapper.updateStckMgntBaseInfo4BaseChg(userId, item);
34
+            }
35
+        } catch (GlobalException e) {
36
+            e.getStackTrace();
37
+            throw new GlobalException(e.getSystemMessageCode());
38
+        } catch (Exception e) {
39
+            e.getStackTrace();
40
+            throw new RuntimeException();
41
+        }
42
+    }
43
+
44
+}

+ 72 - 0
src/main/java/com/oqpo/api/web/controller/stockmng/StockBaseMngController.java

@@ -0,0 +1,72 @@
1
+package com.oqpo.api.web.controller.stockmng;
2
+
3
+import com.oqpo.api.enums.SystemMessageCode;
4
+import com.oqpo.api.service.stockmng.StockBaseMngService;
5
+import com.oqpo.api.service.stockmng.StockMngService;
6
+import com.oqpo.api.web.dto.request.stockmng.SaveStockBaseInfoRequest;
7
+import com.oqpo.api.web.dto.request.stockmng.StockBaseMngGridRequest;
8
+import com.oqpo.api.web.dto.response.GridResponse;
9
+import com.oqpo.api.web.dto.response.SaveResponse;
10
+import io.swagger.annotations.ApiImplicitParam;
11
+import io.swagger.annotations.ApiImplicitParams;
12
+import io.swagger.annotations.ApiOperation;
13
+import lombok.extern.slf4j.Slf4j;
14
+import org.springframework.beans.factory.annotation.Autowired;
15
+import org.springframework.http.ResponseEntity;
16
+import org.springframework.web.bind.annotation.PostMapping;
17
+import org.springframework.web.bind.annotation.RequestBody;
18
+import org.springframework.web.bind.annotation.RequestMapping;
19
+import org.springframework.web.bind.annotation.RestController;
20
+import springfox.documentation.annotations.ApiIgnore;
21
+
22
+import javax.validation.Valid;
23
+
24
+@Slf4j
25
+@RestController
26
+@RequestMapping("/api/stock/base/mng")
27
+public class StockBaseMngController {
28
+
29
+    @Autowired
30
+    private StockMngService stockMngService;
31
+
32
+    @Autowired
33
+    private StockBaseMngService stockBaseMngService;
34
+
35
+    /**
36
+     * 설명 : 재고기준정보관리 그리드 리스트
37
+     *
38
+     * @param stockBaseMngGridRequest
39
+     * @return
40
+     * @throws Exception
41
+     */
42
+    @ApiImplicitParams({
43
+            @ApiImplicitParam(name = "X-AUTH-TOKEN", value = "CONN-KEY", required = true, dataType = "String", paramType = "header")
44
+    })
45
+    @ApiOperation(value = "재고기준정보관리 그리드 리스트")
46
+    @PostMapping("/detail-grid-list")
47
+    public ResponseEntity<GridResponse> detailGridList(@RequestBody @Valid StockBaseMngGridRequest stockBaseMngGridRequest) throws Exception {
48
+        return ResponseEntity.ok(stockMngService.selectStockMngGridList(stockBaseMngGridRequest.getSBrandId(), stockBaseMngGridRequest.getSStoreId(),
49
+                stockBaseMngGridRequest.getSWhsId(), stockBaseMngGridRequest.getSLocation(),
50
+                stockBaseMngGridRequest.getSItemClass1(), stockBaseMngGridRequest.getSItemClass2(), stockBaseMngGridRequest.getSItemClass3(), stockBaseMngGridRequest.getSItemClass4(),
51
+                stockBaseMngGridRequest.getSItemId(), stockBaseMngGridRequest.getSItemNm(), stockBaseMngGridRequest.toDTO(stockBaseMngGridRequest)));
52
+    }
53
+
54
+    /**
55
+     * 설명 : 재고기준정보 저장
56
+     *
57
+     * @param userId
58
+     * @param saveStockBaseInfoRequest
59
+     * @return SaveResponse
60
+     * @throws Exception
61
+     */
62
+    @ApiImplicitParams({
63
+            @ApiImplicitParam(name = "X-AUTH-TOKEN", value = "CONN-KEY", required = true, dataType = "String", paramType = "header")
64
+    })
65
+    @ApiOperation(value = "재고기준정보 저장")
66
+    @PostMapping("/save")
67
+    public ResponseEntity<SaveResponse> save(@ApiIgnore String userId, @RequestBody @Valid SaveStockBaseInfoRequest saveStockBaseInfoRequest) throws Exception {
68
+        stockBaseMngService.saveStockBaseInfo(userId, saveStockBaseInfoRequest);
69
+        return ResponseEntity.ok(SaveResponse.toDTO(SystemMessageCode.SAVE_OK));
70
+    }
71
+
72
+}

+ 60 - 0
src/main/java/com/oqpo/api/web/dto/request/stockmng/SaveStockBaseInfoRequest.java

@@ -0,0 +1,60 @@
1
+package com.oqpo.api.web.dto.request.stockmng;
2
+
3
+import com.oqpo.api.entity.stockmng.StckMgntBaseInfoEntity;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.*;
6
+
7
+import java.math.BigDecimal;
8
+import java.util.ArrayList;
9
+import java.util.List;
10
+
11
+@Getter
12
+@Setter
13
+public class SaveStockBaseInfoRequest {
14
+
15
+    @ApiModelProperty(value = "브랜드아이디")
16
+    private String brandId;
17
+    @ApiModelProperty(value = "창고아이디")
18
+    private String whsId;
19
+    @ApiModelProperty(value = "LOCATION")
20
+    private String location;
21
+
22
+    @ApiModelProperty(value = "재고기준정보 품목리스트")
23
+    private List<SaveStockBaseInfoRequest.StockBaseInfoReqData> gridInsertData;
24
+    @ApiModelProperty(value = "재고기준정보 품목리스트")
25
+    private List<SaveStockBaseInfoRequest.StockBaseInfoReqData> gridUpdateData;
26
+    @ApiModelProperty(value = "재고기준정보 품목리스트")
27
+    private List<SaveStockBaseInfoRequest.StockBaseInfoReqData> gridDeleteData;
28
+
29
+    public List<StckMgntBaseInfoEntity> toEntities(List<SaveStockBaseInfoRequest.StockBaseInfoReqData> gridData) {
30
+        List<StckMgntBaseInfoEntity> entities = new ArrayList<>();
31
+        if (gridData == null || gridData.size() == 0)
32
+            return entities;
33
+
34
+        gridData.forEach(x -> {
35
+            StckMgntBaseInfoEntity entity = new StckMgntBaseInfoEntity();
36
+            entity.setBrandId(brandId);
37
+            entity.setWhsId(whsId);
38
+            entity.setLocation(location);
39
+            entity.setItemId(x.getItemId());
40
+            entity.setPrpStckQty(x.getPrpStckQty());
41
+            entity.setSftStckRt(x.getSftStckRt());
42
+            entities.add(entity);
43
+        });
44
+        return entities;
45
+    }
46
+
47
+    @Getter
48
+    @Builder
49
+    @AllArgsConstructor(access = AccessLevel.PROTECTED)
50
+    static class StockBaseInfoReqData {
51
+
52
+        @ApiModelProperty(value = "품목아이디")
53
+        private String itemId;
54
+        @ApiModelProperty(value = "적정재고수량")
55
+        private int prpStckQty;
56
+        @ApiModelProperty(value = "안전재고비율")
57
+        private BigDecimal sftStckRt;
58
+
59
+    }
60
+}

+ 39 - 0
src/main/java/com/oqpo/api/web/dto/request/stockmng/StockBaseMngGridRequest.java

@@ -0,0 +1,39 @@
1
+package com.oqpo.api.web.dto.request.stockmng;
2
+
3
+import com.oqpo.api.web.dto.request.GridRequest;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.Getter;
6
+import lombok.Setter;
7
+
8
+
9
+@Getter
10
+@Setter
11
+public class StockBaseMngGridRequest extends GridRequest {
12
+
13
+    @ApiModelProperty(value = "브랜드아이디")
14
+    private String sBrandId;
15
+    @ApiModelProperty(value = "매장아이디")
16
+    private String sStoreId;
17
+    @ApiModelProperty(value = "창고아이디")
18
+    private String sWhsId;
19
+    @ApiModelProperty(value = "LOCATION")
20
+    private String sLocation;
21
+
22
+    @ApiModelProperty(value = "품목분류1")
23
+    private String sItemClass1;
24
+    @ApiModelProperty(value = "품목분류2")
25
+    private String sItemClass2;
26
+    @ApiModelProperty(value = "품목분류3")
27
+    private String sItemClass3;
28
+    @ApiModelProperty(value = "품목분류4")
29
+    private String sItemClass4;
30
+
31
+    @ApiModelProperty(value = "품목아이디")
32
+    private String sItemId;
33
+    @ApiModelProperty(value = "품목명")
34
+    private String sItemNm;
35
+
36
+    protected StockBaseMngGridRequest(Integer gridSize, Integer gridPage, String sidx, String sord, Boolean pagingYn, Integer gridFirst) {
37
+        super(gridSize, gridPage, sidx, sord, pagingYn, gridFirst);
38
+    }
39
+}

+ 13 - 0
src/main/resources/mybatis/sqlmaps/stockmng/StockMng.xml

@@ -137,6 +137,19 @@
137 137
         AND item_id = #{entity.itemId}
138 138
     </update>
139 139
 
140
+    <update id="updateStckMgntBaseInfo4BaseChg" >
141
+        /* StockMngMapper.updateStckMgntBaseInfo4BaseChg */
142
+        UPDATE stck_mgnt_base_info SET
143
+            prp_stck_qty = #{entity.prpStckQty},    /* 적정재고수량 */
144
+            sft_stck_rt = #{entity.sftStckRt},      /* 안전재고비율 */
145
+            sys_chg_dttm = NOW(),
146
+            sys_chg_id = #{userId}
147
+        WHERE brand_id = #{entity.brandId}
148
+        AND whs_id = #{entity.whsId}
149
+        AND location = #{entity.location}
150
+        AND item_id = #{entity.itemId}
151
+    </update>
152
+
140 153
     <insert id="insertStckMgntDtlHist" >
141 154
         /* StockMngMapper.insertStckMgntDtlHist */
142 155
         INSERT INTO stck_mgnt_dtl_hist