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; } }