ICSShipmentAPIService.java 10.3 KB
package com.huaheng.api.U8.Service;

import com.alibaba.fastjson.JSON;
import com.huaheng.api.U8.domain.ICSShipmentDetail;
import com.huaheng.api.U8.domain.ICSShipmentHeader;
import com.huaheng.api.U8.domain.ICSShipmentModel;
import com.huaheng.api.general.service.ShipmentAPIService;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.general.company.domain.Company;
import com.huaheng.pc.general.company.service.ICompanyService;
import com.huaheng.pc.general.material.domain.Material;
import com.huaheng.pc.general.material.service.IMaterialService;
import com.huaheng.pc.general.warehouse.domain.Warehouse;
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.domain.ShipmentModel;
import com.huaheng.pc.shipment.shipmentHeader.service.IShipmentHeaderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Service
public class ICSShipmentAPIService {

    @Autowired
    private IShipmentHeaderService shipmentHeaderService;
    @Autowired
    IShipmentDetailService shipmentDetailService;
    @Autowired
    private ICompanyService companyService;
    @Autowired
    private IMaterialService materialService;
    @Autowired
    private ICSShipmentHeaderService icsShipmentHeaderService;
    @Autowired
    private ICSShipmentDetailService icsShipmentDetailService;
    @Autowired
    private ShipmentAPIService shipmentAPIService;

    //u8-wms出库下发
    @Transactional
    public AjaxResult insertICSShipment(ICSShipmentModel icsShipmentModel){

        //获取主单和子单列
        if(icsShipmentModel==null){
            return AjaxResult.error("u8上传参数错误");
        }
        ICSShipmentHeader icsShipmentHeader=icsShipmentModel.getIcsShipmentHeader();
        List<ICSShipmentDetail> icsShipmentDetails=icsShipmentModel.getIcsShipmentDetails();
        if(icsShipmentHeader==null || icsShipmentDetails==null){
            return AjaxResult.error("缺少主子单据");
        }
        //判断系统中有没有该货主
        companyService.checkwarehouseCompany(icsShipmentHeader.getCompanyCode());

        //将主表插入到新的接收主表里去
        int result=icsShipmentHeaderService.insertModel(icsShipmentHeader);
        if(result<1){
            return AjaxResult.error("出库主单传输失败!");
        }

        //将子表插入到新的接收子表里去
        for(ICSShipmentDetail item : icsShipmentDetails){
            int result1=icsShipmentDetailService.insertModel(item);
            if(result1<1){
                return AjaxResult.error("出库子单传输失败!");
            }
        }

        //根据icsShipmentHeader生成shipmentHeader
        String type=icsShipmentHeader.getType();
        ShipmentHeader shipmentHeader=new ShipmentHeader();
        Warehouse warehouse=new Warehouse();
        String warehouseCode=new String();
        if(type.equals("调拨")){
            warehouseCode=icsShipmentHeader.getoWHCode();
        }else {
            warehouseCode=icsShipmentHeader.getcWHCode();
        }
        warehouse.setCode(warehouseCode);
        Company company=new Company();
        String companyCode=icsShipmentHeader.getCompanyCode();
        company.setCode(companyCode);
        String code = shipmentHeaderService.createCode(type);

        shipmentHeader.setType(type);
        shipmentHeader.setId(null);
        shipmentHeader.setLastUpdated(null);
        shipmentHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
        shipmentHeader.setCreated(null);
        shipmentHeader.setCreatedBy(ShiroUtils.getLoginName());
        shipmentHeader.setWarehouseCode(warehouseCode);
        shipmentHeader.setCompanyCode(companyCode);
        shipmentHeader.setCode(code);
        if(type.equals("生产")){
            shipmentHeader.setSourceCode(icsShipmentHeader.getMoCode());
        }else if(type.equals("销售")){
            shipmentHeader.setSourceCode(icsShipmentHeader.getcDLCode());
        }else if(type.equals("调拨")){
            shipmentHeader.setSourceCode(icsShipmentHeader.getcTVCode());
        }
        else {
            shipmentHeader.setSourceCode(icsShipmentHeader.getcCode());
        }




        //根据icsShipmentDetail生成shipmentAetail
        List<ShipmentDetail> shipmentDetails=new ArrayList<ShipmentDetail>();
        for(ICSShipmentDetail icsShipmentDetail : icsShipmentDetails) {
            //查找物料
            Material material = new Material();
            material.setCode(icsShipmentDetail.getcInvCode());
            material=materialService.selectFirstEntity(material);
            if(material==null){
                return AjaxResult.error("物料不存在");
            }

            ShipmentDetail shipmentDetail = new ShipmentDetail();
            shipmentDetail.setId(null);
            shipmentDetail.setWarehouseCode(icsShipmentDetail.getcWHCode());
            shipmentDetail.setMaterialCode(icsShipmentDetail.getcInvCode());
            shipmentDetail.setCreated(null);
            shipmentDetail.setCreatedBy(ShiroUtils.getLoginName());
            shipmentDetail.setLastUpdated(null);
            shipmentDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
            shipmentDetail.setCompanyCode(icsShipmentDetail.getCompanyCode());
            shipmentDetail.setShipmentCode(shipmentHeader.getCode());
            shipmentDetail.setQty(icsShipmentDetail.getcQuantity());
            shipmentDetail.setQtyCompleted(icsShipmentDetail.getcQuantity());
            shipmentDetail.setPrice(new BigDecimal(icsShipmentDetail.getcComUnitName()));
            if (StringUtils.isNotEmpty(icsShipmentDetail.getIrowno().toString())) {
                shipmentDetail.setSourceLine(icsShipmentDetail.getIrowno().toString());
            }
            if (StringUtils.isNotEmpty(icsShipmentDetail.getSortSeq().toString())) {
                shipmentDetail.setSourceLine(icsShipmentDetail.getSortSeq().toString());
            }
           shipmentDetails.add(shipmentDetail);
        }

        //调用公共API
        ShipmentModel shipmentModel=new ShipmentModel();
        shipmentModel.setShipmentHeader(shipmentHeader);
        shipmentModel.setShipmentDetails(shipmentDetails);
        return shipmentAPIService.insertShipment(shipmentModel);
    }



    //wms-u8出库回传
    public AjaxResult ConfirmICSShipment(String url){

        //先找到出库主单
        ShipmentHeader shipmentHeader = new ShipmentHeader();
        shipmentHeader.setLastStatus(300);
        shipmentHeader = shipmentHeaderService.selectFirstEntity(shipmentHeader);
        if (shipmentHeader == null) {
            return AjaxResult.error("出库回传主单不存在");
        }
        ShipmentDetail shipmentDetail = new ShipmentDetail();

        shipmentDetail.setShipmentCode(shipmentHeader.getCode());
        List<ShipmentDetail> shipmentDetails = shipmentDetailService.selectListEntityByEqual(shipmentDetail);
        if (shipmentDetails == null) {
            return AjaxResult.error("出库回传子单不存在");
        }

        ICSShipmentHeader icsShipmentHeader=new ICSShipmentHeader();
        String type=shipmentHeader.getType();
        String code=shipmentHeader.getSourceCode();
        List<ICSShipmentDetail> icsShipmentDetails=new ArrayList<ICSShipmentDetail>();
        ICSShipmentDetail icsShipmentDetail=new ICSShipmentDetail();


        //出库类型为采购的主单和子单
        if(type.equals("采购")){
            icsShipmentHeader.setcCode(code);
            icsShipmentHeader=icsShipmentHeaderService.selectModel(icsShipmentHeader);
            icsShipmentHeader.setID(shipmentHeader.getId());
            icsShipmentDetail.setcCode(code);
            icsShipmentDetails=icsShipmentDetailService.selectList(icsShipmentDetail);
            for(ICSShipmentDetail item :icsShipmentDetails){
                shipmentDetail.setShipmentCode(code);
                shipmentDetail.setSourceLine(item.getIrowno().toString());
                shipmentDetailService.selectFirstEntity(shipmentDetail);
                item.setID(shipmentDetail.getId());
            }
        }

        //出库类型为材料或其他的主单和子单
        if(type.equals("材料") || type.equals("其他")){
            icsShipmentHeader.setcCode(code);
            icsShipmentHeader=icsShipmentHeaderService.selectModel(icsShipmentHeader);
            icsShipmentDetail.setcCode(code);
            icsShipmentDetails=icsShipmentDetailService.selectList(icsShipmentDetail);
        }

        //出库类型为销售的主单和子单
        if(type.equals("销售")){
            icsShipmentHeader.setcDLCode (code);
            icsShipmentHeader=icsShipmentHeaderService.selectModel(icsShipmentHeader);
            icsShipmentHeader.setcCode(shipmentHeader.getSourceCode());
            icsShipmentHeader.setID(icsShipmentHeader.getDLID());
            icsShipmentHeader.setdDate(icsShipmentHeader.getdPODate());
        }

        //出库类型为调拨的主单和子单
        if(type.equals("调拨")){
            icsShipmentHeader.setcTVCode (code);
            icsShipmentHeader=icsShipmentHeaderService.selectModel(icsShipmentHeader);
            icsShipmentHeader.setcCode(shipmentHeader.getSourceCode());
            icsShipmentHeader.setcWHCode(icsShipmentHeader.getoWHCode());
            icsShipmentHeader.setcWHName(icsShipmentHeader.getoWHName());
        }



        ICSShipmentModel model=new ICSShipmentModel();
        model.setIcsShipmentHeader(icsShipmentHeader);
        model.setIcsShipmentDetails(icsShipmentDetails);
        String JsonParam = JSON.toJSONString(model);
        String result = HttpUtils.sendPost(url, JsonParam);
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        shipmentHeader.setFirstStatus(900);
        shipmentHeader.setLastStatus(900);
        shipmentHeaderService.updateByModel(shipmentHeader);
        return ajaxResult;

    }
}