Browse Source

Merge remote-tracking branch 'origin/master'

master
yunuo970428 2 years ago
parent
commit
b660aa90b1
  1. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelconfig/ModelConfigListQuery.java
  2. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleQuery.java
  3. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModel.java
  4. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelDetailsVo.java
  5. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelDto.java
  6. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelSelectVo.java
  7. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelVo.java
  8. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseaccadjapply/BaseAccadjApplyService.java
  9. 44
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigService.java
  10. 35
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java
  11. 28
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclemodel/BaseVehicleModelService.java
  12. 6
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java
  13. 11
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java
  14. 4
      anrui-base/anrui-base-biz/src/main/resources/ftl/carFin.ftl
  15. 4
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busmaindeposit/BusMainDepositService.java
  16. 9
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmation.java
  17. 13
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDetailsVo.java
  18. 9
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDto.java
  19. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeign.java
  20. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeignFallback.java
  21. 9
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/app/FinConfirmDto.java
  22. 10
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationRest.java
  23. 27
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  24. 1
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrgStaffVo.java
  25. 5
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationMapper.xml
  26. 14
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java
  27. 2
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinboundquery/ScmApplyInboundQueryQuery.java
  28. 2
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinboundvehquery/ScmApplyInboundVehQueryDto.java
  29. 2
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java
  30. 25
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinboundquery/ScmApplyInboundQueryMapper.xml
  31. 24
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinboundquery/ScmApplyInboundQueryService.java
  32. 1
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleenterlibrary/ScmVehicleEnterlibraryService.java

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelconfig/ModelConfigListQuery.java

@ -58,8 +58,8 @@ public class ModelConfigListQuery implements Query {
private String userSid; private String userSid;
@ApiModelProperty("分公司:后端内部使用") @ApiModelProperty("分公司:后端内部使用")
private String useOrg; private String useOrg;
// @ApiModelProperty("分公司:机构sid") @ApiModelProperty("分公司:机构sid")
// private String orgPath; private String orgPath;
@ApiModelProperty(value = "标签") @ApiModelProperty(value = "标签")
private String label; private String label;

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleQuery.java

@ -71,6 +71,8 @@ public class BaseVehicleQuery implements Query {
private String vehicleTypeCode; private String vehicleTypeCode;
@ApiModelProperty(value = "变速箱") @ApiModelProperty(value = "变速箱")
private String gearboxType; private String gearboxType;
@ApiModelProperty(value = "变速箱类型key")
private String tranCaseTypeKey;
@ApiModelProperty(value = "排放标准") @ApiModelProperty(value = "排放标准")
private String emissionStandard; private String emissionStandard;
@ApiModelProperty(value = "发动机型号") @ApiModelProperty(value = "发动机型号")

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModel.java

@ -131,4 +131,9 @@ public class BaseVehicleModel extends BaseEntity {
private String announcementModel; private String announcementModel;
@ApiModelProperty(value = "细分市场") @ApiModelProperty(value = "细分市场")
private String marketSegmentsValue; private String marketSegmentsValue;
@ApiModelProperty(value = "变速箱类型key")
private String tranCaseTypeKey;
@ApiModelProperty(value = "变速箱类型value")
private String tranCaseTypeValue;
} }

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelDetailsVo.java

@ -53,6 +53,10 @@ public class BaseVehicleModelDetailsVo implements Vo {
private String gearboxType; private String gearboxType;
@ApiModelProperty(value = "变速箱value") @ApiModelProperty(value = "变速箱value")
private String gearboxTypeValue; private String gearboxTypeValue;
@ApiModelProperty(value = "变速箱类型key")
private String tranCaseTypeKey;
@ApiModelProperty(value = "变速箱类型value")
private String tranCaseTypeValue;
@ApiModelProperty(value = "燃料种类key") @ApiModelProperty(value = "燃料种类key")
private String fuelType; private String fuelType;
@ApiModelProperty(value = "燃料种类value") @ApiModelProperty(value = "燃料种类value")

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelDto.java

@ -91,6 +91,10 @@ public class BaseVehicleModelDto implements Dto {
@ApiModelProperty(value = "变速箱value值") @ApiModelProperty(value = "变速箱value值")
private String gearboxTypeValue; private String gearboxTypeValue;
@ApiModelProperty(value = "变速箱类型key")
private String tranCaseTypeKey;
@ApiModelProperty(value = "变速箱类型value")
private String tranCaseTypeValue;
@ApiModelProperty(value = "燃料种类", required = true) @ApiModelProperty(value = "燃料种类", required = true)
private String fuelType; private String fuelType;
@ApiModelProperty(value = "燃料种类value值") @ApiModelProperty(value = "燃料种类value值")

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelSelectVo.java

@ -52,6 +52,10 @@ public class BaseVehicleModelSelectVo implements Vo {
private String gearboxType; private String gearboxType;
@ApiModelProperty(value = "变速箱value") @ApiModelProperty(value = "变速箱value")
private String gearboxTypeValue; private String gearboxTypeValue;
@ApiModelProperty(value = "变速箱类型key")
private String tranCaseTypeKey;
@ApiModelProperty(value = "变速箱类型value")
private String tranCaseTypeValue;
@ApiModelProperty(value = "燃料种类key") @ApiModelProperty(value = "燃料种类key")
private String fuelType; private String fuelType;
@ApiModelProperty(value = "燃料种类value") @ApiModelProperty(value = "燃料种类value")

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelVo.java

@ -46,6 +46,8 @@ public class BaseVehicleModelVo implements Vo {
private String driveForm; private String driveForm;
@ApiModelProperty(value = "马力") @ApiModelProperty(value = "马力")
private String power; private String power;
@ApiModelProperty(value = "变速箱类型")
private String tranCaseTypeValue;
@ApiModelProperty(value = "变速箱") @ApiModelProperty(value = "变速箱")
private String gearboxTypeValue; private String gearboxTypeValue;
@ApiModelProperty(value = "燃料种类") @ApiModelProperty(value = "燃料种类")

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseaccadjapply/BaseAccadjApplyService.java

@ -596,10 +596,8 @@ public class BaseAccadjApplyService extends MybatisBaseService<BaseAccadjApplyMa
List<ScmApplyInboundVehQueryDto> scmApplyInboundVehQuerys = new ArrayList<>(); List<ScmApplyInboundVehQueryDto> scmApplyInboundVehQuerys = new ArrayList<>();
for (BaseInternalPurchaseVehicle baseInternalPurchaseVehicle : baseInternalPurchaseVehicles2) { for (BaseInternalPurchaseVehicle baseInternalPurchaseVehicle : baseInternalPurchaseVehicles2) {
ScmApplyInboundVehQueryDto scmApplyInboundVehQueryDto = new ScmApplyInboundVehQueryDto(); ScmApplyInboundVehQueryDto scmApplyInboundVehQueryDto = new ScmApplyInboundVehQueryDto();
scmApplyInboundVehQueryDto.setVinNo(baseInternalPurchaseVehicle.getVinNo()); scmApplyInboundVehQueryDto.setVinNo(baseInternalPurchaseVehicle.getVinNo());
BaseVehicle baseVehicle1 = baseVehicleService.selVehicleByVinNoAndOrgSid(baseInternalPurchaseVehicle.getVinNo(), baseAccadjApply.getCallInOrgSid()); BaseVehicle baseVehicle1 = baseVehicleService.selVehicleByVinNoAndOrgSid(baseInternalPurchaseVehicle.getVinNo(), baseAccadjApply.getCallInOrgSid());
scmApplyInboundVehQueryDto.setVehSid(baseVehicle1.getSid());
BaseVehicleBrand baseVehicleBrand = baseVehicleBrandService.fetchBySid(baseVehicle1.getCarBrandSid()); BaseVehicleBrand baseVehicleBrand = baseVehicleBrandService.fetchBySid(baseVehicle1.getCarBrandSid());
scmApplyInboundVehQueryDto.setMgroupCode(baseVehicleBrand.getBrandCode()); scmApplyInboundVehQueryDto.setMgroupCode(baseVehicleBrand.getBrandCode());
scmApplyInboundVehQueryDto.setMgroupName(baseVehicleBrand.getBrandName()); scmApplyInboundVehQueryDto.setMgroupName(baseVehicleBrand.getBrandName());

44
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigService.java

@ -6,11 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basemodelconfig.*; import com.yxt.anrui.base.api.basemodelconfig.*;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelVehicleVersionVo; import com.yxt.anrui.base.api.basemodelmodprice.BaseModelVehicleVersionVo;
import com.yxt.anrui.base.api.basevehicle.ConfigInfo;
import com.yxt.anrui.base.api.basevehicle.ModelLabel; import com.yxt.anrui.base.api.basevehicle.ModelLabel;
import com.yxt.anrui.base.api.basevehicle.MoreConfigVo; import com.yxt.anrui.base.api.basevehicle.MoreConfigVo;
import com.yxt.anrui.base.api.basevehicle.ConfigInfo;
import com.yxt.anrui.base.api.basevehicle.VehicleModelPriceVo;
import com.yxt.anrui.base.biz.basevehicleappendix.BaseVehicleAppendixService;
import com.yxt.anrui.base.biz.basevehiclemodelappendix.BaseVehicleModelAppendixService; import com.yxt.anrui.base.biz.basevehiclemodelappendix.BaseVehicleModelAppendixService;
import com.yxt.anrui.base.common.enums.VehicleState; import com.yxt.anrui.base.common.enums.VehicleState;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubVersionVo; import com.yxt.anrui.portal.api.appsubsetversion.AppSubVersionVo;
@ -321,7 +319,7 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
} }
return iPage; return iPage;
}*/ }*/
public List<BaseModelConfigListVo> getConfigName(List<BaseModelConfigListVo> records) { /*public List<BaseModelConfigListVo> getConfigName(List<BaseModelConfigListVo> records) {
for (BaseModelConfigListVo record : records) { for (BaseModelConfigListVo record : records) {
// String slowMachine = StringUtils.isNotBlank(record.getSlowMachine()) && "有".equals(record.getSlowMachine()) ? ("缓速器" + "/") : ""; // String slowMachine = StringUtils.isNotBlank(record.getSlowMachine()) && "有".equals(record.getSlowMachine()) ? ("缓速器" + "/") : "";
String slowMachine = StringUtils.isNotBlank(record.getSlowMachine()) ? (record.getSlowMachine() + "/") : ""; String slowMachine = StringUtils.isNotBlank(record.getSlowMachine()) ? (record.getSlowMachine() + "/") : "";
@ -373,7 +371,7 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
} }
return records; return records;
} }*/
/** /**
* 更多配置分页列表(非本公司的) * 更多配置分页列表(非本公司的)
@ -513,15 +511,15 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
public ModelConfigVo getModelConfigList(PagerQuery<ModelConfigListQuery> pagerQuery) { public ModelConfigVo getModelConfigList(PagerQuery<ModelConfigListQuery> pagerQuery) {
String userSid = pagerQuery.getParams().getUserSid(); String userSid = pagerQuery.getParams().getUserSid();
// String orgPath = pagerQuery.getParams().getOrgPath(); String orgPath = pagerQuery.getParams().getOrgPath();
// String orgSid = ""; String orgSid = "";
// if (StringUtils.isBlank(orgPath)) { if (StringUtils.isBlank(orgPath)) {
// orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData(); orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
// } else { } else {
// orgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData(); orgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
// } }
// 1、根据业务员部门sid查询分公司sid // 1、根据业务员部门sid查询分公司sid
String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData(); // String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
if (StringUtils.isNotBlank(orgSid)) { if (StringUtils.isNotBlank(orgSid)) {
pagerQuery.getParams().setUseOrg(orgSid); pagerQuery.getParams().setUseOrg(orgSid);
} }
@ -559,7 +557,6 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
//配置列表 //配置列表
IPage<ModelConfigListQuery> page = PagerUtil.queryToPage(pagerQuery); IPage<ModelConfigListQuery> page = PagerUtil.queryToPage(pagerQuery);
QueryWrapper<AppModelConfigListVo> qw = modelConfigQueryWrapper(pagerQuery.getParams()); QueryWrapper<AppModelConfigListVo> qw = modelConfigQueryWrapper(pagerQuery.getParams());
// List<AppModelConfigListVo> appModelConfigListVos = baseMapper.getModelConfigPageList(page, qw, VehicleState.LockEnum.UN_LOCK.getCode(), orgSid);
List<AppModelConfigListVo> appModelConfigListVos = baseMapper.getModelConfigPageList(qw, VehicleState.LockEnum.UN_LOCK.getCode(), orgSid); List<AppModelConfigListVo> appModelConfigListVos = baseMapper.getModelConfigPageList(qw, VehicleState.LockEnum.UN_LOCK.getCode(), orgSid);
long pages = page.getPages(); long pages = page.getPages();
vo.setPages((int) pages); vo.setPages((int) pages);
@ -581,7 +578,7 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
} }
appModelConfigListVo.setMoreList(moreConfigVos); appModelConfigListVo.setMoreList(moreConfigVos);
} }
addDonfigName(appModelConfigListVos); addDonfigName1(appModelConfigListVos);
vo.setModelConfigList(appModelConfigListVos); vo.setModelConfigList(appModelConfigListVos);
return vo; return vo;
} }
@ -640,11 +637,22 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
} }
appModelConfigListVo.setMoreList(moreConfigVos); appModelConfigListVo.setMoreList(moreConfigVos);
}*/ }*/
addDonfigName(appModelConfigListVos); addDonfigName1(appModelConfigListVos);
vo.setModelConfigList(appModelConfigListVos); vo.setModelConfigList(appModelConfigListVos);
return vo; return vo;
} }
public List<AppModelConfigListVo> addDonfigName1(List<AppModelConfigListVo> appModelConfigListVos) {
for (AppModelConfigListVo appModelConfigListVo : appModelConfigListVos) {
BaseModelConfig baseModelConfig = fetchBySid(appModelConfigListVo.getConfigSid());
String configName = configNameSpell(baseModelConfig);
appModelConfigListVo.setConfigName(configName);
}
return appModelConfigListVos;
}
/** /**
* 拼接常用车型字段configName * 拼接常用车型字段configName
* *
@ -870,7 +878,7 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
} }
appModelConfigListVo.setMoreList(moreConfigVos); appModelConfigListVo.setMoreList(moreConfigVos);
} }
addDonfigName(appModelConfigListVos1); addDonfigName1(appModelConfigListVos1);
return appModelConfigListVos; return appModelConfigListVos;
} }
@ -1049,7 +1057,7 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
} }
appModelConfigListVo.setMoreList(moreConfigVos); appModelConfigListVo.setMoreList(moreConfigVos);
} }
addDonfigName(appModelConfigListVos); addDonfigName1(appModelConfigListVos);
vo.setModelConfigList(appModelConfigListVos); vo.setModelConfigList(appModelConfigListVos);
return vo; return vo;
} }

35
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basemodelconfig.AppCarConfigSummaryVo; import com.yxt.anrui.base.api.basemodelconfig.AppCarConfigSummaryVo;
import com.yxt.anrui.base.api.basemodelconfig.AppModelConfigDetailsVo; import com.yxt.anrui.base.api.basemodelconfig.AppModelConfigDetailsVo;
import com.yxt.anrui.base.api.basemodelconfig.AppModelConfigListVo; import com.yxt.anrui.base.api.basemodelconfig.AppModelConfigListVo;
import com.yxt.anrui.base.api.basemodelconfig.BaseModelConfig;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelVehicleVersionVo; import com.yxt.anrui.base.api.basemodelmodprice.BaseModelVehicleVersionVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchSystemVo; import com.yxt.anrui.base.api.basepurchasesystem.BasePurchSystemVo;
import com.yxt.anrui.base.api.basevehicle.*; import com.yxt.anrui.base.api.basevehicle.*;
@ -208,6 +209,9 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
if (StringUtils.isNotBlank(pagerQuery.getVehicleTypeCode())) {//车型编码 if (StringUtils.isNotBlank(pagerQuery.getVehicleTypeCode())) {//车型编码
qw.like("bvm.vehicleTypeCode", pagerQuery.getVehicleTypeCode()); qw.like("bvm.vehicleTypeCode", pagerQuery.getVehicleTypeCode());
} }
if (StringUtils.isNotBlank(pagerQuery.getTranCaseTypeKey())) {//变速箱类型
qw.eq("bvm.tranCaseTypeKey", pagerQuery.getTranCaseTypeKey());
}
if (StringUtils.isNotBlank(pagerQuery.getGearboxType())) {//变速箱 if (StringUtils.isNotBlank(pagerQuery.getGearboxType())) {//变速箱
qw.eq("bvm.gearboxType", pagerQuery.getGearboxType()); qw.eq("bvm.gearboxType", pagerQuery.getGearboxType());
} }
@ -707,7 +711,7 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
vo.setPrice(guidedPriceMin + "-" + guidedPriceMax + "万元"); vo.setPrice(guidedPriceMin + "-" + guidedPriceMax + "万元");
//拼接常用车型 //拼接常用车型
List<AppModelConfigListVo> appModelConfigListVos = baseModelConfigService.selectAppConfigListByModelSid(modelSid); List<AppModelConfigListVo> appModelConfigListVos = baseModelConfigService.selectAppConfigListByModelSid(modelSid);
addDonfigName(appModelConfigListVos); baseModelConfigService.addDonfigName1(appModelConfigListVos);
vo.setModelConfigList(appModelConfigListVos); vo.setModelConfigList(appModelConfigListVos);
return vo; return vo;
} }
@ -896,7 +900,9 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
configDetailVo.setMoreConfig(otherConfig); configDetailVo.setMoreConfig(otherConfig);
} }
//拼接常用配置字段 //拼接常用配置字段
String modelInfoName = modelInfoName(configVo); // String modelInfoName = modelInfoName(configVo);
BaseModelConfig baseModelConfig = baseModelConfigService.fetchBySid(configSid);
String modelInfoName = baseModelConfigService.configNameSpell(baseModelConfig);
configDetailVo.setModelInfoName(modelInfoName); configDetailVo.setModelInfoName(modelInfoName);
return configDetailVo; return configDetailVo;
} }
@ -904,23 +910,6 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
// 拼接常用配置字段 // 拼接常用配置字段
public String modelInfoName(AppModelConfigDetailsVo configVo) { public String modelInfoName(AppModelConfigDetailsVo configVo) {
/* String brandName = StringUtils.isNotBlank(currentCarVo.getBrandName()) ? (currentCarVo.getBrandName() + "/") : "";
String vehicleType = StringUtils.isNotBlank(currentCarVo.getVehicleTypeValue()) ? (currentCarVo.getVehicleTypeValue() + "/") : "";
String productLine = StringUtils.isNotBlank(currentCarVo.getProductLineValue()) ? (currentCarVo.getProductLineValue() + "/") : "";
String driveForm = StringUtils.isNotBlank(currentCarVo.getDriveFormValue()) ? (currentCarVo.getDriveFormValue() + "/") : "";
String power = StringUtils.isNotBlank(currentCarVo.getPowerValue()) ? (currentCarVo.getPowerValue() + "/") : "";
String vehicleVersion = StringUtils.isNotBlank(currentCarVo.getVehicleVersionValue()) ? (currentCarVo.getVehicleVersionValue() + "/") : "";
String fuelType = StringUtils.isNotBlank(currentCarVo.getFuelTypeValue()) ? (currentCarVo.getFuelTypeValue() + "/") : "";
String gearboxType = StringUtils.isNotBlank(currentCarVo.getGearboxTypeValue()) ? (currentCarVo.getGearboxTypeValue() + "/") : "";
String emissionStandard = StringUtils.isNotBlank(currentCarVo.getEmissionStandardValue()) ? (currentCarVo.getEmissionStandardValue() + "/") : "";
String engineType = StringUtils.isNotBlank(currentCarVo.getEngineTypeValue()) ? (currentCarVo.getEngineTypeValue() + "/") : "";
String marketSegments = StringUtils.isNotBlank(currentCarVo.getMarketSegments()) ? (currentCarVo.getMarketSegments() + "/") : "";
String specifications = StringUtils.isNotBlank(currentCarVo.getSpecifications()) ? (currentCarVo.getSpecifications() + "/") : "";
String department = StringUtils.isNotBlank(currentCarVo.getDepartment()) ? (currentCarVo.getDepartment() + "/") : "";
String modelInfoName = brandName + vehicleType + productLine + driveForm + power + vehicleVersion + fuelType +
gearboxType + emissionStandard + engineType + marketSegments + specifications + department;
return modelInfoName.substring(0, modelInfoName.length() - 1);*/
String color = StringUtils.isNotBlank(configVo.getCarColor()) String color = StringUtils.isNotBlank(configVo.getCarColor())
? (configVo.getCarColor() + "/") : ""; ? (configVo.getCarColor() + "/") : "";
String slowMachine = StringUtils.isNotBlank(configVo.getSlowMachine()) String slowMachine = StringUtils.isNotBlank(configVo.getSlowMachine())
@ -1436,7 +1425,7 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
*/ */
public AppCarConfigSummaryVo addConfigName(AppModelConfigListVo appModelConfigListVo) { public AppCarConfigSummaryVo addConfigName(AppModelConfigListVo appModelConfigListVo) {
AppCarConfigSummaryVo vo = new AppCarConfigSummaryVo(); AppCarConfigSummaryVo vo = new AppCarConfigSummaryVo();
String slowMachine = StringUtils.isNotBlank(appModelConfigListVo.getSlowMachine()) ? (appModelConfigListVo.getSlowMachine() + "/") : ""; /*String slowMachine = StringUtils.isNotBlank(appModelConfigListVo.getSlowMachine()) ? (appModelConfigListVo.getSlowMachine() + "/") : "";
String rearViewMirror = StringUtils.isNotBlank(appModelConfigListVo.getRearViewMirror()) ? (appModelConfigListVo.getRearViewMirror() + "/") : ""; String rearViewMirror = StringUtils.isNotBlank(appModelConfigListVo.getRearViewMirror()) ? (appModelConfigListVo.getRearViewMirror() + "/") : "";
@ -1475,7 +1464,9 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
String multimedia = StringUtils.isNotBlank(appModelConfigListVo.getMultimedia()) && StringUtils.equals(appModelConfigListVo.getMultimedia(), "有") ? ("多媒体") : ""; String multimedia = StringUtils.isNotBlank(appModelConfigListVo.getMultimedia()) && StringUtils.equals(appModelConfigListVo.getMultimedia(), "有") ? ("多媒体") : "";
String configName = slowMachine + rearViewMirror + tireSize + specification + rearAxleValue + rearAxleRatio + airConditioner + hubMaterial + String configName = slowMachine + rearViewMirror + tireSize + specification + rearAxleValue + rearAxleRatio + airConditioner + hubMaterial +
baffleModel + suspension + seat + tireCover + saddle + wheelbase + bumper + configuringBao + independentSources + fuelTank + multimedia; baffleModel + suspension + seat + tireCover + saddle + wheelbase + bumper + configuringBao + independentSources + fuelTank + multimedia;*/
BaseModelConfig baseModelConfig = baseModelConfigService.fetchBySid(appModelConfigListVo.getConfigSid());
String configName = baseModelConfigService.configNameSpell(baseModelConfig);
vo.setConfig(configName); vo.setConfig(configName);
vo.setModel(appModelConfigListVo.getModel()); vo.setModel(appModelConfigListVo.getModel());
vo.setMoreConfig(appModelConfigListVo.getOtherConfig()); vo.setMoreConfig(appModelConfigListVo.getOtherConfig());
@ -3215,7 +3206,7 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
//配置sid //配置sid
String configSid = appOrderDetailsVo.getModelInfo().getConfigSid(); String configSid = appOrderDetailsVo.getModelInfo().getConfigSid();
qw.eq("bv.modelSid",modelSid); qw.eq("bv.modelSid",modelSid);
qw.eq("bv.configSid",configSid); qw.eq("bv.modelConfigSid",configSid);
} }
//非删除 //非删除
qw.eq("bv.isDelete",0); qw.eq("bv.isDelete",0);

28
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclemodel/BaseVehicleModelService.java

@ -571,51 +571,55 @@ public class BaseVehicleModelService extends MybatisBaseService<BaseVehicleModel
StringBuilder modelName = new StringBuilder(); StringBuilder modelName = new StringBuilder();
//功能 //功能
if (StringUtils.isNotBlank(dto.getVehicleTypeValue()) && !"-".equals(dto.getVehicleTypeValue())){ if (StringUtils.isNotBlank(dto.getVehicleTypeValue()) && !"-".equals(dto.getVehicleTypeValue())){
modelName.append(dto.getVehicleTypeValue()).append("/"); modelName.append(dto.getVehicleTypeValue());
} }
//系列 //系列
if (StringUtils.isNotBlank(dto.getProductLineValue()) && !"-".equals(dto.getProductLineValue())){ if (StringUtils.isNotBlank(dto.getProductLineValue()) && !"-".equals(dto.getProductLineValue())){
modelName.append(dto.getProductLineValue()).append("/"); modelName.append("/").append(dto.getProductLineValue());
} }
//驱动 //驱动
if (StringUtils.isNotBlank(dto.getDriveFormValue()) && !"-".equals(dto.getDriveFormValue())){ if (StringUtils.isNotBlank(dto.getDriveFormValue()) && !"-".equals(dto.getDriveFormValue())){
modelName.append(dto.getDriveFormValue()).append("/"); modelName.append("/").append(dto.getDriveFormValue());
} }
//马力 //马力
if (StringUtils.isNotBlank(dto.getPowerValue()) && !"-".equals(dto.getPowerValue())){ if (StringUtils.isNotBlank(dto.getPowerValue()) && !"-".equals(dto.getPowerValue())){
modelName.append(dto.getPowerValue()).append("/"); modelName.append("/").append(dto.getPowerValue());
} }
//版本 //版本
if (StringUtils.isNotBlank(dto.getVehicleVersionValue()) && !"-".equals(dto.getVehicleVersionValue())){ if (StringUtils.isNotBlank(dto.getVehicleVersionValue()) && !"-".equals(dto.getVehicleVersionValue())){
modelName.append(dto.getVehicleVersionValue()).append("/"); modelName.append("/").append(dto.getVehicleVersionValue());
} }
//燃料 //燃料
if (StringUtils.isNotBlank(dto.getFuelTypeValue()) && !"-".equals(dto.getFuelTypeValue())){ if (StringUtils.isNotBlank(dto.getFuelTypeValue()) && !"-".equals(dto.getFuelTypeValue())){
modelName.append(dto.getFuelTypeValue()).append("/"); modelName.append("/").append(dto.getFuelTypeValue());
} }
//排放标准 //排放标准
if (StringUtils.isNotBlank(dto.getEmissionStandardValue()) && !"-".equals(dto.getEmissionStandardValue())){ if (StringUtils.isNotBlank(dto.getEmissionStandardValue()) && !"-".equals(dto.getEmissionStandardValue())){
modelName.append(dto.getEmissionStandardValue()).append("/"); modelName.append("/").append(dto.getEmissionStandardValue());
} }
//发动机型号 //发动机型号
if (StringUtils.isNotBlank(dto.getEngineTypeValue()) && !"-".equals(dto.getEngineTypeValue())){ if (StringUtils.isNotBlank(dto.getEngineTypeValue()) && !"-".equals(dto.getEngineTypeValue())){
modelName.append(dto.getEngineTypeValue()).append("/"); modelName.append("/").append(dto.getEngineTypeValue());
}
//变速箱类型
if (StringUtils.isNotBlank(dto.getTranCaseTypeValue()) && !"-".equals(dto.getTranCaseTypeValue())){
modelName.append(dto.getTranCaseTypeValue()).append("/");
} }
//变速箱 //变速箱
if (StringUtils.isNotBlank(dto.getGearboxTypeValue()) && !"-".equals(dto.getGearboxTypeValue())){ if (StringUtils.isNotBlank(dto.getGearboxTypeValue()) && !"-".equals(dto.getGearboxTypeValue())){
modelName.append(dto.getGearboxTypeValue()).append("/"); modelName.append("/").append(dto.getGearboxTypeValue());
} }
//细分市场 //细分市场
if (StringUtils.isNotBlank(dto.getMarketSegmentsValue()) && !"-".equals(dto.getMarketSegmentsValue())){ if (StringUtils.isNotBlank(dto.getMarketSegmentsValue()) && !"-".equals(dto.getMarketSegmentsValue())){
modelName.append(dto.getMarketSegmentsValue()).append("/"); modelName.append("/").append(dto.getMarketSegmentsValue());
} }
//规格型号 //规格型号
if (StringUtils.isNotBlank(dto.getSpecifications()) && !"-".equals(dto.getSpecifications())){ if (StringUtils.isNotBlank(dto.getSpecifications()) && !"-".equals(dto.getSpecifications())){
modelName.append(dto.getSpecifications()).append("/"); modelName.append("/").append(dto.getSpecifications());
} }
//系别 //系别
if (StringUtils.isNotBlank(dto.getDepartmentValue()) && !"-".equals(dto.getDepartmentValue())){ if (StringUtils.isNotBlank(dto.getDepartmentValue()) && !"-".equals(dto.getDepartmentValue())){
modelName.append(dto.getDepartmentValue()); modelName.append("/").append(dto.getDepartmentValue());
} }
return modelName.toString(); return modelName.toString();
} }

6
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java

@ -536,7 +536,7 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
*/ */
public AppCarConfigSummaryVo addConfigName(AppModelConfigListVo appModelConfigListVo) { public AppCarConfigSummaryVo addConfigName(AppModelConfigListVo appModelConfigListVo) {
AppCarConfigSummaryVo vo = new AppCarConfigSummaryVo(); AppCarConfigSummaryVo vo = new AppCarConfigSummaryVo();
String carColor = StringUtils.isNotBlank(appModelConfigListVo.getCarColor()) ? (appModelConfigListVo.getCarColor() + "/") : ""; /*String carColor = StringUtils.isNotBlank(appModelConfigListVo.getCarColor()) ? (appModelConfigListVo.getCarColor() + "/") : "";
//缓速器 //缓速器
String slowMachine = StringUtils.isNotBlank(appModelConfigListVo.getSlowMachine()) String slowMachine = StringUtils.isNotBlank(appModelConfigListVo.getSlowMachine())
? (appModelConfigListVo.getSlowMachine() + "/") : ""; ? (appModelConfigListVo.getSlowMachine() + "/") : "";
@ -589,7 +589,9 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
String multimedia = StringUtils.isNotBlank(appModelConfigListVo.getMultimedia()) String multimedia = StringUtils.isNotBlank(appModelConfigListVo.getMultimedia())
? (appModelConfigListVo.getMultimedia() + "/") : ""; ? (appModelConfigListVo.getMultimedia() + "/") : "";
String configName = carColor + slowMachine + rearViewMirror + tireSize + specification + rearAxleValue + rearAxleRatio + airConditioner + hubMaterial + String configName = carColor + slowMachine + rearViewMirror + tireSize + specification + rearAxleValue + rearAxleRatio + airConditioner + hubMaterial +
baffleModel + suspension + seat + tireCover + saddle + wheelbase + bumper + configuringBao + independentSources + fuelTank + multimedia; baffleModel + suspension + seat + tireCover + saddle + wheelbase + bumper + configuringBao + independentSources + fuelTank + multimedia;*/
BaseModelConfig baseModelConfig = baseModelConfigService.fetchBySid(appModelConfigListVo.getConfigSid());
String configName = baseModelConfigService.configNameSpell(baseModelConfig);
vo.setConfig(configName); vo.setConfig(configName);
vo.setModel(appModelConfigListVo.getModel()); vo.setModel(appModelConfigListVo.getModel());
vo.setMoreConfig(appModelConfigListVo.getOtherConfig()); vo.setMoreConfig(appModelConfigListVo.getOtherConfig());

11
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java

@ -1019,13 +1019,6 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
*/ */
private String getInvoicMessage(Map<String, Object> map, AppOrderDetailsVo appOrderDetailsVo) { private String getInvoicMessage(Map<String, Object> map, AppOrderDetailsVo appOrderDetailsVo) {
String url = ""; String url = "";
//根据分公司sid查询分公司开票申请
/*String invoicName = "";
ResultBean<FinCompanyInvoicingDetailsVo> invoicingDetailsVoResultBean = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(appOrderDetailsVo.getUseOrgSid(),appOrderDetailsVo.getPurchaseSystemSid());
if (invoicingDetailsVoResultBean.getData() != null) {
map.put("createOrgName", invoicingDetailsVoResultBean.getData().getName());
invoicName = invoicingDetailsVoResultBean.getData().getName();
}*/
//查询销售订单的现车 //查询销售订单的现车
AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo(); AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo();
AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo(); AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo();
@ -1045,7 +1038,7 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
}else{ }else{
for (int i = 0; i < Integer.parseInt(orderModelInfoVo.getTotal()); i++) { for (int i = 0; i < Integer.parseInt(orderModelInfoVo.getTotal()); i++) {
InvoicMessageContractVo vo = new InvoicMessageContractVo(); InvoicMessageContractVo vo = new InvoicMessageContractVo();
vo.setType(appOrderDetailsVo.getInvoiceType()); // vo.setType(appOrderDetailsVo.getInvoiceType());
invoicMessageContractVos.add(vo); invoicMessageContractVos.add(vo);
} }
} }
@ -1807,7 +1800,7 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
0L, TimeUnit.MILLISECONDS, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
if("1".equals(appOrderDetailsVo.getPayTypeKey())){//全款 if("1".equals(appOrderDetailsVo.getPayTypeKey())){//全款
/*Future<String> future1 = pool.submit(() -> { /* Future<String> future1 = pool.submit(() -> {
return genCarSaleContract(dto, map, appOrderDetailsVo); return genCarSaleContract(dto, map, appOrderDetailsVo);
}); });
Future<String> future1_2 = pool.submit(() -> { Future<String> future1_2 = pool.submit(() -> {

4
anrui-base/anrui-base-biz/src/main/resources/ftl/carFin.ftl

@ -779,7 +779,7 @@
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
<w:u w:val="single"/> <w:u w:val="single"/>
</w:rPr> </w:rPr>
<w:t> ${money!}</w:t> <w:t> ${money!} </w:t>
</w:r> </w:r>
<w:r> <w:r>
<w:rPr> <w:rPr>
@ -805,7 +805,7 @@
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
<w:u w:val="single"/> <w:u w:val="single"/>
</w:rPr> </w:rPr>
<w:t></w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> ${moneyDx!} </w:t></w:r><w:proofErr w:type="spellEnd"/><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t></w:t> <w:t></w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> ${moneyDx!} </w:t></w:r><w:proofErr w:type="spellEnd"/><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t></w:t>
</w:r> </w:r>
<w:r> <w:r>
<w:rPr> <w:rPr>

4
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busmaindeposit/BusMainDepositService.java

@ -2208,6 +2208,10 @@ public class BusMainDepositService extends MybatisBaseService<BusMainDepositMapp
finConfirmDto.setPurchaseSystemSid(busDeposit.getPurchaseSystemSid()); finConfirmDto.setPurchaseSystemSid(busDeposit.getPurchaseSystemSid());
ResultBean<String> codeString = finCollectionConfirmationFeign.getApplyCode(busMainDeposit.getOrgSid()); ResultBean<String> codeString = finCollectionConfirmationFeign.getApplyCode(busMainDeposit.getOrgSid());
finConfirmDto.setBillNo(codeString.getData()); finConfirmDto.setBillNo(codeString.getData());
finConfirmDto.setStaffName(busDeposit.getStaffName());
finConfirmDto.setStaffUserSid(busMainDeposit.getCreateBySid());
finConfirmDto.setStaffDeptName(finConfirmDto.getCreateDept());
finConfirmDto.setStaffDeptSid(finConfirmDto.getCreateDeptSid());
finCollectionConfirmationFeign.saveFinConfirm(finConfirmDto); finCollectionConfirmationFeign.saveFinConfirm(finConfirmDto);
} }
if (DictCommonEnum.DepositBillType.JYDD_DC.getCode().equals(busMainDeposit.getDepositBillTypeKey())) { if (DictCommonEnum.DepositBillType.JYDD_DC.getCode().equals(busMainDeposit.getDepositBillTypeKey())) {

9
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmation.java

@ -125,4 +125,13 @@ public class FinCollectionConfirmation extends BaseEntity {
private String purchaseSystemSid; private String purchaseSystemSid;
@ApiModelProperty("采购系统名称") @ApiModelProperty("采购系统名称")
private String purchaseSystemName; private String purchaseSystemName;
@ApiModelProperty("销售专员名称")
private String staffName;
@ApiModelProperty("销售专员用户sid")
private String staffUserSid;
@ApiModelProperty("销售专员部门名称")
private String staffDeptName;
@ApiModelProperty("销售专员部门sid")
private String staffDeptSid;
} }

13
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDetailsVo.java

@ -53,7 +53,9 @@ public class FinCollectionConfirmationDetailsVo implements Vo {
@ApiModelProperty("sid") @ApiModelProperty("sid")
private String sid; private String sid;
@ApiModelProperty("创建人sid")
private String createBySid; // 创建人sid
@ApiModelProperty("创建人接口") @ApiModelProperty("创建人接口")
private String createByName; // 创建人接口 private String createByName; // 创建人接口
@ApiModelProperty("收款日期") @ApiModelProperty("收款日期")
@ -114,5 +116,14 @@ public class FinCollectionConfirmationDetailsVo implements Vo {
private String reason; private String reason;
@ApiModelProperty("销售专员名称")
private String staffName;
@ApiModelProperty("销售专员用户sid")
private String staffUserSid;
@ApiModelProperty("销售专员部门名称")
private String staffDeptName;
@ApiModelProperty("销售专员部门sid")
private String staffDeptSid;
} }

9
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDto.java

@ -121,4 +121,13 @@ public class FinCollectionConfirmationDto implements Dto {
@ApiModelProperty("采购系统名称") @ApiModelProperty("采购系统名称")
private String purchaseSystemName; private String purchaseSystemName;
@ApiModelProperty("销售专员名称")
private String staffName;
@ApiModelProperty("销售专员用户sid")
private String staffUserSid;
@ApiModelProperty("销售专员部门名称")
private String staffDeptName;
@ApiModelProperty("销售专员部门sid")
private String staffDeptSid;
} }

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeign.java

@ -87,7 +87,7 @@ public interface FinCollectionConfirmationFeign {
@ApiOperation("生成收款单pdf") @ApiOperation("生成收款单pdf")
@PostMapping("/createPdf") @PostMapping("/createPdf")
@ResponseBody @ResponseBody
ResultBean<PdfPath> createPdf(@RequestParam("skdSid") String skdSid); ResultBean<PdfPath> createPdf(@RequestParam("skdSid") String skdSid,@RequestParam("printerType") String printerType);
/*---------------------App接口 ---------------------*/ /*---------------------App接口 ---------------------*/
@ApiOperation("手机端—获取款项确认列表") @ApiOperation("手机端—获取款项确认列表")

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeignFallback.java

@ -84,7 +84,7 @@ public class FinCollectionConfirmationFeignFallback implements FinCollectionConf
} }
@Override @Override
public ResultBean<PdfPath> createPdf(String skdSid) { public ResultBean<PdfPath> createPdf(String skdSid,String printerType) {
return null; return null;
} }

9
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/app/FinConfirmDto.java

@ -92,6 +92,15 @@ public class FinConfirmDto implements Dto {
@ApiModelProperty("单据编号") @ApiModelProperty("单据编号")
private String billNo; private String billNo;
@ApiModelProperty("销售专员名称")
private String staffName;
@ApiModelProperty("销售专员用户sid")
private String staffUserSid;
@ApiModelProperty("销售专员部门名称")
private String staffDeptName;
@ApiModelProperty("销售专员部门sid")
private String staffDeptSid;
} }

10
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationRest.java

@ -94,8 +94,8 @@ public class FinCollectionConfirmationRest implements FinCollectionConfirmationF
} }
@Override @Override
public ResultBean cashierConfirm(String sid,String userSid) { public ResultBean cashierConfirm(String sid, String userSid) {
return finCollectionConfirmationService.cashierConfirm(sid,userSid); return finCollectionConfirmationService.cashierConfirm(sid, userSid);
} }
@Override @Override
@ -104,8 +104,8 @@ public class FinCollectionConfirmationRest implements FinCollectionConfirmationF
} }
@Override @Override
public ResultBean<PdfPath> createPdf(String skdSid) { public ResultBean<PdfPath> createPdf(String skdSid, String printerType) {
return finCollectionConfirmationService.createPdf(skdSid); return finCollectionConfirmationService.createPdf(skdSid, printerType);
} }
/** /**
@ -225,6 +225,6 @@ public class FinCollectionConfirmationRest implements FinCollectionConfirmationF
@Override @Override
public ResultBean updateVin(String vinNo, String contractNo, String temporaryNo) { public ResultBean updateVin(String vinNo, String contractNo, String temporaryNo) {
return finCollectionConfirmationService.updateVin(vinNo,contractNo,temporaryNo); return finCollectionConfirmationService.updateVin(vinNo, contractNo, temporaryNo);
} }
} }

27
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java

@ -289,6 +289,12 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
//对收款申请进行赋值操作 //对收款申请进行赋值操作
FinCollectionConfirmation finCollectionConfirmation = new FinCollectionConfirmation(); FinCollectionConfirmation finCollectionConfirmation = new FinCollectionConfirmation();
BeanUtil.copyProperties(dto, finCollectionConfirmation, "sid"); BeanUtil.copyProperties(dto, finCollectionConfirmation, "sid");
if(StringUtils.isBlank(finCollectionConfirmation.getStaffUserSid())){
finCollectionConfirmation.setStaffName(finCollectionConfirmation.getCreateByName());
finCollectionConfirmation.setStaffUserSid(finCollectionConfirmation.getCreateBySid());
finCollectionConfirmation.setStaffDeptName(finCollectionConfirmation.getCreateDept());
finCollectionConfirmation.setStaffDeptSid(finCollectionConfirmation.getCreateDeptSid());
}
sid = finCollectionConfirmation.getSid(); sid = finCollectionConfirmation.getSid();
//根据用户sid查询分公司sid //根据用户sid查询分公司sid
String useOrgSid = ""; String useOrgSid = "";
@ -2000,13 +2006,13 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
return rb.success().setData(finCollectionConfirmation); return rb.success().setData(finCollectionConfirmation);
} }
public ResultBean<PdfPath> createPdf(String skdSid) { public ResultBean<PdfPath> createPdf(String skdSid,String printerType) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
PdfPath pdfPath = new PdfPath(); PdfPath pdfPath = new PdfPath();
//获取收款单信息 //获取收款单信息
FinCollectionConfirmationDetailsVo finCollectionConfirmationDetailsVo = fetchByAllSid(skdSid).getData(); FinCollectionConfirmation finCollectionConfirmationDetailsVo = fetchBySid(skdSid);
//获取车辆入库单车辆信息查询 //获取车辆入库单车辆信息查询
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetaileds = finCollectionConfirmationDetailsVo.getFinSelectedReceivablesDetaileds(); List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetaileds = finSelectedReceivablesDetailedService.fetchByCillSid(finCollectionConfirmationDetailsVo.getSid());
Map<String, Object> dataMap = new HashMap(); Map<String, Object> dataMap = new HashMap();
dataMap.put("collDate", finCollectionConfirmationDetailsVo.getCollectionDate()); dataMap.put("collDate", finCollectionConfirmationDetailsVo.getCollectionDate());
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(finCollectionConfirmationDetailsVo.getUseOrgSid()).getData(); SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(finCollectionConfirmationDetailsVo.getUseOrgSid()).getData();
@ -2020,7 +2026,6 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
for (FinSelectedReceivablesDetailedVo finSelectedReceivablesDetailedVo : finSelectedReceivablesDetaileds) { for (FinSelectedReceivablesDetailedVo finSelectedReceivablesDetailedVo : finSelectedReceivablesDetaileds) {
FinCollectionConfirmationMaterial finCollectionConfirmationMaterial = new FinCollectionConfirmationMaterial(); FinCollectionConfirmationMaterial finCollectionConfirmationMaterial = new FinCollectionConfirmationMaterial();
id = id + 1; id = id + 1;
BigDecimal settleMoney = new BigDecimal(finSelectedReceivablesDetailedVo.getSubscriptionMoney());
//主车物料编码 //主车物料编码
finCollectionConfirmationMaterial.setVinNo(finSelectedReceivablesDetailedVo.getVIN().substring(finSelectedReceivablesDetailedVo.getVIN().length() - 8)); finCollectionConfirmationMaterial.setVinNo(finSelectedReceivablesDetailedVo.getVIN().substring(finSelectedReceivablesDetailedVo.getVIN().length() - 8));
finCollectionConfirmationMaterial.setId(String.valueOf(id)); finCollectionConfirmationMaterial.setId(String.valueOf(id));
@ -2033,10 +2038,10 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
finCollectionConfirmationMaterials.add(finCollectionConfirmationMaterial); finCollectionConfirmationMaterials.add(finCollectionConfirmationMaterial);
} }
dataMap.put("wlList", finCollectionConfirmationMaterials); dataMap.put("wlList", finCollectionConfirmationMaterials);
dataMap.put("zcollMoney", finCollectionConfirmationDetailsVo.getCollectionMoney()); dataMap.put("zcollMoney", finCollectionConfirmationDetailsVo.getCollectionMoney().toString());
String tPriceDX = TransformMoney.transform(finCollectionConfirmationDetailsVo.getCollectionMoney()); String tPriceDX = TransformMoney.transform(finCollectionConfirmationDetailsVo.getCollectionMoney().toString());
dataMap.put("tPriceDX", tPriceDX); dataMap.put("tPriceDX", tPriceDX);
dataMap.put("makeName", ""); dataMap.put("makeName", finCollectionConfirmationDetailsVo.getCreateByName() + DateUtil.formatDate(new Date()));
//获取模板 //获取模板
//模板路径 //模板路径
String sourcePath = "D:\\anrui\\upload\\template\\"; String sourcePath = "D:\\anrui\\upload\\template\\";
@ -2046,11 +2051,15 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
String typeName = dateStr + seconds + ".doc"; String typeName = dateStr + seconds + ".doc";
// 生成文件路径 // 生成文件路径
String targetPath = sourcePath + dateStr; String targetPath = sourcePath + dateStr;
WordUtils.creatWord(dataMap, "cgrkd", sourcePath, targetPath, typeName); if (printerType.equals("针孔式打印机")){
WordUtils.creatWord(dataMap, "skdzks", sourcePath, targetPath, typeName);
}else if (printerType.equals("激光打印机")){
WordUtils.creatWord(dataMap, "skdjg", sourcePath, targetPath, typeName);
}
//新生成的word路径 //新生成的word路径
String wordPath = targetPath + "\\" + typeName; String wordPath = targetPath + "\\" + typeName;
//生成出门证文件名 //生成出门证文件名
String pdfName = "采购入库单_" + dateStr + seconds + ".pdf"; String pdfName = "收款单_" + dateStr + seconds + ".pdf";
WordUtils.doc2pdf(wordPath, targetPath, pdfName, ""); WordUtils.doc2pdf(wordPath, targetPath, pdfName, "");
pdfPath.setPdfPath("/template/" + dateStr + "/" + pdfName); pdfPath.setPdfPath("/template/" + dateStr + "/" + pdfName);
return rb.success().setData(pdfPath); return rb.success().setData(pdfPath);

1
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrgStaffVo.java

@ -14,4 +14,5 @@ public class SysOrgStaffVo implements Vo {
private String staffName; private String staffName;
private String staffSid; private String staffSid;
private String userSid;
} }

5
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationMapper.xml

@ -188,10 +188,11 @@
</select> </select>
<select id="selectByOrgDeptSid" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrgStaffVo"> <select id="selectByOrgDeptSid" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrgStaffVo">
select distinct si.name staffName, si.sid staffSid select distinct si.name staffName, si.sid staffSid,su.sid userSid
from sys_staff_org so from sys_staff_org so
left join sys_staffinfo si on so.staffSid = si.sid left join sys_staffinfo si on so.staffSid = si.sid
where so.orgSid = #{orgDeptSid} left join sys_user su on su.staffSid = si.sid
where so.orgSid = #{orgDeptSid} and si.personTypeKey != '01'
</select> </select>
<select id="selectByPSid" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo"> <select id="selectByPSid" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo">

14
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java

@ -1272,6 +1272,20 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
OrgList orgList1 = new OrgList(); OrgList orgList1 = new OrgList();
orgList1.setOrgPath(vv.getOrgSidPath()); orgList1.setOrgPath(vv.getOrgSidPath());
orgList1.setOrgName(vv.getOrgNamePath()); orgList1.setOrgName(vv.getOrgNamePath());
String orgName = "";
if (StringUtils.isNotBlank(vv.getOrgSidPath())) {
List<String> split = Arrays.asList(vv.getOrgSidPath().split("/"));
if(split.size()>1){
//获取本级sid获取本级部门信息
SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size()-2));
SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size()-1));
orgName = sysOrganization.getName()+"/"+sysOrganization1.getName();
}else{
SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(0));
orgName = sysOrganization.getName();
}
orgList1.setOrgName(orgName);
}
orgList.add(orgList1); orgList.add(orgList1);
} }
} }

2
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinboundquery/ScmApplyInboundQueryQuery.java

@ -65,4 +65,6 @@ public class ScmApplyInboundQueryQuery implements Query {
private String makeListName; // 制单人姓名 private String makeListName; // 制单人姓名
@ApiModelProperty("创建组织sid") @ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid private String createOrgSid; // 创建组织sid
@ApiModelProperty("组织全路径")
private String orgSidPath; // 组织全路径
} }

2
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinboundvehquery/ScmApplyInboundVehQueryDto.java

@ -54,8 +54,6 @@ public class ScmApplyInboundVehQueryDto implements Dto {
@ApiModelProperty("主表sid") @ApiModelProperty("主表sid")
private String mainSid; // 主表sid private String mainSid; // 主表sid
@ApiModelProperty("车辆sid")
private String vehSid; // 车辆sid
@ApiModelProperty("物料编号") @ApiModelProperty("物料编号")
private String vinNo; // 物料编号 private String vinNo; // 物料编号
@ApiModelProperty("物料分组code") @ApiModelProperty("物料分组code")

2
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java

@ -559,8 +559,6 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
for (ScmApplyInboundVehicleDto scmApplyInboundVehicleDto : scmApplyInboundVehicleDtos) { for (ScmApplyInboundVehicleDto scmApplyInboundVehicleDto : scmApplyInboundVehicleDtos) {
ScmApplyInboundVehQueryDto scmApplyInboundVehQueryDto = new ScmApplyInboundVehQueryDto(); ScmApplyInboundVehQueryDto scmApplyInboundVehQueryDto = new ScmApplyInboundVehQueryDto();
scmApplyInboundVehQueryDto.setVinNo(scmApplyInboundVehicleDto.getVinNo()); scmApplyInboundVehQueryDto.setVinNo(scmApplyInboundVehicleDto.getVinNo());
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(scmApplyInboundVehicleDto.getVinNo(), booad.getUseOrgSid()).getData();
scmApplyInboundVehQueryDto.setVehSid(baseVehicle.getSid());
BaseVehicleSelectVo data4 = baseVehicleFeign.details(scmApplyInboundVehicleDto.getSid()).getData(); BaseVehicleSelectVo data4 = baseVehicleFeign.details(scmApplyInboundVehicleDto.getSid()).getData();
BaseVehicleBrand baseVehicleBrand = baseVehicleBrandFeign.fetchBySid(data4.getCarBrandSid()); BaseVehicleBrand baseVehicleBrand = baseVehicleBrandFeign.fetchBySid(data4.getCarBrandSid());
scmApplyInboundVehQueryDto.setMgroupCode(baseVehicleBrand.getBrandCode()); scmApplyInboundVehQueryDto.setMgroupCode(baseVehicleBrand.getBrandCode());

25
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinboundquery/ScmApplyInboundQueryMapper.xml

@ -1,13 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.scm.biz.scmapplyinboundquery.ScmApplyInboundQueryMapper"> <mapper namespace="com.yxt.anrui.scm.biz.scmapplyinboundquery.ScmApplyInboundQueryMapper">
<!-- <where> ${ew.sqlSegment} </where>--> <!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} --> <!-- ${ew.customSqlSegment} -->
<select id="selectPageVo" resultType="com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryVo"> <select id="selectPageVo" resultType="com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryVo">
SELECT * FROM scm_apply_inbound_query <where> ${ew.sqlSegment} </where> SELECT * FROM scm_apply_inbound_query saiq
</select> LEFT JOIN anrui_portal.sys_organization so ON saiq.createOrgSid = so.sid
<where>
<select id="selectListAllVo" resultType="com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryVo"> ${ew.sqlSegment}
SELECT * FROM scm_apply_inbound_query <where> ${ew.sqlSegment} </where> </where>
</select> </select>
<select id="selectListAllVo" resultType="com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryVo">
SELECT * FROM scm_apply_inbound_query
<where>
${ew.sqlSegment}
</where>
</select>
</mapper> </mapper>

24
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinboundquery/ScmApplyInboundQueryService.java

@ -42,6 +42,8 @@ import com.yxt.anrui.base.common.enums.ManPurOrderType;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock; import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock;
import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect; import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.scm.api.scmapplyinboundquery.*; import com.yxt.anrui.scm.api.scmapplyinboundquery.*;
import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQuery; import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQuery;
import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQueryDetailsVo; import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQueryDetailsVo;
@ -87,6 +89,8 @@ public class ScmApplyInboundQueryService extends MybatisBaseService<ScmApplyInbo
private BaseVehicleFeign baseVehicleFeign; private BaseVehicleFeign baseVehicleFeign;
@Autowired @Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign; private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
private QueryWrapper<ScmApplyInboundQuery> createQueryWrapper(ScmApplyInboundQueryQuery query) { private QueryWrapper<ScmApplyInboundQuery> createQueryWrapper(ScmApplyInboundQueryQuery query) {
// todo: 这里根据具体业务调整查询条件 // todo: 这里根据具体业务调整查询条件
@ -98,22 +102,30 @@ public class ScmApplyInboundQueryService extends MybatisBaseService<ScmApplyInbo
public PagerVo<ScmApplyInboundQueryVo> listPageVo(PagerQuery<ScmApplyInboundQueryQuery> pq) { public PagerVo<ScmApplyInboundQueryVo> listPageVo(PagerQuery<ScmApplyInboundQueryQuery> pq) {
ScmApplyInboundQueryQuery query = pq.getParams(); ScmApplyInboundQueryQuery query = pq.getParams();
QueryWrapper<ScmApplyInboundQuery> qw = new QueryWrapper<>(); QueryWrapper<ScmApplyInboundQuery> qw = new QueryWrapper<>();
String orgSidPath = query.getOrgSidPath();
SysOrganizationVo data = sysOrganizationFeign.selectByOrgSidPath(orgSidPath).getData();
String orgLevelKey = data.getOrgLevelKey();
if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, 73);
qw.like("so.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
qw.eq("saiq.createOrgSid", query.getCreateOrgSid());
}
if (StringUtils.isNotBlank(query.getApplicationCode())) { if (StringUtils.isNotBlank(query.getApplicationCode())) {
qw.like("applicationCode", query.getApplicationCode()); qw.like("saiq.applicationCode", query.getApplicationCode());
} }
if (StringUtils.isNotBlank(query.getManPurOrderTypeKey())) { if (StringUtils.isNotBlank(query.getManPurOrderTypeKey())) {
qw.eq("manPurOrderTypeKey", query.getManPurOrderTypeKey()); qw.eq("saiq.manPurOrderTypeKey", query.getManPurOrderTypeKey());
} }
if (StringUtils.isNotBlank(query.getOrgDeptSid())) { if (StringUtils.isNotBlank(query.getOrgDeptSid())) {
qw.eq("orgDeptSid", query.getOrgDeptSid()); qw.eq("saiq.orgDeptSid", query.getOrgDeptSid());
} }
if (StringUtils.isNotBlank(query.getManSid())) { if (StringUtils.isNotBlank(query.getManSid())) {
qw.eq("manSid", query.getManSid()); qw.eq("saiq.manSid", query.getManSid());
} }
if (StringUtils.isNotBlank(query.getMakeListName())) { if (StringUtils.isNotBlank(query.getMakeListName())) {
qw.like("makeListName", query.getMakeListName()); qw.like("saiq.makeListName", query.getMakeListName());
} }
qw.eq("createOrgSid", query.getCreateOrgSid());
IPage<ScmApplyInboundQuery> page = PagerUtil.queryToPage(pq); IPage<ScmApplyInboundQuery> page = PagerUtil.queryToPage(pq);
IPage<ScmApplyInboundQueryVo> pagging = baseMapper.selectPageVo(page, qw); IPage<ScmApplyInboundQueryVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<ScmApplyInboundQueryVo> p = PagerUtil.pageToVo(pagging, null); PagerVo<ScmApplyInboundQueryVo> p = PagerUtil.pageToVo(pagging, null);

1
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleenterlibrary/ScmVehicleEnterlibraryService.java

@ -541,7 +541,6 @@ public class ScmVehicleEnterlibraryService extends MybatisBaseService<ScmVehicle
scmApplyInboundQueryDto.setBusSid(data6.getSid()); scmApplyInboundQueryDto.setBusSid(data6.getSid());
List<ScmApplyInboundVehQueryDto> scmApplyInboundVehQuerys = new ArrayList<>(); List<ScmApplyInboundVehQueryDto> scmApplyInboundVehQuerys = new ArrayList<>();
ScmApplyInboundVehQueryDto scmApplyInboundVehQueryDto = new ScmApplyInboundVehQueryDto(); ScmApplyInboundVehQueryDto scmApplyInboundVehQueryDto = new ScmApplyInboundVehQueryDto();
scmApplyInboundVehQueryDto.setVehSid(scmVehicleEnterlibrary.getVehicleSid());
scmApplyInboundVehQueryDto.setVinNo(scmVehicleEnterlibrary.getVinNo()); scmApplyInboundVehQueryDto.setVinNo(scmVehicleEnterlibrary.getVinNo());
scmApplyInboundVehQueryDto.setMgroupCode("99.01"); scmApplyInboundVehQueryDto.setMgroupCode("99.01");
scmApplyInboundVehQueryDto.setMgroupName("外采主车"); scmApplyInboundVehQueryDto.setMgroupName("外采主车");

Loading…
Cancel
Save