|
|
@ -26,15 +26,31 @@ |
|
|
|
package com.yxt.anrui.base.biz.basevehinstall; |
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basetrailer.BaseTrailer; |
|
|
|
import com.yxt.anrui.base.api.basetrailermodel.BaseTrailerModel; |
|
|
|
import com.yxt.anrui.base.api.basevehicle.BaseVehicle; |
|
|
|
import com.yxt.anrui.base.api.basevehicleout.BaseVehicleOut; |
|
|
|
import com.yxt.anrui.base.api.basevehicleout.BaseVehicleOutDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basevehicleoutapply.BaseVehicleOutApply; |
|
|
|
import com.yxt.anrui.base.api.basevehinstallmodel.BaseVehinstallmodel; |
|
|
|
import com.yxt.anrui.base.api.basevehinstallmodel.BaseVehinstallmodelDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basevehmodelconfig.BaseVehmodelVo; |
|
|
|
import com.yxt.anrui.base.biz.basepurchasesystem.BasePurchaseSystemService; |
|
|
|
import com.yxt.anrui.base.biz.basevehicle.BaseVehicleService; |
|
|
|
import com.yxt.anrui.base.biz.basevehicleout.BaseVehicleOutService; |
|
|
|
import com.yxt.anrui.base.biz.basevehicleoutapply.BaseVehicleOutApplyService; |
|
|
|
import com.yxt.anrui.base.biz.basevehinstallmodel.BaseVehinstallmodelService; |
|
|
|
import com.yxt.anrui.base.biz.basevehmodelconfig.BaseVehmodelConfigService; |
|
|
|
import com.yxt.anrui.base.common.enums.VehicleState; |
|
|
|
import com.yxt.anrui.base.common.utils.Rule; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
|
import com.yxt.common.base.utils.PagerUtil; |
|
|
@ -51,6 +67,10 @@ import com.yxt.anrui.base.api.basevehinstall.BaseVehinstallFeign; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
/** |
|
|
@ -75,6 +95,17 @@ public class BaseVehinstallService extends MybatisBaseService<BaseVehinstallMapp |
|
|
|
private BaseVehicleService baseVehicleService; |
|
|
|
@Autowired |
|
|
|
private BaseVehmodelConfigService baseVehmodelConfigService; |
|
|
|
@Autowired |
|
|
|
private BaseVehicleOutService baseVehicleOutService; |
|
|
|
@Autowired |
|
|
|
private BasePurchaseSystemService basePurchaseSystemService; |
|
|
|
@Autowired |
|
|
|
private BaseVehicleOutApplyService baseVehicleOutApplyService; |
|
|
|
@Resource |
|
|
|
private FinKingDeeFeign finKingDeeFeign; |
|
|
|
@Autowired |
|
|
|
private SysOrganizationFeign sysOrganizationFeign; |
|
|
|
|
|
|
|
|
|
|
|
private QueryWrapper<BaseVehinstall> createQueryWrapper(BaseVehinstallQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
@ -228,4 +259,169 @@ public class BaseVehinstallService extends MybatisBaseService<BaseVehinstallMapp |
|
|
|
public int selectNumGCRK(String bill) { |
|
|
|
return baseMapper.selectNumGCRK(bill); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean vehinstallOut(String sid) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
BaseVehinstall baseVehinstall = fetchBySid(sid); |
|
|
|
if (baseVehinstall.getVehicleStateKey().equals("0002")) { |
|
|
|
return rb.setMsg("该挂车已出库"); |
|
|
|
} |
|
|
|
BaseVehicle baseVehicle = baseVehicleService.selVehicleByVinNoAndOrgSid(baseVehinstall.getVinNo(),baseVehinstall.getCreateOrg()); |
|
|
|
String vehicleState = baseVehicle.getVehicleState(); |
|
|
|
if (!vehicleState.equals("0002")) { |
|
|
|
return rb.setMsg("此主车车辆库存状态不是出库,请重新选择"); |
|
|
|
} |
|
|
|
BaseVehicleOutDetailsVo baseVehicleOutDetailsVo = baseVehicleOutService.selByOrgSidAndVehSid(baseVehinstall.getCreateOrg(), baseVehicle.getSid()); |
|
|
|
BaseVehicleOut baseVehicleOut = new BaseVehicleOut(); |
|
|
|
BeanUtil.copyProperties(baseVehicleOutDetailsVo, baseVehicleOut, "sid"); |
|
|
|
baseVehicleOut.setTypeKey("003"); |
|
|
|
baseVehicleOut.setType("上装挂车"); |
|
|
|
String billNo = ""; |
|
|
|
BasePurchaseSystemDetailsVo basePurchaseSystemDetailsVo = basePurchaseSystemService.fetchDetailsByDeptSid(baseVehicle.getPurchaseSystemSid()).getData(); |
|
|
|
String date = DateUtil.format(DateUtil.date(), "yyyyMM"); |
|
|
|
billNo = "XSCKD" + basePurchaseSystemDetailsVo.getOrgCode() + date; |
|
|
|
String i = baseMapper.selectNum(billNo); |
|
|
|
if (StringUtils.isNotBlank(i)) { |
|
|
|
billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); |
|
|
|
} else { |
|
|
|
billNo = Rule.getBillNo(billNo, 0); |
|
|
|
} |
|
|
|
baseVehicleOut.setBillNo(billNo); |
|
|
|
baseVehicleOut.setTrailerOrInstallMGroupCode("99.02"); |
|
|
|
baseVehicleOut.setTrailerOrInstallMGroupName("挂车"); |
|
|
|
baseVehicleOut.setTrailerOrInstallCode(baseVehinstall.getVinNo().substring(baseVehinstall.getVinNo().length() - 8) + "SZ"); |
|
|
|
baseVehicleOut.setSzOrGCSid(baseVehinstall.getSid()); |
|
|
|
baseVehicleOut.setTrailerOrInstallName("上装"); |
|
|
|
BaseVehinstallmodel baseVehinstallmodel = baseVehinstallmodelService.fetchBySid(baseVehinstall.getMainSid()); |
|
|
|
String wk_long = baseVehinstallmodel.getWk_long(); |
|
|
|
String wk_wide = baseVehinstallmodel.getWk_wide(); |
|
|
|
String wk_high = baseVehinstallmodel.getWk_high(); |
|
|
|
String installName = baseVehinstallmodel.getInstallNameValue(); |
|
|
|
StringBuilder vehinstallmodel = new StringBuilder(); |
|
|
|
vehinstallmodel.append(installName).append("(").append("长").append(wk_long).append("mm,").append("宽").append(wk_wide).append("mm,").append("高").append(wk_high).append("mm").append(")"); |
|
|
|
baseVehicleOut.setTrailerOrInstall(vehinstallmodel.toString()); |
|
|
|
baseVehicleOut.setTrailerOrInstallDealPrice(baseVehinstall.getGuidePrice()); |
|
|
|
//备注
|
|
|
|
String remarks1 = createRemarks(baseVehicleOut); |
|
|
|
String remarks2 = baseVehicleOut.getRemarks(); |
|
|
|
String remarks3 = remarks2 + remarks1; |
|
|
|
if ("null".equals(remarks3)) { |
|
|
|
remarks3 = ""; |
|
|
|
} |
|
|
|
baseVehicleOut.setRemarks(remarks3); |
|
|
|
BaseVehicleOutApply baseVehicleOutApply = new BaseVehicleOutApply(); |
|
|
|
baseVehicleOutApply.setBillNo(billNo); |
|
|
|
baseVehicleOutApply.setSaleDate(baseVehicleOut.getSaleDate()); |
|
|
|
baseVehicleOutApply.setCustomerSid(baseVehicleOut.getCustomerSid()); |
|
|
|
baseVehicleOutApply.setCustomerName(baseVehicleOut.getCustomerName()); |
|
|
|
baseVehicleOutApply.setMobile(baseVehicleOut.getMobile()); |
|
|
|
baseVehicleOutApply.setOrgSid(baseVehicleOut.getOrgSid()); |
|
|
|
baseVehicleOutApply.setOrgName(baseVehicleOut.getOrgName()); |
|
|
|
baseVehicleOutApply.setStaffSid(baseVehicleOut.getStaffSid()); |
|
|
|
baseVehicleOutApply.setStaffName(baseVehicleOut.getStaffName()); |
|
|
|
baseVehicleOutApply.setMakeListSid(baseVehicleOut.getCreateBySid()); |
|
|
|
baseVehicleOutApply.setMakeListName(baseVehicleOut.getCreateByName()); |
|
|
|
baseVehicleOutApply.setMakeListDate(DateUtil.format(new Date(), "yyyy-MM-dd")); |
|
|
|
baseVehicleOutApply.setSaleTypeKey(baseVehicleOut.getTypeKey()); |
|
|
|
baseVehicleOutApply.setSaleTypeValue(baseVehicleOut.getType()); |
|
|
|
baseVehicleOutApply.setCreateOrgSid(baseVehicleOut.getCreateOrgSid()); |
|
|
|
baseVehicleOutApply.setCreateBySid(baseVehicleOut.getCreateBySid()); |
|
|
|
//保存车辆出库单主表
|
|
|
|
baseVehicleOutApplyService.save(baseVehicleOutApply); |
|
|
|
//出库单子表关联主表sid
|
|
|
|
baseVehicleOut.setMainSid(baseVehicleOutApply.getSid()); |
|
|
|
baseVehicleOut.setCreateBySid(baseVehicleOut.getCreateBySid()); |
|
|
|
baseVehicleOut.setCreateByName(baseVehicleOut.getCreateByName()); |
|
|
|
baseVehicleOut.setManPurOrderTypeKey(baseVehicle.getManPurOrderTypeKey()); |
|
|
|
baseVehicleOut.setManPurOrderTypeValue(baseVehicle.getManPurOrderTypeValue()); |
|
|
|
//保存车辆出库单子表
|
|
|
|
baseVehicleOutService.save(baseVehicleOut); |
|
|
|
//推送金蝶上装销售出库单
|
|
|
|
SalOutStock salOutStock = createSzOrGcSalOutStock(baseVehinstall, baseVehicle, baseVehicleOut); |
|
|
|
finKingDeeFeign.draftSalOutStock(salOutStock); |
|
|
|
List<SalOutStock.FEntity> fEntity = salOutStock.getFEntity(); |
|
|
|
for (SalOutStock.FEntity entity : fEntity) { |
|
|
|
String substring = entity.getFMaterialID().substring(entity.getFMaterialID().length() - 1); |
|
|
|
if ("Z".equals(substring)) { |
|
|
|
baseVehinstall.setVehicleStateKey(VehicleState.StockEnum.OUT_STOCK.getCode()); |
|
|
|
baseVehinstall.setVehicleStateValue(VehicleState.StockEnum.OUT_STOCK.getRemarks()); |
|
|
|
baseVehinstall.setSalesDate(DateUtil.formatDate(new Date())); |
|
|
|
saveOrUpdate(baseVehinstall); |
|
|
|
} |
|
|
|
} |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
|
|
|
|
private String createRemarks(BaseVehicleOut baseVehicleOut) { |
|
|
|
String note = ""; |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getMiddleOne())) { |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getMiddleTwo())) { |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getRebateMoneyOne().toString())) { |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getRebateMoneyTwo().toString())) { |
|
|
|
note = note + " 返利情况:" + baseVehicleOut.getMiddleOne() + baseVehicleOut.getRebateMoneyOne() + "," + baseVehicleOut.getMiddleTwo() + baseVehicleOut.getRebateMoneyTwo() + "。"; |
|
|
|
} else { |
|
|
|
note = note + " 返利情况:" + baseVehicleOut.getMiddleOne() + baseVehicleOut.getRebateMoneyOne() + "。"; |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getRebateMoneyTwo().toString())) { |
|
|
|
note = note + " 返利情况:" + baseVehicleOut.getMiddleTwo() + baseVehicleOut.getRebateMoneyTwo() + "。"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getRebateMoneyOne().toString())) { |
|
|
|
note = note + " 返利情况:" + baseVehicleOut.getMiddleOne() + baseVehicleOut.getRebateMoneyOne() + "。"; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getMiddleTwo())) { |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getRebateMoneyTwo().toString())) { |
|
|
|
note = note + " 返利情况:" + baseVehicleOut.getMiddleOne() + baseVehicleOut.getRebateMoneyOne() + "。"; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return note; |
|
|
|
} |
|
|
|
|
|
|
|
private SalOutStock createSzOrGcSalOutStock(BaseVehinstall baseVehinstall, BaseVehicle baseVehicle, BaseVehicleOut baseVehicleOut) { |
|
|
|
SalOutStock salOutStock = new SalOutStock(); |
|
|
|
//单据编号
|
|
|
|
salOutStock.setFBillNo(baseVehicleOut.getBillNo()); |
|
|
|
//日期
|
|
|
|
salOutStock.setFDate(DateUtil.today()); |
|
|
|
//分公司id
|
|
|
|
BasePurchaseSystemDetailsVo basePurchaseSystemDetailsVo = basePurchaseSystemService.fetchDetailsByDeptSid(baseVehicle.getPurchaseSystemSid()).getData(); |
|
|
|
salOutStock.setFSaleOrgId(basePurchaseSystemDetailsVo.getOrgCode()); |
|
|
|
//客户
|
|
|
|
salOutStock.setFCustomerID(baseVehicleOut.getCwCustomerNo()); |
|
|
|
//销售部门id
|
|
|
|
ResultBean<SysOrganizationVo> resultBean = sysOrganizationFeign.fetchBySid(baseVehicle.getPurchaseSystemSid()); |
|
|
|
if (resultBean.getSuccess()) { |
|
|
|
SysOrganizationVo vo = resultBean.getData(); |
|
|
|
if (vo != null) { |
|
|
|
salOutStock.setFSaleDeptID(vo.getOrgCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
//项目类别key和项目类别type
|
|
|
|
salOutStock.setF_PAEZ_AssistantType("payType"); |
|
|
|
//销售类型-外采挂车映射
|
|
|
|
salOutStock.setF_PAEZ_AssistantKey("009"); |
|
|
|
//物料列表
|
|
|
|
List<SalOutStock.FEntity> fEntityList = new ArrayList<>(); |
|
|
|
SalOutStock.FEntity fEntity = new SalOutStock.FEntity(); |
|
|
|
//单价
|
|
|
|
fEntity.setFPrice(baseVehicleOut.getTrailerOrInstallDealPrice()); |
|
|
|
//物料编码
|
|
|
|
fEntity.setFMaterialID(baseVehinstall.getVinNo().substring(baseVehinstall.getVinNo().length() - 8) + "SZ"); |
|
|
|
//仓库id
|
|
|
|
fEntity.setFStockID(baseVehicle.getLocationCode()); |
|
|
|
fEntityList.add(fEntity); |
|
|
|
if (fEntityList.size() > 0) { |
|
|
|
salOutStock.setFEntity(fEntityList); |
|
|
|
return salOutStock; |
|
|
|
} else { |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
} |