Explorar o código

采购数据修正

yzc hai 1 ano
pai
achega
e8a50c6069

+ 8 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java

@@ -74,6 +74,14 @@ public class PurchaseController {
     }
 
     /**
+     * 采购修正
+     */
+    @PostMapping("/purchaseCorrect")
+    public void purchaseCorrect(@RequestBody PurchaseDto purchaseDto) {
+        purchaseService.purchaseCorrect(purchaseDto);
+    }
+
+    /**
      * 采购删除
      */
     @PostMapping("/delete")

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java

@@ -50,6 +50,11 @@ public interface PurchaseService extends BaseService<Purchase> {
     void edit(PurchaseDto purchaseDto);
 
     /**
+     * 采购修正
+     */
+    void purchaseCorrect(PurchaseDto purchaseDto);
+
+    /**
      * 采购删除
      */
     void delete(Long id);

+ 43 - 4
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -73,6 +73,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -452,6 +453,44 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
     @Override
     @DSTransactional
     public void edit(PurchaseDto purchaseDto) {
+        this.updateById(purchaseDto);
+    }
+
+    @Override
+    @DSTransactional
+    public void purchaseCorrect(PurchaseDto purchaseDto) {
+        //获取提交上来的json
+        String dtoPurchaseJsonStr = purchaseDto.getVictoriatouristJson();
+        JSONObject dtoPurchaseJson = ObjectUtil.isEmpty(dtoPurchaseJsonStr) ? new JSONObject() : JSONObject.parseObject(dtoPurchaseJsonStr);
+        //获取提交上来的采购明细
+        List<PurchaseDetail> purchaseDetailList1 = purchaseDto.getPurchaseDetailList();
+        Map<Long, PurchaseDetail> dtoPurchaseDetailMap = purchaseDetailList1.stream().collect(Collectors.toMap(PurchaseDetail::getId, Function.identity()));
+
+        //只能修改 采购明细(单价,总金额),其他费用,运费,优惠,采购总金额
+        Purchase oldPurchase = getById(purchaseDto.getId());
+        String purchaseJsonStr = oldPurchase.getVictoriatouristJson();
+        JSONObject victoriatouristJson = ObjectUtil.isEmpty(purchaseJsonStr) ? new JSONObject() : JSONObject.parseObject(purchaseJsonStr);
+        //采购总金额
+        oldPurchase.setAmount(purchaseDto.getAmount());
+        //其他费用
+        victoriatouristJson.put("otherFeeList", dtoPurchaseJson.getJSONArray("otherFeeList"));
+        //运费
+        victoriatouristJson.put("freight", dtoPurchaseJson.getBigDecimal("freight"));
+        //优惠
+        victoriatouristJson.put("preferential", dtoPurchaseJson.getBigDecimal("preferential"));
+        //写入json
+        oldPurchase.setVictoriatouristJson(victoriatouristJson.toJSONString());
+
+        //采购明细(单价,总金额)
+        List<PurchaseDetail> oldPurchaseDetailList = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getPurchaseId, purchaseDto.getId()));
+        for (PurchaseDetail purchaseDetail : oldPurchaseDetailList) {
+            PurchaseDetail newPurchaseDetail = dtoPurchaseDetailMap.get(purchaseDetail.getId());
+            if(ObjectUtil.isNotEmpty(newPurchaseDetail)) {
+                purchaseDetail.setPrice(newPurchaseDetail.getPrice());
+                purchaseDetail.setAmount(newPurchaseDetail.getAmount());
+            }
+        }
+
         //记录修改数据前
         PurchaseVo detail = detail(purchaseDto.getId());
         JSONArray arrays = ObjectUtil.isEmpty(detail.getOldDataJson()) ? new JSONArray() : JSONArray.parse(detail.getOldDataJson());
@@ -461,11 +500,11 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
         json.put("version", (arrays.size() + 1));
         json.put("data", JSONObject.toJSONString(detail));
         arrays.add(json);
-        purchaseDto.setOldDataJson(arrays.toJSONString());
+        oldPurchase.setOldDataJson(arrays.toJSONString());
 
-        this.updateById(purchaseDto);
-        List<PurchaseDetail> purchaseDetailList = purchaseDto.getPurchaseDetailList();
-        purchaseDetailService.updateBatchById(purchaseDetailList);
+        //修改数据
+        this.updateById(oldPurchase);
+        purchaseDetailService.updateBatchById(oldPurchaseDetailList);
     }
 
     @Override