OrderAssignService.java 7.39 KB
package com.huaheng.api.SSP.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.huaheng.api.SSP.domain.ConfirmHeaderModel;
import com.huaheng.api.SSP.domain.ConfirmModel;
import com.huaheng.api.SSP.domain.ConfirmTypeModel;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.support.Convert;
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.general.material.domain.Material;
import com.huaheng.pc.general.material.service.IMaterialService;
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.service.IReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.IReceiptHeaderService;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentDetail.service.IShipmentDetailService;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.IShipmentHeaderService;
import net.bytebuddy.implementation.bytecode.Throw;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Transactional
@Service
public class OrderAssignService {

    @Autowired
    IReceiptHeaderService iReceiptHeaderService;

    @Autowired
    IReceiptDetailService iReceiptDetailService;

    @Autowired
    IShipmentHeaderService iShipmentHeaderService;

    @Autowired
    IShipmentDetailService iShipmentDetailService;

    @Autowired
    IMaterialService iMaterialService;

    public AjaxResult receiptAssign(String url){
        ReceiptHeader receiptHeader = new ReceiptHeader();
        receiptHeader.setSourcePlatform("SSP");
        short status = 0;
        receiptHeader.setFirstStatus(status);
        receiptHeader.setLastStatus(status);
        //判断系统中是否有钱柜的还未下发的入库单
        List<ReceiptHeader> list = iReceiptHeaderService.selectListEntityByEqual(receiptHeader);
        if (list.size()<1){
            return AjaxResult.success("系统中出入库单已全部下发成功!");
        }
        ReceiptHeader item = iReceiptHeaderService.selectFirstEntity(receiptHeader);
        ConfirmHeaderModel cfh = new ConfirmHeaderModel();
        cfh.setCubeCode(item.getUserDef1());
        cfh.setOrderHeaderId(item.getId());
        cfh.setOrderCode(item.getCode());
        cfh.setOrderType("receipt");
        cfh.setWarehouseCode(item.getWarehouseCode());
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        cfh.setcDatetime(df.format(new Date()));
        ConfirmModel confirmModel = new ConfirmModel();
        confirmModel.setConfirmHeaderModel(cfh);
        ReceiptDetail receiptDetail = new ReceiptDetail();
        receiptDetail.setReceiptId(item.getId());
        List<ReceiptDetail> details = iReceiptDetailService.selectListEntityByEqual(receiptDetail);
        List<ConfirmTypeModel> typeModels = new ArrayList<>();
        //遍历入库子单
        for (ReceiptDetail ds:details){
            ConfirmTypeModel cft = new ConfirmTypeModel();
            cft.setOrderDetailId(ds.getId());
            cft.setCompanyCode(ds.getCompanyCode());
            cft.setContainerCode("0");
            cft.setItemCode(ds.getMaterialCode());
            Material material = iMaterialService.selectNameBycode(ds.getMaterialCode());
            cft.setItemName(material.getName());
            cft.setItemBarcode(material.getBarcode());
            cft.setItemState(ds.getInventoryStatus());
            float a = Convert.toFloat(ds.getQty());
            cft.setQty(a);
            cft.setItemUnit(material.getMasterUnit());
            typeModels.add(cft);
        }
        confirmModel.setOrderItems(typeModels);

        try {
        String JsonParam = JSON.toJSONString(confirmModel);
        String result = HttpUtils.bodypost(url, JsonParam);
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        ReceiptHeader receiptHeaderOver = new ReceiptHeader();
        short statusover = 100;
        receiptHeaderOver.setId(item.getId());
        receiptHeaderOver.setFirstStatus(statusover);
        receiptHeaderOver.setLastStatus(statusover);
        iReceiptHeaderService.updateHeader(receiptHeaderOver);
        return ajaxResult;
        }catch (Exception e){
            throw new ServiceException("单据状态更新失败");
        }

    }



    public AjaxResult shipmentAssign(String url) {
        ShipmentHeader shipmentHeader = new ShipmentHeader();
        shipmentHeader.setSourcePlatform("SSP");
        shipmentHeader.setLastStatus(0);
        shipmentHeader.setLastStatus(0);
        //判断系统中是否有钱柜的还未下发的出库单
        List<ShipmentHeader> list = iShipmentHeaderService.selectListEntityByEqual(shipmentHeader);
        if (list.size()<1){
            return receiptAssign(url);
        }
        ShipmentHeader item = iShipmentHeaderService.selectFirstEntity(shipmentHeader);
        ConfirmHeaderModel cfh = new ConfirmHeaderModel();
        cfh.setCubeCode(item.getUserDef1());
        cfh.setOrderHeaderId(item.getId());
        cfh.setOrderCode(item.getCode());
        cfh.setOrderType("shipment");
        cfh.setWarehouseCode(item.getWarehouseCode());
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        cfh.setcDatetime(df.format(new Date()));
        ConfirmModel confirmModel = new ConfirmModel();
        confirmModel.setConfirmHeaderModel(cfh);
        ShipmentDetail shipmentDetail = new ShipmentDetail();
        shipmentDetail.setShipmentId(item.getId());
        List<ShipmentDetail> details = iShipmentDetailService.selectListEntityByEqual(shipmentDetail);
        List<ConfirmTypeModel> typeModels = new ArrayList<>();
        //遍历入库子单
        for (ShipmentDetail ds:details){
            ConfirmTypeModel cft = new ConfirmTypeModel();
            cft.setOrderDetailId(ds.getId());
            cft.setCompanyCode(ds.getCompanyCode());
            cft.setContainerCode("0");
            cft.setItemCode(ds.getMaterialCode());
            Material material = iMaterialService.selectNameBycode(ds.getMaterialCode());
            cft.setItemName(material.getName());
            cft.setItemBarcode(material.getBarcode());
            cft.setItemState(ds.getInventoryStatus());
            float a = Convert.toFloat(ds.getQty());
            cft.setQty(a);
            cft.setItemUnit(material.getMasterUnit());
            typeModels.add(cft);
        }
        confirmModel.setOrderItems(typeModels);
        try {
        String JsonParam = JSON.toJSONString(confirmModel);
        String result = HttpUtils.bodypost(url, JsonParam);
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);

        ShipmentHeader shipmentHeaderOver = new ShipmentHeader();
        shipmentHeaderOver.setId(item.getId());
        shipmentHeaderOver.setFirstStatus(100);
        shipmentHeaderOver.setLastStatus(100);
        iShipmentHeaderService.updateHeader(shipmentHeaderOver);
            return ajaxResult;
        }catch (Exception e){
            throw new ServiceException("单据状态更新失败");
        }

    }
}