|
|
@ -30,25 +30,35 @@ import cn.hutool.core.date.DateUtil; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
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.basetrailer.BaseTrailerDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basetrailermodel.BaseTrailerModel; |
|
|
|
import com.yxt.anrui.base.api.basetraileroutapply.*; |
|
|
|
import com.yxt.anrui.base.api.basetraileroutapply.flowable.BaseTrailerOutApplyNodeQuery; |
|
|
|
import com.yxt.anrui.base.api.basetraileroutapply.flowable.BaseTrailerOutApplyNodeVo; |
|
|
|
import com.yxt.anrui.base.api.basetraileroutapply.flowable.BaseTrailerOutApplyTaskQuery; |
|
|
|
import com.yxt.anrui.base.api.basetraileroutapply.flowable.SubmitBaseTrailerOutApplyDto; |
|
|
|
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.commonappendix.CommonAppendixVo; |
|
|
|
import com.yxt.anrui.base.biz.basepurchasesystem.BasePurchaseSystemService; |
|
|
|
import com.yxt.anrui.base.biz.basetrailer.BaseTrailerService; |
|
|
|
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.commonappendix.CommonAppendixService; |
|
|
|
import com.yxt.anrui.base.common.enums.BillTypeEnum; |
|
|
|
import com.yxt.anrui.base.common.enums.VehicleState; |
|
|
|
import com.yxt.anrui.base.common.utils.Rule; |
|
|
|
import com.yxt.anrui.base.common.utils.domain.BillNo; |
|
|
|
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.BusArrearsCarryVehicleApplyVo; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice; |
|
|
|
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; |
|
|
|
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; |
|
|
|
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplication; |
|
|
|
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplicationDetailsVo; |
|
|
@ -60,7 +70,11 @@ import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleDetailsVo; |
|
|
|
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleFeign; |
|
|
|
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleVo; |
|
|
|
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo; |
|
|
|
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign; |
|
|
|
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoiceDto; |
|
|
|
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoiceFeign; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock; |
|
|
|
import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery; |
|
|
|
import com.yxt.anrui.flowable.api.flow.FlowableFeign; |
|
|
|
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; |
|
|
@ -91,6 +105,7 @@ import com.yxt.common.core.vo.PagerVo; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
@ -137,6 +152,20 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
private CommonAppendixService commonAppendixService; |
|
|
|
@Autowired |
|
|
|
private FileUploadComponent fileUploadComponent; |
|
|
|
@Autowired |
|
|
|
private BaseVehicleOutService baseVehicleOutService; |
|
|
|
@Autowired |
|
|
|
private BaseVehicleOutApplyService baseVehicleOutApplyService; |
|
|
|
@Autowired |
|
|
|
private BasePurchaseSystemService basePurchaseSystemService; |
|
|
|
@Autowired |
|
|
|
private FinVehicleInvoiceFeign finVehicleInvoiceFeign; |
|
|
|
@Resource |
|
|
|
private FinKingDeeFeign finKingDeeFeign; |
|
|
|
@Autowired |
|
|
|
private FinCompanyInvoicingFeign finCompanyInvoicingFeign; |
|
|
|
@Autowired |
|
|
|
private CrmCustomerTempFeign crmCustomerTempFeign; |
|
|
|
|
|
|
|
private QueryWrapper<BaseTrailerOutApply> createQueryWrapper(BaseTrailerOutApplyQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
@ -169,15 +198,21 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
return p; |
|
|
|
} |
|
|
|
|
|
|
|
public String saveOrUpdateDto(BaseTrailerOutApplyDto dto) { |
|
|
|
public ResultBean<String> saveOrUpdateDto(BaseTrailerOutApplyDto dto) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
String dtoSid = dto.getSid(); |
|
|
|
if (StringUtils.isBlank(dtoSid)) { |
|
|
|
String gcSid = dto.getGcSid(); |
|
|
|
int i = baseMapper.selectByGcSid(gcSid); |
|
|
|
if (i > 0) { |
|
|
|
return rb.setMsg("该挂车出库申请已存在"); |
|
|
|
} |
|
|
|
dto.setNodeState("待提交"); |
|
|
|
String sid = this.insertByDto(dto); |
|
|
|
return sid; |
|
|
|
return rb.success().setData(sid); |
|
|
|
} |
|
|
|
this.updateByDto(dto); |
|
|
|
return dtoSid; |
|
|
|
return rb.success().setData(dtoSid); |
|
|
|
} |
|
|
|
|
|
|
|
public String insertByDto(BaseTrailerOutApplyDto dto) { |
|
|
@ -208,7 +243,7 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
//合格证附件
|
|
|
|
List<CommonAppendixVo> appAppendixList = commonAppendixService.getAppAppendixList(baseTrailer.getSid(), "挂车合格证照片"); |
|
|
|
List<String> hgzFiles = new ArrayList<>(); |
|
|
|
if (!appAppendixList.isEmpty()){ |
|
|
|
if (!appAppendixList.isEmpty()) { |
|
|
|
for (CommonAppendixVo commonAppendixVo : appAppendixList) { |
|
|
|
String filePath = commonAppendixVo.getFilePath(); |
|
|
|
String urlPrefix = fileUploadComponent.getUrlPrefix(); |
|
|
@ -217,6 +252,7 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
} |
|
|
|
} |
|
|
|
vo.setHgzFiles(hgzFiles); |
|
|
|
vo.setCreateTime(DateUtil.formatDate(entity.getCreateTime())); |
|
|
|
return vo; |
|
|
|
} |
|
|
|
|
|
|
@ -296,7 +332,7 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
//合格证附件
|
|
|
|
List<CommonAppendixVo> appAppendixList = commonAppendixService.getAppAppendixList(baseTrailer.getSid(), "挂车合格证照片"); |
|
|
|
List<String> hgzFiles = new ArrayList<>(); |
|
|
|
if (!appAppendixList.isEmpty()){ |
|
|
|
if (!appAppendixList.isEmpty()) { |
|
|
|
for (CommonAppendixVo commonAppendixVo : appAppendixList) { |
|
|
|
String filePath = commonAppendixVo.getFilePath(); |
|
|
|
String urlPrefix = fileUploadComponent.getUrlPrefix(); |
|
|
@ -343,7 +379,11 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致"); |
|
|
|
} |
|
|
|
//新增修改保存
|
|
|
|
String businessSid = saveOrUpdateDto(dto); |
|
|
|
ResultBean<String> resultBean = saveOrUpdateDto(dto); |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
|
} |
|
|
|
String businessSid = resultBean.getData(); |
|
|
|
//创建BusinessVariables实体对象
|
|
|
|
BusinessVariables bv = new BusinessVariables(); |
|
|
|
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
|
|
|
@ -456,6 +496,91 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
UpdateFlowFieldVo ufVo = resultBean.getData(); |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); |
|
|
|
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { |
|
|
|
BaseVehicle baseVehicle = baseVehicleService.fetchBySid(baseTrailerOutApply.getZcSid()); |
|
|
|
//生成单据编号
|
|
|
|
String billNo = ""; |
|
|
|
BasePurchaseSystemDetailsVo basePurchaseSystemDetailsVo = basePurchaseSystemService.fetchDetailsByDeptSid(baseVehicle.getPurchaseSystemSid()).getData(); |
|
|
|
String date = DateUtil.format(DateUtil.date(), "yyyyMM"); |
|
|
|
billNo = "XSCKD" + basePurchaseSystemDetailsVo.getOrgCode() + date; |
|
|
|
String i = baseVehicleOutService.selectNum(billNo); |
|
|
|
if (StringUtils.isNotBlank(i)) { |
|
|
|
billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); |
|
|
|
} else { |
|
|
|
billNo = Rule.getBillNo(billNo, 0); |
|
|
|
} |
|
|
|
BaseVehicleOutDetailsVo baseVehicleOutDetailsVo = baseVehicleOutService.selByOrgSidAndVehSid(baseTrailerOutApply.getUseOrgSid(), baseTrailerOutApply.getZcSid()); |
|
|
|
BaseVehicleOutApply baseVehicleOutApply = baseVehicleOutApplyService.fetchBySid(baseVehicleOutDetailsVo.getMainSid()); |
|
|
|
//出库主表信息录入
|
|
|
|
baseVehicleOutApply.setSid(UUID.randomUUID().toString()); |
|
|
|
baseVehicleOutApply.setBillNo(billNo); |
|
|
|
//保存车辆出库单主表
|
|
|
|
baseVehicleOutApplyService.save(baseVehicleOutApply); |
|
|
|
BaseVehicleOut baseVehicleOut = new BaseVehicleOut(); |
|
|
|
baseVehicleOut.setCreateBySid(baseVehicleOutApply.getCreateBySid()); |
|
|
|
baseVehicleOut.setZcMGroupCode("99.02"); |
|
|
|
baseVehicleOut.setZcMGroupName("挂车"); |
|
|
|
baseVehicleOut.setVinNo(baseTrailerOutApply.getGcVinNo()); |
|
|
|
baseVehicleOut.setVinSid(baseTrailerOutApply.getZcSid()); |
|
|
|
baseVehicleOut.setPrice(new BigDecimal(baseTrailerOutApply.getOneBillMoney())); |
|
|
|
//出库单子表关联主表sid
|
|
|
|
baseVehicleOut.setMainSid(baseVehicleOutApply.getSid()); |
|
|
|
baseVehicleOut.setManPurOrderTypeKey(baseVehicle.getManPurOrderTypeKey()); |
|
|
|
baseVehicleOut.setManPurOrderTypeValue(baseVehicle.getManPurOrderTypeValue()); |
|
|
|
baseVehicleOut.setMaterialCode(baseTrailerOutApply.getGcVinNo().substring(baseTrailerOutApply.getGcVinNo().length() - 8) + "G"); |
|
|
|
baseVehicleOut.setMaterialName("挂车"); |
|
|
|
baseVehicleOut.setMaterialTypeKey("002"); |
|
|
|
baseVehicleOut.setMaterialTypeValue("挂车"); |
|
|
|
baseVehicleOut.setMaterialSid(baseTrailerOutApply.getGcSid()); |
|
|
|
baseVehicleOut.setCwCustomerNo(baseVehicleOutDetailsVo.getCwCustomerNo()); |
|
|
|
//保存车辆出库单子表
|
|
|
|
baseVehicleOutService.save(baseVehicleOut); |
|
|
|
//推送金蝶挂车销售出库单
|
|
|
|
SalOutStock salOutStock = createSzOrGcSalOutStockNew(baseVehicle, baseVehicleOut, baseVehicleOutApply); |
|
|
|
finKingDeeFeign.draftSalOutStock(salOutStock); |
|
|
|
BaseTrailer baseTrailer = baseTrailerService.fetchBySid(baseTrailerOutApply.getGcSid()); |
|
|
|
baseTrailer.setStockStateKey(VehicleState.StockEnum.OUT_STOCK.getCode()); |
|
|
|
baseTrailer.setStockStateValue(VehicleState.StockEnum.OUT_STOCK.getRemarks()); |
|
|
|
baseTrailer.setDealPrice(baseVehicleOut.getPrice()); |
|
|
|
baseTrailer.setIssueDate(DateUtil.formatDate(new Date())); |
|
|
|
baseTrailerService.saveOrUpdate(baseTrailer); |
|
|
|
FinVehicleInvoiceDto finVehicleInvoiceDto = new FinVehicleInvoiceDto(); |
|
|
|
finVehicleInvoiceDto.setInvoiceTitle(baseTrailerOutApply.getInvoiceTitle()); |
|
|
|
finVehicleInvoiceDto.setContractNo(baseTrailerOutApply.getContractNo()); |
|
|
|
finVehicleInvoiceDto.setCustomerName(baseTrailerOutApply.getCustomerName()); |
|
|
|
finVehicleInvoiceDto.setVehicleSid(baseTrailer.getSid()); |
|
|
|
finVehicleInvoiceDto.setVIN(baseTrailer.getVinNo()); |
|
|
|
finVehicleInvoiceDto.setInvoiceTypeKey(baseTrailerOutApply.getBillTypeKey()); |
|
|
|
finVehicleInvoiceDto.setInvoiceType(baseTrailerOutApply.getBillTypeValue()); |
|
|
|
finVehicleInvoiceDto.setInvoiceAmount(baseTrailer.getDealPrice()); |
|
|
|
finVehicleInvoiceDto.setBillingStateKey("001"); |
|
|
|
finVehicleInvoiceDto.setBillingState("未开票"); |
|
|
|
finVehicleInvoiceDto.setTransferStateKey("001"); |
|
|
|
finVehicleInvoiceDto.setTransferState("未移交"); |
|
|
|
finVehicleInvoiceDto.setVehicleType("挂车"); |
|
|
|
FinBillVehicleDetailsVo finBillVehicleDetailsVo = finBillVehicleFeign.fetchByVehSid(baseTrailerOutApply.getZcSid()).getData(); |
|
|
|
String billAppSid = finBillVehicleDetailsVo.getBillAppSid(); |
|
|
|
FinBillApplicationDetailsVo finBillApplicationDetailsVo = finBillApplicationFeign.fetchDetailsBySid(billAppSid).getData(); |
|
|
|
finVehicleInvoiceDto.setBillingSid(finBillApplicationDetailsVo.getSid()); |
|
|
|
finVehicleInvoiceDto.setInvoicingName(finBillVehicleDetailsVo.getOpenTickName()); |
|
|
|
finVehicleInvoiceDto.setCreateBySid(finBillApplicationDetailsVo.getCreateBySid()); |
|
|
|
finVehicleInvoiceDto.setBusinessStateKey(finBillApplicationDetailsVo.getBillStateKey()); |
|
|
|
finVehicleInvoiceDto.setBusinessState(finBillApplicationDetailsVo.getBillStateValue()); |
|
|
|
finVehicleInvoiceDto.setUseOrgSid(finBillApplicationDetailsVo.getUseOrgSid()); |
|
|
|
FinCompanyInvoicingDetailsVo finCompanyInvoicingDetailsVo = finCompanyInvoicingFeign.fetchDetailsBySid(finBillVehicleDetailsVo.getOpenTickSid()).getData(); |
|
|
|
if (StringUtils.isNotBlank(finCompanyInvoicingDetailsVo.getBankAccount())) { |
|
|
|
finVehicleInvoiceDto.setAddress(finCompanyInvoicingDetailsVo.getAddress()); |
|
|
|
finVehicleInvoiceDto.setTelPhone(finCompanyInvoicingDetailsVo.getPhone()); |
|
|
|
finVehicleInvoiceDto.setOpeningBank(finCompanyInvoicingDetailsVo.getBankName()); |
|
|
|
finVehicleInvoiceDto.setBankNum(finCompanyInvoicingDetailsVo.getBankAccount()); |
|
|
|
finVehicleInvoiceDto.setTaxpayerNo(finCompanyInvoicingDetailsVo.getTaxpayerNo()); |
|
|
|
finVehicleInvoiceDto.setIsTakeTicket("是"); |
|
|
|
} else { |
|
|
|
CrmCustomerTempVo crmCustomerTempVo = crmCustomerTempFeign.fetchSid(finBillVehicleDetailsVo.getOpenTickSid()).getData(); |
|
|
|
finVehicleInvoiceDto.setTelPhone(crmCustomerTempVo.getMobile()); |
|
|
|
finVehicleInvoiceDto.setTaxpayerNo(crmCustomerTempVo.getIDNumber()); |
|
|
|
finVehicleInvoiceDto.setIsTakeTicket("是"); |
|
|
|
} |
|
|
|
finVehicleInvoiceFeign.saveOrUpdate(finVehicleInvoiceDto); |
|
|
|
} else { |
|
|
|
//极光推送
|
|
|
|
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); |
|
|
@ -635,4 +760,42 @@ public class BaseTrailerOutApplyService extends MybatisBaseService<BaseTrailerOu |
|
|
|
} |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致!"); |
|
|
|
} |
|
|
|
|
|
|
|
private SalOutStock createSzOrGcSalOutStockNew(BaseVehicle baseVehicle, BaseVehicleOut baseVehicleOut, BaseVehicleOutApply baseVehicleOutApply) { |
|
|
|
SalOutStock salOutStock = new SalOutStock(); |
|
|
|
//单据编号
|
|
|
|
salOutStock.setFBillNo(baseVehicleOutApply.getBillNo()); |
|
|
|
//日期
|
|
|
|
salOutStock.setFDate(DateUtil.today()); |
|
|
|
//分公司id
|
|
|
|
BasePurchaseSystemDetailsVo basePurchaseSystemDetailsVo = basePurchaseSystemService.fetchDetailsByDeptSid(baseVehicle.getPurchaseSystemSid()).getData(); |
|
|
|
salOutStock.setFSaleOrgId(basePurchaseSystemDetailsVo.getOrgCode()); |
|
|
|
//客户
|
|
|
|
salOutStock.setFCustomerID(baseVehicleOut.getCwCustomerNo()); |
|
|
|
//销售部门id
|
|
|
|
String orgDeptSid = baseVehicleOutApply.getOrgSid(); |
|
|
|
ResultBean<SysOrganizationVo> resultBean = sysOrganizationFeign.fetchBySid(orgDeptSid); |
|
|
|
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.getPrice().toString()); |
|
|
|
//物料编码
|
|
|
|
fEntity.setFMaterialID(baseVehicleOut.getMaterialCode()); |
|
|
|
//仓库id
|
|
|
|
fEntity.setFStockID("ARZSCK"); |
|
|
|
fEntityList.add(fEntity); |
|
|
|
salOutStock.setFEntity(fEntityList); |
|
|
|
return salOutStock; |
|
|
|
} |
|
|
|
} |