|
|
@ -31,6 +31,7 @@ import com.alibaba.fastjson.JSON; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
|
import com.yxt.anrui.base.api.baseaccadjapply.*; |
|
|
|
import com.yxt.anrui.base.api.baseaccadjapply.flow.BaseAccAdjApplyTaskQuery; |
|
|
|
import com.yxt.anrui.base.api.baseaccadjapply.flow.GetNodeQuery; |
|
|
@ -38,6 +39,7 @@ import com.yxt.anrui.base.api.baseaccadjapply.flow.GetNodeVo; |
|
|
|
import com.yxt.anrui.base.api.baseaccadjapply.flow.SubmitBaseAccAdjApplyDto; |
|
|
|
import com.yxt.anrui.base.api.baseaccadjapplyeveh.BaseAccadjApplyeVeh; |
|
|
|
import com.yxt.anrui.base.api.baseaccadjapply.AppVehicleVersionVo; |
|
|
|
import com.yxt.anrui.base.api.baseinternalpurchase.BaseInternalPurchase; |
|
|
|
import com.yxt.anrui.base.api.baseinternalpurchasevehicle.BaseInternalPurchaseVehicle; |
|
|
|
import com.yxt.anrui.base.api.baseinternalpurchasevehicle.BaseInternalPurchaseVehicleDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo; |
|
|
@ -55,6 +57,10 @@ import com.yxt.anrui.base.common.enums.ManPurOrderType; |
|
|
|
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.busdeliveredapply.BusDeliveredApply; |
|
|
|
import com.yxt.anrui.buscenter.api.busdeliveredapplydetails.BusDeliveredApplyDetails; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesordersubmit.BusSalesOrderSubmit; |
|
|
|
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordSourceLCVo; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer; |
|
|
@ -81,19 +87,25 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserVo; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.UserRoleQuery; |
|
|
|
import com.yxt.anrui.reportcenter.api.carsSoldProfit.CarsSoldProfitDto; |
|
|
|
import com.yxt.anrui.reportcenter.api.carsSoldProfit.CarsSoldProfitFeign; |
|
|
|
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiff; |
|
|
|
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffInitDetails; |
|
|
|
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffPdfVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryDto; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryFeign; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQueryDto; |
|
|
|
import com.yxt.anrui.scm.api.scmvehiclegression.ScmVehicleGression; |
|
|
|
import com.yxt.anrui.scm.api.scmwarehouse.ScmWarehouseFeign; |
|
|
|
import com.yxt.anrui.scm.api.scmwarehouse.ScmWarehouseVo; |
|
|
|
import com.yxt.common.base.utils.ConstantUtils; |
|
|
|
import com.yxt.common.base.utils.WordUtils; |
|
|
|
import com.yxt.messagecenter.api.message.Message; |
|
|
|
import com.yxt.messagecenter.api.message.MessageFeign; |
|
|
|
import com.yxt.messagecenter.api.message.MessageFlowVo; |
|
|
|
import com.yxt.messagecenter.api.message.MessageFlowableQuery; |
|
|
|
import com.yxt.messagecenter.api.messagelist.MessageList; |
|
|
|
import com.yxt.messagecenter.api.messagelist.MessageListFeign; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
@ -102,11 +114,15 @@ import com.yxt.common.base.utils.PagerUtil; |
|
|
|
import com.yxt.common.core.query.PagerQuery; |
|
|
|
import com.yxt.common.core.result.ResultBean; |
|
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
|
import org.apache.tomcat.util.threads.ThreadPoolExecutor; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import static java.util.Comparator.comparing; |
|
|
@ -154,6 +170,8 @@ public class BaseAccadjApplyService extends MybatisBaseService<BaseAccadjApplyMa |
|
|
|
private MessageFeign messageFeign; |
|
|
|
@Autowired |
|
|
|
private MessageListFeign messageListFeign; |
|
|
|
@Autowired |
|
|
|
private CarsSoldProfitFeign carsSoldProfitFeign; |
|
|
|
|
|
|
|
public PagerVo<BaseAccadjApplyVo> listPageVo(PagerQuery<BaseAccadjApplyQuery> pq) { |
|
|
|
BaseAccadjApplyQuery query = pq.getParams(); |
|
|
@ -712,6 +730,21 @@ public class BaseAccadjApplyService extends MybatisBaseService<BaseAccadjApplyMa |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
baseAccadjApply = fetchBySid(bv.getBusinessSid()); |
|
|
|
try { |
|
|
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
|
|
|
.setNameFormat("demo-pool-%d").build(); |
|
|
|
ExecutorService pool = new ThreadPoolExecutor(2, 100, |
|
|
|
0L, TimeUnit.MILLISECONDS, |
|
|
|
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); |
|
|
|
BaseAccadjApply finalBaseAccadjApply = baseAccadjApply; |
|
|
|
Future future1 = pool.submit(() -> { |
|
|
|
pushCarSoldProfit(finalBaseAccadjApply); |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return rb.success().setData(resultBean.getData()); |
|
|
|
} else { |
|
|
@ -719,6 +752,79 @@ public class BaseAccadjApplyService extends MybatisBaseService<BaseAccadjApplyMa |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void pushCarSoldProfit(BaseAccadjApply baseAccadjApply) { |
|
|
|
List<CarsSoldProfitDto> dtoList = new ArrayList<>(); |
|
|
|
if("调出".equals(baseAccadjApply.getAccadjTypeValue())){ |
|
|
|
List<BaseAccadjApplyeVeh> detailsList = baseAccadjApplyeVehService.selectByMainSid(baseAccadjApply.getSid()); |
|
|
|
detailsList.removeAll(Collections.singleton(null)); |
|
|
|
if (!detailsList.isEmpty()) { |
|
|
|
for (int i = 0; i < detailsList.size(); i++) { |
|
|
|
BaseAccadjApplyeVeh baseAccadjApplyeVeh = detailsList.get(i); |
|
|
|
BaseInternalPurchaseVehicle baseInternalPurchaseVehicle = baseInternalPurchaseVehicleService.fetchBySid(baseAccadjApplyeVeh.getPurchaseSid()); |
|
|
|
BaseVehicle baseVehicle= baseVehicleService.selVehicleByVinNoAndOrgSid(baseInternalPurchaseVehicle.getVinNo(), baseAccadjApply.getCallOutOrgSid()); |
|
|
|
SysUserVo sysUserVo = sysUserFeign.fetchBySid(baseAccadjApply.getCreateBySid()).getData(); |
|
|
|
CarsSoldProfitDto carsSoldProfitDto = new CarsSoldProfitDto(); |
|
|
|
if(sysUserVo != null){ |
|
|
|
carsSoldProfitDto.setStaffSid(sysUserVo.getStaffSid());//销售专员
|
|
|
|
carsSoldProfitDto.setStaffName(sysUserVo.getName()); |
|
|
|
carsSoldProfitDto.setCustomerSid(baseAccadjApply.getCallInOrgSid()); |
|
|
|
carsSoldProfitDto.setCustomerName(baseAccadjApply.getCallInOrgName()); |
|
|
|
} |
|
|
|
//车辆台账中取
|
|
|
|
carsSoldProfitDto.setOrgSidPath(baseVehicle.getOrgSidPath()); |
|
|
|
//分公司
|
|
|
|
carsSoldProfitDto.setUseOrgSid(baseVehicle.getUseOrgSid()); |
|
|
|
carsSoldProfitDto.setUseOrgName(baseVehicle.getUseOrgName()); |
|
|
|
//销售日期
|
|
|
|
carsSoldProfitDto.setSaleDate(new Date()); |
|
|
|
//车架号
|
|
|
|
carsSoldProfitDto.setVinNo(baseVehicle.getVinNo().substring(baseVehicle.getVinNo().length() - 8)); |
|
|
|
carsSoldProfitDto.setVinSid(baseVehicle.getSid()); |
|
|
|
//车型
|
|
|
|
carsSoldProfitDto.setVehModelSid(baseVehicle.getModelSid()); |
|
|
|
carsSoldProfitDto.setVehMConfigSid(baseVehicle.getModelConfigSid()); |
|
|
|
//采购系统
|
|
|
|
carsSoldProfitDto.setPurchaseSystemSid(baseVehicle.getPurchaseSystemSid()); |
|
|
|
carsSoldProfitDto.setPurchaseSystemName(baseVehicle.getPurchaseSystemName()); |
|
|
|
//入库价-内销价格
|
|
|
|
carsSoldProfitDto.setCostPrice(baseInternalPurchaseVehicle.getInitialWitPinMoney()); |
|
|
|
//出库价
|
|
|
|
carsSoldProfitDto.setExStockPrice(baseInternalPurchaseVehicle.getWitPinMoney()); |
|
|
|
//存放地点
|
|
|
|
carsSoldProfitDto.setLocationSid(baseVehicle.getLocation()); |
|
|
|
carsSoldProfitDto.setLocationName(baseVehicle.getLocationName()); |
|
|
|
//排产订单编号
|
|
|
|
carsSoldProfitDto.setSchedulingId(baseVehicle.getOrderingNo()); |
|
|
|
//数据日期
|
|
|
|
carsSoldProfitDto.setCreateDate(new Date()); |
|
|
|
//事业部
|
|
|
|
List<String> stringList = Arrays.asList(carsSoldProfitDto.getOrgSidPath().split("/")); |
|
|
|
String busSid = stringList.get(1); |
|
|
|
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(busSid).getData(); |
|
|
|
carsSoldProfitDto.setDivision(sysOrganization.getName()); |
|
|
|
carsSoldProfitDto.setDivisionSid(busSid); |
|
|
|
dtoList.add(carsSoldProfitDto); |
|
|
|
//查询存放地点变更的申请经费以及台数
|
|
|
|
ScmVehicleGression scmVehicleGression = baseMapper.selectByLocationAndVin(carsSoldProfitDto.getLocationSid(),baseVehicle.getSid()); |
|
|
|
if(scmVehicleGression != null){ |
|
|
|
BigDecimal allMon = BigDecimal.ZERO; |
|
|
|
String applicantFunds = scmVehicleGression.getApplicantFunds(); |
|
|
|
int vount = baseMapper.selectCOuntByScmSid(scmVehicleGression.getSid()); |
|
|
|
if(StringUtils.isNotBlank(applicantFunds) && new BigDecimal(applicantFunds).compareTo(BigDecimal.ZERO)>0){ |
|
|
|
allMon = new BigDecimal(applicantFunds).divide(new BigDecimal(vount),2, RoundingMode.HALF_UP); |
|
|
|
} |
|
|
|
carsSoldProfitDto.setMoveCarPrice(allMon.toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (!dtoList.isEmpty()) { |
|
|
|
ResultBean resultBean = carsSoldProfitFeign.saveOrUpdate(dtoList); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//调车调账构造销售出库单数据
|
|
|
|
private void createSalOutStock(BaseAccadjApply baseAccadjApply) { |
|
|
|
//获取车辆台账表中的采购部门sid
|
|
|
|