zss
2023-09-20 18648905bd0fd3b0dd1cf39a88ff90ec77dc5e30
inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
@@ -1,8 +1,10 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.Task.SyncOrder;
import com.yuanchu.mom.mapper.SaleMaterialMapper;
import com.yuanchu.mom.pojo.Sale;
import com.yuanchu.mom.mapper.SaleMapper;
@@ -12,16 +14,16 @@
import com.yuanchu.mom.pojo.dto.SaleDto;
import com.yuanchu.mom.pojo.dto.SaleMaterialDto;
import com.yuanchu.mom.pojo.vo.SaleVo;
import com.yuanchu.mom.service.SaleMaterialService;
import com.yuanchu.mom.service.SaleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.vo.Result;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -37,6 +39,9 @@
    @Resource
    SaleMapper saleMapper;
    @Resource
    SaleMaterialService saleMaterialService;
    @Resource
    SaleMaterialMapper saleMaterialMapper;
@@ -109,7 +114,19 @@
    //根据销售单id修改信息
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateSaleById(String saleman, Integer id, SaleVo saleVo) {
    public String updateSaleById(String saleman, Integer id, SaleVo saleVo) {
        //校验,同一个产品的规格型号不能相同
        List<SaleMaterialDto> saleMaterialList = saleVo.getSaleMaterialList();
        // 使用哈希集合来判断是否存在相同字段值组合
        Set<String> seen = new HashSet<>();
        for (SaleMaterialDto saleMaterial : saleMaterialList) {
            String key = saleMaterial.getName() + "," + saleMaterial.getSpecifications();
            if (seen.contains(key)) {
                return "同一个产品的规格型号不能相同";
            } else {
                seen.add(key);
            }
        }
        Sale sale = saleMapper.selectById(id);
        sale.setSaleman(saleman);
        BeanUtils.copyProperties(saleVo, sale);
@@ -121,6 +138,7 @@
            BeanUtils.copyProperties(saleMaterialDto, saleMaterial);
            saleMaterialMapper.updateById(saleMaterial);
        }
        return "修改成功!";
    }
    //审核
@@ -164,11 +182,51 @@
                .orderCode(orderNumber)
                .customerCode(sale.getCode())
                .proname(sale.getProname())
                .adress(sale.getAdress())
                .username(sale.getUsername())
                .phone(sale.getPhone())
                //.adress(sale.getAdress())
                //.username(sale.getUsername())
                //.phone(sale.getPhone())
                .messages(dto2List)
                .build();
        return consignmentDto1;
    }
    //同步销售数据
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String synchronization() {
        //获取主销售数据
        List<Map<String, Object>> order = SyncOrder.getMainOrder("2023-08-01 10:00:00 ");
        List<Sale> list = order.stream().map(orde -> {
            Sale sale = new Sale();
            sale.setOrderNumber(orde.get("orderNo").toString());//订单编号
            sale.setCode(String.valueOf(orde.get("customerContractNumber")));//客户合同编号
            sale.setName(orde.get("projectName").toString());//工程名称
            sale.setProname(orde.get("customerName").toString());//客户名称
            sale.setOrderName(orde.get("createdName").toString());//下单人
            sale.setSaleman(orde.get("salesmanName").toString());//业务员
            sale.setDelTime(DateUtil.parseDate(orde.get("wantedDeliveryDate").toString()));//交货日期
            sale.setCreateTime(DateUtil.parseDate(orde.get("orderDate").toString()));//下单日期
            sale.setNote(String.valueOf(orde.get("comment")));//备注
            return sale;
        }).collect(Collectors.toList());
        this.saveBatch(list);
        for (Sale sale : list) {
            List<Map<String, Object>> innerOrder = SyncOrder.getInnerOrder("2023-08-01 10:00:00", sale.getOrderNumber());
            List<SaleMaterial> saleMaterials = innerOrder.stream().map(inorder -> {
                SaleMaterial saleMaterial = new SaleMaterial();
                saleMaterial.setName(inorder.get("productName").toString()); //产品名称
                saleMaterial.setSpecifications(inorder.get("specificationModel").toString()); //产品规格型号
                saleMaterial.setUnit(inorder.get("unit").toString());   //单位
                saleMaterial.setNumber((int) Double.parseDouble(inorder.get("quantity").toString()));  //数量
                saleMaterial.setPrice(inorder.get("unitPriceInclTax").toString());  //单价
                saleMaterial.setSaleId(sale.getId());  //关联 销售单id
                saleMaterial.setAdress(String.valueOf(inorder.get("shippingAddress")));  //收货地址
                saleMaterial.setUsername(String.valueOf(inorder.get("receivingContact")));  //联系人
                saleMaterial.setPhone(String.valueOf(inorder.get("receivingContactPhone")));  //手机号
                return saleMaterial;
            }).collect(Collectors.toList());
            saleMaterialService.saveBatch(saleMaterials);
        }
        return "同步成功!";
    }
}