Browse Source

方法补充

1018653686@qq.com 1 year ago
parent
commit
92bfff0a38

+ 0 - 10
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java

@@ -162,14 +162,4 @@ public class JdOrderController {
         }
         jdOrderService.saveRemark(jdOrderDto);
     }
-
-    /**
-     * 采购单明细异常列表
-     * @author hj
-     * @date 2024/1/15 10:09
-     */
-    @PostMapping("/jdOrderDetailExList")
-    public Page<JdOrderDetailsVo> jdOrderDetailExList(@RequestBody JdOrderSelectDto dto){
-        return jdOrderDetailsService.jdOrderDetailExList(dto);
-    }
 }

+ 48 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderExController.java

@@ -0,0 +1,48 @@
+package com.fjhx.victoriatourist.controller.jd;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
+import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/jdOrderEx")
+public class JdOrderExController {
+
+    @Resource
+    private JdOrderDetailsService jdOrderDetailsService;
+
+
+    /**
+     * 采购单明细异常列表
+     * @author hj
+     * @date 2024/1/15 10:09
+     */
+    @PostMapping("/jdOrderDetailExList")
+    public Page<JdOrderDetailsVo> jdOrderDetailExList(@RequestBody JdOrderSelectDto dto){
+        return jdOrderDetailsService.jdOrderDetailExList(dto);
+    }
+
+
+
+    /**
+     * 处理异常
+     * @author hj
+     * @date 2024/1/15 22:18
+     */
+    @PostMapping("/dealEx")
+    public void dealEx(@RequestBody JdOrderDetailsVo vo){
+        if(ObjectUtil.isNull(vo.getId()) || StrUtil.isBlank(vo.getExHandle())){
+            throw new RuntimeException("参数异常");
+        }
+        jdOrderDetailsService.dealEx(vo);
+    }
+}

+ 2 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrderDetails.java

@@ -96,4 +96,6 @@ public class JdOrderDetails extends BasePo {
     private Long handleUser;
     /**异常处理时间**/
     private Date handleTime;
+    /**快递单号**/
+    private String expressNo;
 }

+ 6 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderDetailsVo.java

@@ -29,4 +29,10 @@ public class JdOrderDetailsVo extends JdOrderDetails {
      */
     private String productCustomCode;
 
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
 }

+ 2 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderDetailsService.java

@@ -22,4 +22,6 @@ public interface JdOrderDetailsService extends BaseService<JdOrderDetails> {
     List<JdOrderDetailsVo> findListByJdOrderId(Long id);
 
     Page<JdOrderDetailsVo> jdOrderDetailExList(JdOrderSelectDto dto);
+
+    void dealEx(JdOrderDetailsVo vo);
 }

+ 11 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/RunParamConstant.java

@@ -38,4 +38,15 @@ public class RunParamConstant {
     public static final String EXCEPTION_STATE_UNTREATED = "1";
     /**异常处理状态-已处理**/
     public static final String EXCEPTION_STATE_TREATED = "2";
+
+    /**出库**/
+    public static final int OUTBOUND = 2;
+    /**入库**/
+    public static final int INBOUND = 1;
+
+
+    /**少货-报损**/
+    public static final String SHORTAGE_DAMAGE = "201";
+    /**少货-索赔理赔**/
+    public static final String SHORTAGE_CLAIM = "203";
 }

+ 134 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderDetailsServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
@@ -11,8 +12,21 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.fjhx.victoriatourist.mapper.jd.JdOrderDetailsMapper;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
+import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
+import com.fjhx.wms.entity.stock.emums.JournalType;
+import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.entity.stock.po.StockJournal;
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
+import com.fjhx.wms.service.stock.StockJournalDetailsService;
+import com.fjhx.wms.service.stock.StockJournalService;
+import com.fjhx.wms.service.stock.StockService;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 
@@ -26,6 +40,12 @@ import java.util.List;
  */
 @Service
 public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper, JdOrderDetails> implements JdOrderDetailsService {
+    @Resource
+    private StockService stockService;
+    @Resource
+    private StockJournalService stockJournalService;
+    @Resource
+    private StockJournalDetailsService stockJournalDetailsService;
 
     @Override
     public List<JdOrderDetailsVo> findListByJdOrderId(Long jdOrderId) {
@@ -49,4 +69,118 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
 
         return voPage;
     }
+
+
+    @Override
+    public void dealEx(JdOrderDetailsVo vo) {
+        JdOrderDetails byId = getById(vo.getId());
+        if (ObjectUtil.isNull(byId)){
+            throw new RuntimeException("数据不存在");
+        }
+        byId.setExHandle(vo.getExHandle());
+        byId.setHandleStatus(RunParamConstant.EXCEPTION_STATE_TREATED);
+        byId.setHandleTime(new Date());
+        Long userId = SecurityUtils.getUserId();
+        byId.setHandleUser(userId);
+
+        switch (vo.getExHandle()){
+            case RunParamConstant.SHORTAGE_DAMAGE+","+RunParamConstant.SHORTAGE_CLAIM:
+                fillRemark(vo, byId);
+                break;
+            default:
+                throw new RuntimeException("异常处理状态异常");
+        }
+
+
+        updateById(byId);
+    }
+
+
+    /**
+     * 填充备注
+     * @author hj
+     * @date 2024/1/15 22:41
+     */
+    private void fillRemark(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails){
+        String remark = vo.getRemark();
+        if(StrUtil.isBlank(remark)){
+            throw new RuntimeException("备注不能为空");
+        }
+        jdOrderDetails.setRemark(remark);
+    }
+
+    /**
+     * 填写快递单号
+     * @author hj
+     * @date 2024/1/15 22:42
+     */
+    private void fillExpressNo(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        String expressNo = vo.getExpressNo();
+        if (StrUtil.isBlank(expressNo)) {
+            throw new RuntimeException("快递单号不能为空");
+        }
+        jdOrderDetails.setExpressNo(expressNo);
+    }
+
+    /**
+     * 增加库存
+     * @param vo
+     * @param jdOrderDetails
+     */
+    private void addStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        //操作库存及记录
+        operateStock(vo.getWarehouseId(), RunParamConstant.INBOUND, jdOrderDetails.getQuantity());
+    }
+
+    /**
+     * 减少库存
+     * @author hj
+     * @date 2024/1/15 22:44
+     */
+    private void reduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        //操作库存及记录
+        operateStock(vo.getWarehouseId(), RunParamConstant.OUTBOUND, jdOrderDetails.getQuantity());
+    }
+
+
+
+    /**
+     * 操作库存及记录
+     * @param warehouseId 仓库id
+     * @param type 类型 1入库 2出库 3维多利亚冻结库存入库 4维多利亚待出库次品库存
+     * @param quantity 操作数量
+     */
+    private void operateStock(Long warehouseId, int type, BigDecimal quantity) {
+        //要操作的数据
+        List<Stock> stockList = new ArrayList<>();
+        Stock stock = new Stock();
+        stock.setProductId(1L);
+        stock.setQuantity(quantity);
+        stockList.add(stock);
+
+        //操作库存
+//        stockService.ModifyInventory(type, stockList, warehouseId);
+
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setOpType(1);//1入库2出库
+        stockJournal.setType(JournalType.JD_BACK_IN.getDetailType());//流水类型 JournalType枚举
+        stockJournal.setCode("流水编号");//流水编号,没规范赋值业务编号也行
+        stockJournal.setWarehouseId(warehouseId);//仓库id
+        stockJournal.setBusinessId(1L);//业务id
+        stockJournal.setLinkCode("业务编号");//业务编号
+        stockJournalService.save(stockJournal);
+
+        //保存出入库流水明细
+        List<StockJournalDetails> stockJournalDetailsList = new ArrayList<>();
+        StockJournalDetails stockJournalDetails = new StockJournalDetails();
+        stockJournalDetails.setId(IdWorker.getId());
+        stockJournalDetails.setBusinessDetailsId(1L);//业务明细id
+        stockJournalDetails.setQuantity(BigDecimal.ZERO);//操作数量;
+        stockJournalDetails.setProductId(1L);//操作产品id
+        stockJournalDetails.setStockJournalId(stockJournal.getId());//流水主表id
+        stockJournalDetailsList.add(stockJournalDetails);
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+    }
+
 }