廖井涛
2024-02-20 1e11a4c8ec2a531e2499cd11026aec3f64ddc350
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
New file
@@ -0,0 +1,132 @@
package com.example.erp.service.sd;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.entity.sd.Delivery;
import com.example.erp.entity.sd.DeliveryDetail;
import com.example.erp.entity.sd.Order;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.mapper.mm.FinishedGoodsInventoryMapper;
import com.example.erp.mapper.sd.DeliveryDetailMapper;
import com.example.erp.mapper.sd.DeliveryMapper;
import com.example.erp.mapper.sd.OrderDetailMapper;
import com.example.erp.mapper.sd.OrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
@DS("sd")
public class DeliveryService {
    @Autowired
    DeliveryMapper deliveryMapper;
    @Autowired
    DeliveryDetailMapper deliveryDetailMapper;
    @Autowired
    OrderMapper orderMapper;
    @Autowired
    OrderDetailMapper orderDetailMapper;
    @Autowired
    FinishedGoodsInventoryMapper finishedGoodsInventoryMapper;
    public Map<String, Object> getseletShippingOrder(Integer pageNum, Integer pageSize, Delivery delivery) {
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        map.put("data", deliveryMapper.getseletShippingOrder(offset, pageSize, delivery));
        System.out.println(deliveryMapper.getseletShippingOrder(offset, pageSize, delivery));
        map.put("total", deliveryMapper.getseletShippingOrderPageTotal(offset, pageSize, delivery));
        return map;
    }
    public Map<String, Object> getseletShippingOrderDetail(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        map.put("data", deliveryDetailMapper.getseletShippingOrderDetail(offset, pageSize, orderDetail));
        map.put("delivery", deliveryMapper.getseletShippingOrderDetaildelivery(offset, pageSize, orderDetail));
        map.put("total", deliveryDetailMapper.getseletShippingOrderDetailPageTotal(offset, pageSize, orderDetail));
        return map;
    }
    public Map<String, Object> getSelectOrderInventory(Integer pageNum, Integer pageSize, Order order) {
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        map.put("data", deliveryMapper.getSelectOrderInventory(offset, pageSize, order));
        map.put("total", deliveryMapper.getSelectOrderInventoryPageTotal(offset, pageSize, order));
        return map;
    }
    public Map<String, Object> getseletShippingOrderDetails(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        map.put("data", deliveryDetailMapper.getseletShippingOrderDetails(offset, pageSize, orderDetail));
        map.put("title", deliveryMapper.getseletShippingOrderDetaildeliverys(offset, pageSize, orderDetail));
        map.put("total", deliveryDetailMapper.getseletShippingOrderDetailsPageTotal(offset, pageSize, orderDetail));
        return map;
    }
    public Boolean insertDelivery(Map<String,Object> object) {
        Boolean isinsert=false;
        Delivery delivery = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), Delivery.class);
        List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("delivery")), OrderDetail.class);
        //获取单号
        String oddNumber= orderNumberSetting("发货");
        System.out.println(delivery);
        deliveryMapper.insertDelivery(delivery,oddNumber,orderDetaillist.get(0).getOrderId());
        Double area=0.0;
        Integer quantity=0;
        Double money=0.0;
        //获取对象集合循环进行新增修改
        if (!orderDetaillist.isEmpty()){
            for (OrderDetail orderDetail : orderDetaillist) {
                quantity+=orderDetail.getFinishedGoodsInventory().getQuantityAvailable();
                area+=orderDetail.getFinishedGoodsInventory().getActualSignalArea()*orderDetail.getFinishedGoodsInventory().getQuantityAvailable();
                money+=orderDetail.getPrice()*orderDetail.getFinishedGoodsInventory().getQuantityAvailable();
                Integer deliveryDetailmaximum=deliveryDetailMapper.getdeliveryDetailmaximum(oddNumber);
                System.out.println(deliveryDetailmaximum);
                deliveryDetailMapper.insertDeliveryDetail(orderDetail,oddNumber,deliveryDetailmaximum);
                deliveryDetailMapper.updateOrderDetailDeliveryNum(orderDetail);
                //修改库存表出库数量
                finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getOrderId(),orderDetail.getOrderNumber(),orderDetail.getFinishedGoodsInventory().getQuantityAvailable());
                isinsert=true;
            }
            System.out.println("面积"+area+"数量"+quantity+"金额"+money);
            deliveryMapper.updatedelivery(area,quantity,money,oddNumber);
            return isinsert;
        }else{
            return false;
        }
    }
    public String orderNumberSetting(String type) {
        //根据类型自动生成不同的操作单号
        String alias="";
        if(Objects.equals(type, "发货")){
            alias="FH";
        }else if(Objects.equals(type, "出库")){
            alias="CK";
        }else if(Objects.equals(type, "调拨")){
            alias="DB";
        }else if(Objects.equals(type, "领出")){
            alias="LC";
        }else if(Objects.equals(type, "返工")){
            alias="FG";
        }
        //查询当天的最大数量
        Integer maximum=deliveryMapper.getmaximum(type);
        //设置两位不够补0
        String formattedNumber = String.format("%02d", maximum+1);
        //格式化当前日期
        Date currentDate = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
        String formattedDate = dateFormat.format(currentDate);
        String oddNumbers =  alias+formattedDate+formattedNumber;
        return oddNumbers;
    }
}