Merge branch 'dev' into dev_WMS20260401

# Conflicts:
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/executeOrder/ExecuteOrderDTO.java
#	mhd_oms/src/main/resources/bootstrap.yml
#	mhd_wms/src/main/resources/mapper/deliveTask/DeliveTaskMapper.xml
This commit is contained in:
王奎兴
2026-06-16 11:11:48 +08:00
46 changed files with 660 additions and 225 deletions
@@ -234,5 +234,14 @@ public class MaterialBaseInfoFeign extends BaseVOEntity{
@ApiModelProperty("批次ID")
private Long batchId;
}
@ApiModelProperty("保额")
@Excel(name = "保额")
private BigDecimal insureAmount;
@ApiModelProperty(name = "收费标准")
private String chargeStandard;
@ApiModelProperty(name = "单位")
private String unit;
}
@@ -54,8 +54,8 @@ public class ContractManagePO extends BaseVOEntity{
@Excel(name = "是否通用合同", readConverterExp = "1=-是,2-否")
private Integer commonContractFlag;
@ApiModelProperty("合同类型(1-仓储,2-运输)")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输")
@ApiModelProperty("合同类型(1-仓储,2-运输3-其他")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输3=-其他")
private Integer contractType;
@ApiModelProperty("合同状态(1-未生效,2-使用中,3-已过期,4-已作废)")
@@ -590,6 +590,7 @@ public class ContractManageApplicationService {
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
validateContractType(contractManageDO.getContractType());
/*
通用合同:同一时间段、同一合同类型,只能存在一个
特殊合同:同一结算主体、同一时间段、同一合同类型,只能存在一个
@@ -666,6 +667,29 @@ public class ContractManageApplicationService {
}
/**
* 校验合同类型
*/
private void validateContractType(Integer contractType) {
if (contractType == null) {
throw new ServiceException("合同类型不能为空");
}
if (contractType != 1 && contractType != 2 && contractType != 3) {
throw new ServiceException("合同类型不正确,请选择1-仓储、2-运输或3-其他");
}
}
/**
* 查询通用合同
*/
private ContractManagePO findGeneralContract(List<ContractManagePO> contractManagePOList, Integer contractType) {
return contractManagePOList.stream()
.filter(item -> Objects.equals(item.getContractType(), contractType)
&& item.getCommonContractFlag() == 1
&& item.getContractState() == 2)
.findFirst().orElse(null);
}
/**
* 校验合同是否合法
* @param contractManageDO
@@ -806,6 +830,7 @@ public class ContractManageApplicationService {
*/
@Transactional
public Boolean update(ContractManageDO contractManageDO) {
validateContractType(contractManageDO.getContractType());
checkContract(contractManageDO);
handleData(contractManageDO);
handleDetils(contractManageDO);
@@ -845,7 +870,7 @@ public class ContractManageApplicationService {
*/
public ContractManagePO getInfoByCustomer(String settlementCustomersCode,Integer contractType, Long topOrganizationId) {
/*
首先根据合同类型(仓储、运输),以及结算客户,查询合同信息
首先根据合同类型(仓储、运输、其他),以及结算客户,查询合同信息
如果传了结算主体,则根据结算主体以及当前时间查询有效的特殊合同,如果特殊合同没有,则查询通用合同
*/
//获取当前登录人信息
@@ -872,31 +897,12 @@ public class ContractManageApplicationService {
ContractManagePO contractManagePO = contractManagePOList.stream()
.filter(item -> item.getSettlementCustomersCode().equals(settlementCustomersCode) && Objects.equals(item.getContractType(), contractType)).findFirst().orElse(null);
if(null == contractManagePO){
if(contractType==1){
//仓储合同
resultContract = contractManagePOList.stream()
.filter(item ->
item.getContractType()==1 &&
item.getCommonContractFlag() == 1 && item.getContractState() ==2)
.findFirst().orElse(null);
}else{
//运输合同
resultContract = contractManagePOList.stream().filter(item -> item.getContractType()==2
&& item.getCommonContractFlag() == 1 && item.getContractState() ==2).findFirst().orElse(null);
}
resultContract = findGeneralContract(contractManagePOList, contractType);
}else {
resultContract = contractManagePO;
}
}else {
if(contractType==1){
//仓储合同
resultContract = contractManagePOList.stream().filter(contractManagePO -> contractManagePO.getContractType()==1
&& contractManagePO.getCommonContractFlag() == 1 && contractManagePO.getContractState() ==2).findFirst().orElse(null);
}else{
//运输合同
resultContract = contractManagePOList.stream().filter(contractManagePO -> contractManagePO.getContractType()==2
&& contractManagePO.getCommonContractFlag() == 1 && contractManagePO.getContractState() ==2).findFirst().orElse(null);
}
resultContract = findGeneralContract(contractManagePOList, contractType);
}
if(null == resultContract){
throw new ServiceException("找不到匹配的合同,请重试");
@@ -936,7 +942,7 @@ public class ContractManageApplicationService {
*/
public ContractManagePO getInfoByCustomerAndOrganizationId(String settlementCustomersCode,Integer contractType, Long topOrganizationId, Long organizationId) {
/*
首先根据合同类型(仓储、运输),以及结算客户,查询合同信息
首先根据合同类型(仓储、运输、其他),以及结算客户,查询合同信息
如果传了结算主体,则根据结算主体以及当前时间查询有效的特殊合同,如果特殊合同没有,则查询通用合同
*/
//获取当前登录人信息
@@ -966,31 +972,12 @@ public class ContractManageApplicationService {
ContractManagePO contractManagePO = contractManagePOList.stream()
.filter(item -> item.getSettlementCustomersCode().equals(settlementCustomersCode) && Objects.equals(item.getContractType(), contractType)).findFirst().orElse(null);
if(null == contractManagePO){
if(contractType==1){
//仓储合同
resultContract = contractManagePOList.stream()
.filter(item ->
item.getContractType()==1 &&
item.getCommonContractFlag() == 1 && item.getContractState() ==2)
.findFirst().orElse(null);
}else{
//运输合同
resultContract = contractManagePOList.stream().filter(item -> item.getContractType()==2
&& item.getCommonContractFlag() == 1 && item.getContractState() ==2).findFirst().orElse(null);
}
resultContract = findGeneralContract(contractManagePOList, contractType);
}else {
resultContract = contractManagePO;
}
}else {
if(contractType==1){
//仓储合同
resultContract = contractManagePOList.stream().filter(contractManagePO -> contractManagePO.getContractType()==1
&& contractManagePO.getCommonContractFlag() == 1 && contractManagePO.getContractState() ==2).findFirst().orElse(null);
}else{
//运输合同
resultContract = contractManagePOList.stream().filter(contractManagePO -> contractManagePO.getContractType()==2
&& contractManagePO.getCommonContractFlag() == 1 && contractManagePO.getContractState() ==2).findFirst().orElse(null);
}
resultContract = findGeneralContract(contractManagePOList, contractType);
}
if(null == resultContract){
throw new ServiceException("找不到匹配的合同,请重试");
@@ -56,8 +56,8 @@ public class ContractManage extends BaseVOEntity{
@Excel(name = "是否通用合同", readConverterExp = "1=-是,2-否")
private Integer commonContractFlag;
@ApiModelProperty("合同类型(1-仓储,2-运输)")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输")
@ApiModelProperty("合同类型(1-仓储,2-运输3-其他")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输3=-其他")
private Integer contractType;
@ApiModelProperty("合同状态(1-未生效,2-使用中,3-已过期,4-已作废)")
@@ -57,8 +57,8 @@ public class ContractManagePO extends BaseVOEntity{
@Excel(name = "是否通用合同", readConverterExp = "1=-是,2-否")
private Integer commonContractFlag;
@ApiModelProperty("合同类型(1-仓储,2-运输)")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输")
@ApiModelProperty("合同类型(1-仓储,2-运输3-其他")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输3=-其他")
private Integer contractType;
@ApiModelProperty("合同状态(1-未生效,2-使用中,3-已过期,4-已作废)")
@@ -54,8 +54,8 @@ public class ContractManageDO extends BaseVOEntity{
@Excel(name = "是否通用合同", readConverterExp = "1=-是,2-否")
private Integer commonContractFlag;
@ApiModelProperty("合同类型(1-仓储,2-运输)")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输")
@ApiModelProperty("合同类型(1-仓储,2-运输3-其他")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输3=-其他")
private Integer contractType;
@ApiModelProperty("合同状态(1-未生效,2-使用中,3-已过期,4-已作废)")
@@ -74,5 +74,12 @@ public class MaterialClassify extends BaseVOEntity{
@Excel(name = "是否作废: 1-否 2-是")
private Integer nullify;
@ApiModelProperty("收费标准")
@Excel(name = "收费标准")
private String chargeStandard;
}
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
}
@@ -81,6 +81,12 @@ public class MaterialClassifyPO extends BaseVOEntity{
@ApiModelProperty("上级分类字典编码集合")
@Excel(name = "上级分类字典编码集合")
private List<String> materialClassifyCodeList;
@ApiModelProperty("收费标准")
@Excel(name = "收费标准")
private String chargeStandard;
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
}
}
@@ -82,4 +82,11 @@ public class MaterialClassifyDO extends BaseVOEntity{
@ApiModelProperty("上级分类字典编码集合")
@Excel(name = "上级分类字典编码集合")
private List<String> materialClassifyCodeList;
}
@ApiModelProperty("收费标准")
@Excel(name = "收费标准")
private String chargeStandard;
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
}
@@ -54,8 +54,8 @@ public class ContractManageDTO extends BaseVOEntity{
@Excel(name = "是否通用合同", readConverterExp = "1=-是,2-否")
private Integer commonContractFlag;
@ApiModelProperty("合同类型(1-仓储,2-运输)")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输")
@ApiModelProperty("合同类型(1-仓储,2-运输3-其他")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输3=-其他")
private Integer contractType;
@ApiModelProperty("合同状态(1-未生效,2-使用中,3-已过期,4-已作废)")
@@ -82,4 +82,11 @@ public class MaterialClassifyDTO extends BaseVOEntity{
@ApiModelProperty("上级分类字典编码集合")
@Excel(name = "上级分类字典编码集合")
private List<String> materialClassifyCodeList;
}
@ApiModelProperty("收费标准")
@Excel(name = "收费标准")
private String chargeStandard;
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
}
@@ -21,6 +21,8 @@ import com.mhd.common.log.annotation.Log;
import com.mhd.common.log.enums.BusinessType;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.domain.SysDictData;
import com.mhd.system.api.domain.SysDictType;
import com.mhd.system.api.model.LoginUser;
/**
* 数据字典信息
@@ -41,10 +43,87 @@ public class SysDictDataController extends BaseController
@GetMapping("/list")
public TableDataInfo list(SysDictData dictData)
{
if (!applyDictDataOrganizationFilterByDictType(dictData))
{
return getDataTable(new ArrayList<>());
}
startPage();
List<SysDictData> list = dictDataService.selectDictList(dictData);
return getDataTable(list);
}
/**
* 列表组织过滤按字典类型sys_dict_type上的组织维度过滤字典数据
* 前端可传 organizationId通常来自所选字典类型行南光组织2827可选组织或查全部其他组织仅本组织
*
* @return false 表示当前组织下无匹配字典类型应返回空列表
*/
private boolean applyDictDataOrganizationFilterByDictType(SysDictData dictData)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null || loginUser.getUserPo() == null)
{
return true;
}
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long loginUserTopOrganizationId = loginUser.getUserPo().getTopOrganizationId();
Long frontendOrganizationId = dictData.getOrganizationId();
Long queryOrganizationId = null;
Long queryTopOrganizationId = null;
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L))
{
if (frontendOrganizationId != null)
{
queryOrganizationId = frontendOrganizationId;
}
}
else
{
if (frontendOrganizationId != null && !frontendOrganizationId.equals(loginUserOrganizationId))
{
queryOrganizationId = loginUserOrganizationId;
}
else if (frontendOrganizationId != null)
{
queryOrganizationId = frontendOrganizationId;
}
else
{
queryOrganizationId = loginUserOrganizationId;
}
queryTopOrganizationId = loginUserTopOrganizationId;
}
if (StringUtils.isEmpty(dictData.getDictType()))
{
dictData.setOrganizationId(queryOrganizationId);
dictData.setTopOrganizationId(queryTopOrganizationId);
return true;
}
if (queryOrganizationId == null)
{
dictData.setOrganizationId(null);
dictData.setTopOrganizationId(null);
return true;
}
SysDictType typeQuery = new SysDictType();
typeQuery.setDictType(dictData.getDictType());
typeQuery.setOrganizationId(queryOrganizationId);
List<SysDictType> dictTypes = dictTypeService.selectDictTypeList(typeQuery);
if (dictTypes.isEmpty())
{
return false;
}
SysDictType dictTypeRow = dictTypes.get(0);
dictData.setOrganizationId(dictTypeRow.getOrganizationId());
dictData.setTopOrganizationId(dictTypeRow.getTopOrganizationId());
return true;
}
@PostMapping("/getDictDataList")
public R<List<SysDictData>> getDictDataList(@RequestBody SysDictData sysDictData)
{
@@ -43,6 +43,7 @@ public class SysDictTypeController extends BaseController
@GetMapping("/list")
public TableDataInfo list(SysDictType dictType)
{
applyDictTypeOrganizationFilter(dictType);
startPage();
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
return getDataTable(list);
@@ -53,6 +54,7 @@ public class SysDictTypeController extends BaseController
@PostMapping("/export")
public void export(HttpServletResponse response, SysDictType dictType)
{
applyDictTypeOrganizationFilter(dictType);
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
util.exportExcel(response, list, "字典类型");
@@ -85,6 +87,61 @@ public class SysDictTypeController extends BaseController
return toAjax(dictTypeService.insertDictType(dict));
}
/**
* 列表/导出组织过滤优先使用前端传递的 organizationId
* 南光组织2827可按组织筛选或查全部其他组织只能查本组织数据
*/
private void applyDictTypeOrganizationFilter(SysDictType dictType)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null || loginUser.getUserPo() == null)
{
return;
}
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long loginUserTopOrganizationId = loginUser.getUserPo().getTopOrganizationId();
Long frontendOrganizationId = dictType.getOrganizationId();
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L))
{
if (frontendOrganizationId != null)
{
dictType.setOrganizationId(frontendOrganizationId);
dictType.setTopOrganizationId(null);
}
else
{
dictType.setOrganizationId(null);
dictType.setTopOrganizationId(null);
}
}
else
{
if (frontendOrganizationId != null)
{
if (!frontendOrganizationId.equals(loginUserOrganizationId))
{
dictType.setOrganizationId(loginUserOrganizationId);
}
if (loginUserTopOrganizationId != null)
{
dictType.setTopOrganizationId(loginUserTopOrganizationId);
}
}
else
{
if (loginUserOrganizationId != null)
{
dictType.setOrganizationId(loginUserOrganizationId);
}
if (loginUserTopOrganizationId != null)
{
dictType.setTopOrganizationId(loginUserTopOrganizationId);
}
}
}
}
/**
* 写入组织维度优先使用请求体中选择的组织未传时使用当前登录用户所属组织无登录上下文时按平台0处理
*/
@@ -34,12 +34,12 @@ public interface SysDictTypeMapper
public SysDictType selectDictTypeById(Long dictId);
/**
* 根据字典类型查询信息
* 根据字典类型及组织查询信息同一 dict_type 在不同组织下可重复
*
* @param dictType 字典类型
* @param dictType 字典类型 dictTypeorganizationId
* @return 字典类型
*/
public SysDictType selectDictTypeByType(String dictType);
public SysDictType selectDictTypeByType(SysDictType dictType);
/**
* 通过字典ID删除字典信息
@@ -43,12 +43,12 @@ public interface ISysDictTypeService
public SysDictType selectDictTypeById(Long dictId);
/**
* 根据字典类型查询信息
* 根据字典类型及组织查询信息同一 dict_type 在不同组织下可重复
*
* @param dictType 字典类型
* @param dictType 字典类型 dictTypeorganizationId
* @return 字典类型
*/
public SysDictType selectDictTypeByType(String dictType);
public SysDictType selectDictTypeByType(SysDictType dictType);
/**
* 批量删除字典信息
@@ -441,7 +441,19 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
{
return;
}
SysDictType dictTypeRow = dictTypeService.selectDictTypeByType(dictType);
Long organizationId = data.getOrganizationId();
if (organizationId == null)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null)
{
organizationId = loginUser.getUserPo().getOrganizationId();
}
}
SysDictType typeQuery = new SysDictType();
typeQuery.setDictType(dictType);
typeQuery.setOrganizationId(organizationId);
SysDictType dictTypeRow = dictTypeService.selectDictTypeByType(typeQuery);
if (dictTypeRow == null)
{
return;
@@ -113,13 +113,13 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
}
/**
* 根据字典类型查询信息
* 根据字典类型及组织查询信息
*
* @param dictType 字典类型
* @param dictType 字典类型 dictTypeorganizationId
* @return 字典类型
*/
@Override
public SysDictType selectDictTypeByType(String dictType)
public SysDictType selectDictTypeByType(SysDictType dictType)
{
return dictTypeMapper.selectDictTypeByType(dictType);
}
@@ -25,11 +25,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateByName" column="update_by_name" />
<result property="delFlag" column="del_flag" />
<result property="chargeStandard" column="charge_standard" />
<result property="unit" column="unit" />
</resultMap>
<sql id="selectMaterialClassifyPo">
select material_classify_id, organization_id, organization_name, top_organization_id, code, name, level, parent_code, parent_name, code_path, name_path, remark, nullify, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from material_classify
select material_classify_id, organization_id, organization_name, top_organization_id, code, name, level, parent_code,
parent_name, code_path, name_path, remark, nullify, create_time, create_by, create_by_name, update_time, update_by,
update_by_name, del_flag,CHARGE_STANDARD,unit
from material_classify
</sql>
<sql id="selectMaterialClassifyPo1">
@@ -61,9 +61,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where dict_id = #{dictId}
</select>
<select id="selectDictTypeByType" parameterType="String" resultMap="SysDictTypeResult">
<select id="selectDictTypeByType" parameterType="SysDictType" resultMap="SysDictTypeResult">
<include refid="selectDictTypeVo"/>
where dict_type = #{dictType}
and IFNULL(organization_id, 0) = IFNULL(#{organizationId}, 0)
limit 1
</select>
<select id="checkDictTypeUnique" parameterType="SysDictType" resultMap="SysDictTypeResult">
@@ -416,6 +416,17 @@ public class UserDriverApplicationService {
VehiclePo vehicleData = vehicle.getData();
log.info("查到到车辆信息:{}",vehicleData);
// 如果车辆存在且当前用户与该车辆的绑定关系已存在则跳过绑定避免重复创建绑定记录
if (vehicleData != null && vehicleData.getVehicleId() != null) {
DriverVehicleBind existingBind = driverVehicleBindDomainService.getBindInfoListByVehicle(
vehicleData.getVehicleId(), driver.getUserId());
if (ObjectUtil.isNotNull(existingBind)) {
log.info("用户[{}]与车辆[{}]的绑定关系已存在,跳过绑定操作",
driver.getUserId(), driver.getVehicleLicensePlateNumber());
return;
}
}
DriverVehicleBind driverVehicleBind = driverVehicleBindDomainService.isVehicleBinding(driver.getVehicleLicensePlateNumber());
Boolean isBound=false;
if(ObjectUtil.isNotNull(driverVehicleBind)&&!driverVehicleBind.getDriverBindId().equals(driver.getUserId())){
@@ -568,6 +568,15 @@ public class UserDriverEnterpriseApplicationService {
public Map<String, Object> captainAuth(UserDriverEnterpriseDo userDriverEnterpriseDo) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Map<String, Object> result = new HashMap<>();
if (org.apache.commons.lang3.StringUtils.isBlank(userDriverEnterpriseDo.getUserAccount())) {
throw new ServiceException("用户账号不能为空");
}
if (org.apache.commons.lang3.StringUtils.isBlank(userDriverEnterpriseDo.getUserName())) {
throw new ServiceException("用户姓名不能为空");
}
if (org.apache.commons.lang3.StringUtils.isBlank(userDriverEnterpriseDo.getUserPhone())) {
throw new ServiceException("用户电话不能为空");
}
// 1. 前置检查如果用户已存在检查是否已加入其他车队
performPreChecks(userDriverEnterpriseDo);
@@ -326,6 +326,9 @@ public class UserDriverDomainService {
public UserDriverPo getDriverDataByUserId(Long userId) {
UserDriverPo userDriverPo=userDriverRepositoryInterface.getDriverDataByUserId(userId);
if (userDriverPo == null) {
return null;
}
R<List<VehiclePo>> vehicleR=transportFeign.getVehiclePosByUserId(userDriverPo.getUserId());
if (R.SUCCESS == vehicleR.getCode() && vehicleR.getData() != null && !vehicleR.getData().isEmpty()) {
userDriverPo.setVehicleList(vehicleR.getData());
@@ -20,17 +20,17 @@ spring:
discovery:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
# server-addr: 10.102.192.31:6848
# username: nacos
# password: manhuoda@2023
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.31:6848
username: nacos
password: manhuoda@2023
config:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
# server-addr: 10.102.192.31:6848
# username: nacos
# password: manhuoda@2023
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.31:6848
username: nacos
password: manhuoda@2023
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yml #默认properties
# 共享配置
@@ -279,7 +279,17 @@ public class ReportFormApplicationService {
k.put("project_code",projectCode == null ? value : projectCode);
break;
case "contractType":
k.put("contract_type",ObjectUtil.equals(value,1) ? "仓储" : "运输");
String contractTypeName;
if (ObjectUtil.equals(value, 1)) {
contractTypeName = "仓储";
} else if (ObjectUtil.equals(value, 2)) {
contractTypeName = "运输";
} else if (ObjectUtil.equals(value, 3)) {
contractTypeName = "其他";
} else {
contractTypeName = String.valueOf(value);
}
k.put("contract_type", contractTypeName);
break;
case "organizationId":
String organizationId = v.stream().filter(item -> item.getOrganizationId()==Long.parseLong(value.toString())).findAny().map(BillingStatement::getOrganizationName).orElse(null);
@@ -1,7 +1,6 @@
package com.mhd.bms.application.server.settlementCustomers;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -9,6 +8,7 @@ import com.mhd.bms.domain.settlementCustomers.entity.SettlementCustomers;
import com.mhd.bms.domain.settlementCustomers.repository.mapper.SettlementCustomersMapper;
import com.mhd.bms.domain.settlementCustomers.repository.po.SettlementCustomersPO;
import com.mhd.bms.domain.settlementCustomers.repository.todo.SettlementCustomersDO;
import com.mhd.bms.domain.settlementCustomers.repository.persistence.SettlementCustomersImpl;
import com.mhd.bms.domain.settlementCustomers.service.SettlementCustomersDomainService;
import com.mhd.bms.interfaces.dto.settlementCustomers.SettlementCustomersDTO;
import com.mhd.common.core.domain.po.SysDictDataVo;
@@ -34,7 +34,9 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -56,7 +58,10 @@ public class SettlementCustomersApplicationService {
private UserServiceFeign userServiceFeign;
@Autowired
private SettlementCustomersMapper settlementCustomersMapper;
@Autowired
private SettlementCustomersImpl settlementCustomersImpl;
private static final int SYNC_BATCH_SIZE = 500;
/**
* 分页查询结算对象列表
@@ -248,105 +253,206 @@ public class SettlementCustomersApplicationService {
* 同步结算对象
*/
public void syncSettlementCustomers() {
/*
查询当前租户下所有的托运人承运人货主
对比用户id及主体角色过滤出未同步的结算对象数据
新增结算对象结算方式默认月结结算方向根据角色区分承运商是收款方客户是付款方
首先采用同步请求方式如果后续数据量过大更换消息队列或者异步新增
*/
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
SettlementCustomersDO settlementCustomersDO = new SettlementCustomersDO();
settlementCustomersDO.setMainRole(2);
settlementCustomersDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
List<SettlementCustomersPO> settlementCustomersList = settlementCustomersDomainService.queryList(settlementCustomersDO);
//TODO 查询货主信息
// List<SettlementCustomersPO> saveSettingCustomersList = settlementCustomersList
long startMs = System.currentTimeMillis();
SyncDictCache dictCache = loadSyncDictCache();
Map<String, SettlementCustomers> existingMap = loadExistingSettlementCustomersMap(
loginUser.getUserPo().getTopOrganizationId());
List<SettlementCustomers> toInsert = new ArrayList<>();
List<SettlementCustomers> toUpdate = new ArrayList<>();
syncShipperSettlementCustomers(loginUser, existingMap, dictCache, toInsert, toUpdate);
syncDriverSettlementCustomers(loginUser, existingMap, dictCache, toInsert, toUpdate);
batchPersist(toInsert, toUpdate);
log.info("同步结算对象完成,新增{}条,更新{}条,耗时{}ms", toInsert.size(), toUpdate.size(), System.currentTimeMillis() - startMs);
}
//查询托运人信息并过滤同步
settlementCustomersDO.setMainRole(2);
List<SettlementCustomersPO> shipperList = settlementCustomersDomainService.queryList(settlementCustomersDO);
private void syncShipperSettlementCustomers(LoginUser loginUser,
Map<String, SettlementCustomers> existingMap,
SyncDictCache dictCache,
List<SettlementCustomers> toInsert,
List<SettlementCustomers> toUpdate) {
AjaxResult ajaxResult = userServiceFeign.userShipperListAll();
List<UserShipperPo> userShipperPoList = new ArrayList<>();
if ("200".equals(String.valueOf(ajaxResult.get("code"))) && ObjectUtil.isNotNull(ajaxResult.get("data"))) {
userShipperPoList = JSONUtil.toList(JSONObject.toJSONString(ajaxResult.get("data")), UserShipperPo.class);
List<UserShipperPo> userShipperPoList = parseFeignList(ajaxResult, UserShipperPo.class);
if (userShipperPoList.isEmpty()) {
return;
}
if(userShipperPoList != null && userShipperPoList.size()>0){
//使用stream流过滤出 userShipperPoList中有但是shipperList中没有的集合
List<UserShipperPo> shipperListNew = userShipperPoList.stream().filter(userShipperPo -> {
return shipperList.stream().noneMatch(shipper -> ObjectUtil.equal(shipper.getSettlementEntityId(),userShipperPo.getUserId()));
}).collect(Collectors.toList());
if(shipperListNew.size()>0){
shipperListNew.forEach(userShipperPo -> {
SettlementCustomersDO saveEntity = new SettlementCustomersDO();
saveEntity.setSettlementCustomersCode(OrderSequence.getOrderCode());
saveEntity.setSettlementEntityId(userShipperPo.getUserId());
saveEntity.setSettlementEntity(userShipperPo.getUserName());
saveEntity.setSettlementMethodCode("monthly_settle");
saveEntity.setMainRole(1);
saveEntity.setCustomerTypeCode("customer"); //从货主同步过来的 默认客户
saveEntity.setNcCode(userShipperPo.getCustomerNcCode());
saveEntity.setCreateTime(new Date()); // Set the create time to the current date and time
Long settlementEntityId = saveEntity.getSettlementEntityId();
List<SettlementCustomers> settlementCustomers = settlementCustomersMapper.selectList(new LambdaQueryWrapper<SettlementCustomers>().eq(SettlementCustomers::getSettlementEntityId, settlementEntityId));
if(settlementCustomers != null && settlementCustomers.size() > 0){
for (SettlementCustomers settlementCustomer : settlementCustomers) {
settlementCustomer.setSettlementEntity(userShipperPo.getUserName());
settlementCustomer.setSettlementMethodCode("monthly_settle");
settlementCustomer.setMainRole(1);
settlementCustomer.setNcCode(userShipperPo.getCustomerNcCode());
settlementCustomer.setSettlementEntity(userShipperPo.getUserName());
settlementCustomersMapper.updateById(settlementCustomer);
}
} else {
saveEntity(saveEntity);
}
});
}
}
//查询承运人信息并过滤同步
settlementCustomersDO.setMainRole(1);
List<SettlementCustomersPO> driverList = settlementCustomersDomainService.queryList(settlementCustomersDO);
AjaxResult ajaxResultDriver = userServiceFeign.userDriverListAll();
List<UserDriverPo> userDriverPoList = new ArrayList<>();
if ("200".equals(String.valueOf(ajaxResultDriver.get("code"))) && ObjectUtil.isNotNull(ajaxResultDriver.get("data"))) {
userDriverPoList = JSONUtil.toList(JSONObject.toJSONString(ajaxResultDriver.get("data")), UserDriverPo.class);
}
if(userDriverPoList != null && userDriverPoList.size()>0){
//使用stream流过滤出 userDriverPoList中有但是driverList中没有的集合
List<UserDriverPo> driverListNew = userDriverPoList.stream().filter(item -> {
return driverList.stream().noneMatch(driver -> ObjectUtil.equal(driver.getSettlementEntityId(),item.getUserId()));
}).collect(Collectors.toList());
if(driverListNew.size()>0){
driverListNew.forEach(userDriverPo -> {
SettlementCustomersDO saveEntity = new SettlementCustomersDO();
saveEntity.setSettlementCustomersCode(OrderSequence.getOrderCode());
saveEntity.setSettlementEntityId(userDriverPo.getUserId());
saveEntity.setSettlementEntity(userDriverPo.getUserName());
saveEntity.setSettlementMethodCode("monthly_settle");
saveEntity.setMainRole(1);
saveEntity.setCustomerTypeCode("customer");
saveEntity.setCreateTime(new Date()); // Set the create time to the current date and time
Long settlementEntityId = saveEntity.getSettlementEntityId();
List<SettlementCustomers> settlementCustomers = settlementCustomersMapper.selectList(new LambdaQueryWrapper<SettlementCustomers>().eq(SettlementCustomers::getSettlementEntityId, settlementEntityId));
if(settlementCustomers != null && settlementCustomers.size() > 0){
for (SettlementCustomers settlementCustomer : settlementCustomers) {
settlementCustomer.setSettlementEntity(userDriverPo.getUserName());
settlementCustomer.setSettlementMethodCode("monthly_settle");
settlementCustomer.setMainRole(1);
settlementCustomersMapper.updateById(settlementCustomer);
}
} else {
saveEntity(saveEntity);
}
});
for (UserShipperPo userShipperPo : userShipperPoList) {
if (StringUtils.isEmpty(userShipperPo.getUserName())) {
continue;
}
Long organizationId = userShipperPo.getOrganizationId() != null
? userShipperPo.getOrganizationId()
: loginUser.getUserPo().getOrganizationId();
SettlementCustomersDO saveEntity = buildShipperSettlementCustomerDO(userShipperPo, loginUser, organizationId);
collectSyncEntity(existingMap, dictCache, organizationId, userShipperPo.getUserName(), saveEntity, toInsert, toUpdate);
}
}
private void syncDriverSettlementCustomers(LoginUser loginUser,
Map<String, SettlementCustomers> existingMap,
SyncDictCache dictCache,
List<SettlementCustomers> toInsert,
List<SettlementCustomers> toUpdate) {
AjaxResult ajaxResultDriver = userServiceFeign.userDriverListAll();
List<UserDriverPo> userDriverPoList = parseFeignList(ajaxResultDriver, UserDriverPo.class);
if (userDriverPoList.isEmpty()) {
return;
}
for (UserDriverPo userDriverPo : userDriverPoList) {
if (StringUtils.isEmpty(userDriverPo.getUserName())) {
continue;
}
Long organizationId = userDriverPo.getOrganizationId() != null
? userDriverPo.getOrganizationId()
: loginUser.getUserPo().getOrganizationId();
SettlementCustomersDO saveEntity = buildDriverSettlementCustomerDO(userDriverPo, loginUser, organizationId);
collectSyncEntity(existingMap, dictCache, organizationId, userDriverPo.getUserName(), saveEntity, toInsert, toUpdate);
}
}
private void collectSyncEntity(Map<String, SettlementCustomers> existingMap,
SyncDictCache dictCache,
Long organizationId,
String settlementEntity,
SettlementCustomersDO saveEntity,
List<SettlementCustomers> toInsert,
List<SettlementCustomers> toUpdate) {
String key = buildOrgEntityKey(organizationId, settlementEntity);
SettlementCustomers existing = existingMap.get(key);
applySyncDictLabels(saveEntity, dictCache);
if (existing != null) {
saveEntity.setSettlementCustomersId(existing.getSettlementCustomersId());
saveEntity.setSettlementCustomersCode(existing.getSettlementCustomersCode());
toUpdate.add(toEntity(saveEntity));
} else {
saveEntity.setSettlementCustomersCode(OrderSequence.getOrderCode());
saveEntity.setDelFlag(1);
SettlementCustomers entity = toEntity(saveEntity);
toInsert.add(entity);
existingMap.put(key, entity);
}
}
private void batchPersist(List<SettlementCustomers> toInsert, List<SettlementCustomers> toUpdate) {
if (!toInsert.isEmpty()) {
settlementCustomersImpl.saveBatch(toInsert, SYNC_BATCH_SIZE);
}
if (!toUpdate.isEmpty()) {
settlementCustomersImpl.updateBatchById(toUpdate, SYNC_BATCH_SIZE);
}
}
private Map<String, SettlementCustomers> loadExistingSettlementCustomersMap(Long topOrganizationId) {
LambdaQueryWrapper<SettlementCustomers> wrapper = new LambdaQueryWrapper<SettlementCustomers>()
.eq(SettlementCustomers::getDelFlag, 1);
if (topOrganizationId != null) {
wrapper.eq(SettlementCustomers::getTopOrganizationId, topOrganizationId);
}
List<SettlementCustomers> existingList = settlementCustomersMapper.selectList(wrapper);
Map<String, SettlementCustomers> existingMap = new HashMap<>(existingList.size() * 2);
for (SettlementCustomers existing : existingList) {
if (existing.getOrganizationId() != null && StringUtils.isNotEmpty(existing.getSettlementEntity())) {
existingMap.put(buildOrgEntityKey(existing.getOrganizationId(), existing.getSettlementEntity()), existing);
}
}
return existingMap;
}
private SyncDictCache loadSyncDictCache() {
SyncDictCache cache = new SyncDictCache();
cache.settlementMethodLabel = resolveDictLabel(DictCode.SETTLEWAY.getCode(), "monthly_settle");
cache.customerTypeLabel = resolveDictLabel(DictCode.CUSTOMER_TYPE.getCode(), "customer");
return cache;
}
private String resolveDictLabel(String dictType, String dictValue) {
AjaxResult ajaxResult = systemServiceFeign.selectListByDictType(dictType);
if (!"200".equals(String.valueOf(ajaxResult.get("code"))) || ajaxResult.get("data") == null) {
return null;
}
List<SysDictDataVo> dictList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), SysDictDataVo.class);
if (dictList == null || dictList.isEmpty()) {
return null;
}
return dictList.stream()
.filter(info -> ObjectUtil.equal(info.getDictValue(), dictValue))
.map(SysDictDataVo::getDictLabel)
.findAny()
.orElse(null);
}
private void applySyncDictLabels(SettlementCustomersDO settlementCustomersDO, SyncDictCache dictCache) {
if (StringUtils.isNotEmpty(settlementCustomersDO.getSettlementMethodCode()) && dictCache.settlementMethodLabel != null) {
settlementCustomersDO.setSettlementMethod(dictCache.settlementMethodLabel);
}
if (StringUtils.isNotEmpty(settlementCustomersDO.getCustomerTypeCode()) && dictCache.customerTypeLabel != null) {
settlementCustomersDO.setCustomerType(dictCache.customerTypeLabel);
}
}
private <T> List<T> parseFeignList(AjaxResult ajaxResult, Class<T> clazz) {
if (!"200".equals(String.valueOf(ajaxResult.get("code"))) || ObjectUtil.isNull(ajaxResult.get("data"))) {
return new ArrayList<>();
}
List<T> list = JSON.parseArray(JSON.toJSONString(ajaxResult.get("data")), clazz);
return list != null ? list : new ArrayList<>();
}
private SettlementCustomers toEntity(SettlementCustomersDO settlementCustomersDO) {
SettlementCustomers settlementCustomers = new SettlementCustomers();
BeanUtils.copyProperties(settlementCustomersDO, settlementCustomers);
return settlementCustomers;
}
private String buildOrgEntityKey(Long organizationId, String settlementEntity) {
return organizationId + "|" + settlementEntity;
}
private static class SyncDictCache {
private String settlementMethodLabel;
private String customerTypeLabel;
}
private SettlementCustomersDO buildShipperSettlementCustomerDO(UserShipperPo userShipperPo, LoginUser loginUser, Long organizationId) {
SettlementCustomersDO saveEntity = new SettlementCustomersDO();
saveEntity.setSettlementEntityId(userShipperPo.getUserId());
saveEntity.setSettlementEntity(userShipperPo.getUserName());
saveEntity.setSettlementMethodCode("monthly_settle");
saveEntity.setMainRole(1);
saveEntity.setCustomerTypeCode("customer");
saveEntity.setNcCode(userShipperPo.getCustomerNcCode());
saveEntity.setSettlementCurrency(userShipperPo.getSettlementCurrency());
saveEntity.setOrganizationId(organizationId);
saveEntity.setOrganizationName(StringUtils.isNotEmpty(userShipperPo.getOrganizationName())
? userShipperPo.getOrganizationName()
: loginUser.getUserPo().getOrganizationName());
saveEntity.setTopOrganizationId(userShipperPo.getTopOrganizationId() != null
? userShipperPo.getTopOrganizationId()
: loginUser.getUserPo().getTopOrganizationId());
saveEntity.setCreateTime(new Date());
return saveEntity;
}
private SettlementCustomersDO buildDriverSettlementCustomerDO(UserDriverPo userDriverPo, LoginUser loginUser, Long organizationId) {
SettlementCustomersDO saveEntity = new SettlementCustomersDO();
saveEntity.setSettlementEntityId(userDriverPo.getUserId());
saveEntity.setSettlementEntity(userDriverPo.getUserName());
saveEntity.setSettlementMethodCode("monthly_settle");
saveEntity.setMainRole(1);
saveEntity.setCustomerTypeCode("customer");
saveEntity.setOrganizationId(organizationId);
saveEntity.setOrganizationName(StringUtils.isNotEmpty(userDriverPo.getOrganizationName())
? userDriverPo.getOrganizationName()
: loginUser.getUserPo().getOrganizationName());
saveEntity.setTopOrganizationId(userDriverPo.getTopOrganizationId() != null
? userDriverPo.getTopOrganizationId()
: loginUser.getUserPo().getTopOrganizationId());
saveEntity.setCreateTime(new Date());
return saveEntity;
}
/**
* 保存结算客户信息
@@ -92,5 +92,8 @@ public class SettlementCustomers extends BaseVOEntity{
@ApiModelProperty(name = "nc编码")
private String ncCode;
@ApiModelProperty("默认结算币种")
private String settlementCurrency;
}
@@ -93,7 +93,7 @@ public class SettlementCustomersPO extends BaseVOEntity{
@ApiModelProperty(name = "nc编码")
private String ncCode;
@ApiModelProperty(name = "结算币种")
@ApiModelProperty("默认结算币种")
private String settlementCurrency;
@ApiModelProperty("业务单据id")
@@ -105,6 +105,9 @@ public class SettlementCustomersDO extends BaseVOEntity{
@ApiModelProperty(name = "nc编码")
private String ncCode;
@ApiModelProperty("默认结算币种")
private String settlementCurrency;
@ApiModelProperty("业务流水号")
private String businessFlow;
@@ -54,8 +54,8 @@ public class ContractManagePO extends BaseVOEntity{
@Excel(name = "是否通用合同", readConverterExp = "1=-是,2-否")
private Integer commonContractFlag;
@ApiModelProperty("合同类型(1-仓储,2-运输)")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输")
@ApiModelProperty("合同类型(1-仓储,2-运输3-其他")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输3=-其他")
private Integer contractType;
@ApiModelProperty("合同状态(1-未生效,2-使用中,3-已过期,4-已作废)")
@@ -104,6 +104,9 @@ public class SettlementCustomersDTO extends BaseVOEntity{
@ApiModelProperty(name = "nc编码")
private String ncCode;
@ApiModelProperty("默认结算币种")
private String settlementCurrency;
@ApiModelProperty("业务流水号")
private String businessFlow;
@@ -23,6 +23,7 @@
<result property="customerTypeCode" column="customer_type_code" />
<result property="projectCode" column="project_code" />
<result property="projectName" column="project_name" />
<result property="ncCode" column="nc_code" />
<result property="settlementObject" column="settlement_object" />
<result property="createTime" column="create_time" />
<result property="createBy" column="create_by" />
@@ -71,11 +72,40 @@
</if>
</sql>
<sql id="settlement_customers_columns">
a.settlement_customers_id,
a.top_organization_id,
a.organization_id,
a.organization_name,
a.settlement_customers_code,
a.settlement_entity_id,
a.settlement_entity,
a.settlement_method,
a.settlement_method_code,
a.bank_name,
a.bank_card_number,
a.bank_binding_name,
a.remark,
a.main_role,
a.customer_type,
a.customer_type_code,
a.project_code,
a.project_name,
a.nc_code,
a.create_time,
a.create_by,
a.create_by_name,
a.update_time,
a.update_by,
a.update_by_name,
a.del_flag
</sql>
<select id="queryList" parameterType="com.mhd.bms.domain.settlementCustomers.repository.todo.SettlementCustomersDO"
resultMap="SettlementCustomersResult">
select
a.*,
b.SETTLEMENT_CURRENCY as settlement_currency,
<include refid="settlement_customers_columns"/>,
COALESCE(a.settlement_currency, b.SETTLEMENT_CURRENCY) as settlement_currency,
bd.business_document_id,
bd.business_flow,
bd.original_business_num,
@@ -20,4 +20,6 @@ public interface ExecuteOrderMapper extends BaseMapper<ExecuteOrder>
public List<ExecuteOrderPO> queryList(ExecuteOrderDO executeOrderDO);
String getOrgNameByOrgId(@Param("organizationId") Long organizationId);
void updateTmsOrderImage(@Param("executeOrderNumber") String executeOrderNumber,@Param("pictureUrl") String pictureUrl);
}
@@ -258,4 +258,13 @@ public class MaterialBaseInfoDTO extends BaseVOEntity {
@ApiModelProperty("是否抄码: 1-是 2-否")
@Excel(name = "是否抄码: 1-是 2-否")
private Integer copyCode;
@ApiModelProperty("保额")
@Excel(name = "保额")
private BigDecimal insureAmount;
@ApiModelProperty(name = "收费标准")
private String chargeStandard;
@ApiModelProperty(name = "单位")
private String unit;
}
@@ -18,6 +18,8 @@ import com.mhd.oms.domain.businessDeliveryDetailsLink.repository.facade.IBusines
import com.mhd.oms.domain.businessDeliveryDetailsLink.repository.mapper.BusinessDeliveryDetailsLinkMapper;
import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder;
import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper;
import com.mhd.oms.domain.executeOrder.entity.ExecuteOrder;
import com.mhd.oms.domain.executeOrder.repository.mapper.ExecuteOrderMapper;
import com.mhd.oms.domain.reservationDeliveryDetailsLink.entity.ReservationDeliveryDetailsLink;
import com.mhd.oms.domain.reservationDeliveryDetailsLink.repository.facade.IReservationDeliveryDetailsLinkService;
import com.mhd.oms.domain.reservationInMaterialDetail.entity.ReservationInMaterialDetail;
@@ -76,6 +78,9 @@ public class ReservationStockOutOrderDomainService {
private ReservationStockInOrderMapper reservationStockInOrderMapper;
@Autowired
private BusinessDocumentOrderMapper businessDocumentOrderMapper;
@Autowired
private ExecuteOrderMapper executeOrderMapper;
@Resource
private SystemServiceFeign systemServiceFeign;
@Resource
@@ -844,6 +849,15 @@ public class ReservationStockOutOrderDomainService {
BusinessDocumentOrder businessDocumentOrder = businessDocumentOrderMapper.selectOne(new LambdaQueryWrapper<BusinessDocumentOrder>().eq(BusinessDocumentOrder::getId, subOrderId));
businessDocumentOrder.setOrderStatus(3L);
businessDocumentOrderMapper.updateById(businessDocumentOrder);
String executeOrderNumber = businessDocumentOrder.getExecuteOrderNumber();
if (executeOrderNumber != null){
ExecuteOrder executeOrder = executeOrderMapper.selectOne(new LambdaQueryWrapper<ExecuteOrder>().eq(ExecuteOrder::getGoodsNumber, executeOrderNumber));
executeOrder.setInvoiceStatus(1);
executeOrder.setInvoiceDate(new Date());
executeOrderMapper.updateById(executeOrder);
// pictureUrl="123";
executeOrderMapper.updateTmsOrderImage(executeOrderNumber,pictureUrl);
}
}
}
}
@@ -156,7 +156,10 @@ public class ExecuteOrderDTO extends BaseVOEntity{
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date invoiceEndTime;
@ApiModelProperty("发票编号")
private String invoiceNumber;
@ApiModelProperty("车次")
private Integer trainNo;
}
}
+9 -16
View File
@@ -18,27 +18,20 @@ spring:
discovery:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
# server-addr: 10.102.192.30:6848
# username: nacos
# password: manhuoda@2023
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.30:6848
username: nacos
password: manhuoda@2023
config:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
# server-addr: 10.102.192.30:6848
# username: nacos
# password: manhuoda@2023
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.30:6848
username: nacos
password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.105:6848
# 锁定server端的配置文件(读取它的配置项)
namespace: # 命名空间id
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yml #默认properties
# GW推送配置
gw:
push:
url: http://10.33.0.100/nagu-erp-api/transfer/pushData
verify-key1: FuDjK3iuftzwf8kWJ44DDZJ9icZmL9Ee4Valv8Qz6VfsdW60fNEzNSEtrKlUr6OI
verify-key2: ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD
file-extension: yml #默认properties
@@ -44,7 +44,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and eo.CREATE_TIME &gt;= #{createStartTime}
</if>
<if test="invoiceStatus != null">
and eo.INVOICE_Status = #{invoiceStatus}
and eo.INVOICE_STATUS = #{invoiceStatus}
</if>
<if test="invoiceNumber != null and invoiceNumber != ''">
and eo.INVOICE_NUMBER like concat('%', #{invoiceNumber}, '%')
</if>
<if test="createEndTime != null">
and eo.CREATE_TIME &lt;= #{createEndTime} + 1 - 1/86400
@@ -105,6 +108,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</sql>
<update id="updateTmsOrderImage">
UPDATE NGWL_TEST_WLHY.TMS_TRANSPORT_NOTE
SET UNLOAD_IMAGE = #{pictureUrl},
UNLOAD_TIME = NOW(),
RECEIPT_TIME = NOW()
WHERE TRANSPORTATION_NUMBER IN (
SELECT GOODS_NUMBER
FROM NGWL_TEST_WLHY.TMS_ORDER
WHERE EXECUTE_ORDER_NUMBER = #{executeOrderNumber}
)
</update>
<select id="queryList" parameterType="com.mhd.oms.domain.executeOrder.repository.todo.ExecuteOrderDO" resultMap="ExecuteOrderResult">
<include refid="selectExecuteOrderPo"/>
@@ -61,6 +61,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<update id="updateW">
update NGWL_TEST_WMS.DELIVERY_DETAILS_LINK set RETURN_ORDER_NUMBER = #{returnOrderNumber} where ORDER_NUMBER = #{ordernumber}
update NGWL_TEST_WMS.DELIVERY_DETAILS_LINK set RETURN_ORDER_NUMBER = #{returnOrderNumber} where ORDER_NUMBER = #{orderNumber}
</update>
</mapper>
@@ -573,12 +573,15 @@ public class VehicleApplicationService {
if (! "200".equals(String.valueOf(userInfoResult.get("code")))) {
throw new ServiceException("用户信息获取失败: " + userInfoResult.get("msg"));
}
UserDriverPo userPo = JSONUtil.toBean(JSONUtil.toJsonStr(userInfoResult.get("data")),
UserDriverPo.class);
vehicle.setUserName(userPo.getUserName());
vehicle.setUserPhone(userPo.getUserPhone());
// 司机数据可能不存在用户尚未在用户中台完成注册此时使用车辆表单携带的用户信息
if (ObjectUtil.isNotNull(userInfoResult.get("data"))) {
UserDriverPo userPo = JSONUtil.toBean(JSONUtil.toJsonStr(userInfoResult.get("data")),
UserDriverPo.class);
vehicle.setUserName(userPo.getUserName());
vehicle.setUserPhone(userPo.getUserPhone());
}
List<String> roleCodeList;
List<String> roleCodeList = new ArrayList<>();
AjaxResult<?> roleListAjaxResult = userServiceFeign.getRoleListByUserId(vehicle.getUserId());
if ("200".equals(String.valueOf(roleListAjaxResult.get("code"))) && ObjectUtil.isNotNull(
roleListAjaxResult.get("data"))) {
@@ -586,8 +589,6 @@ public class VehicleApplicationService {
RolePO.class);
if (CollUtil.isNotEmpty(rolePOS)) {
roleCodeList = rolePOS.stream().map(RolePO :: getRoleCode).collect(Collectors.toList());
} else {
throw new ServiceException("账号未授权角色信息!");
}
} else {
throw new ServiceException("获取用户角色列表失败: " + roleListAjaxResult.get("msg"));
@@ -865,12 +866,14 @@ public class VehicleApplicationService {
if (! "200".equals(String.valueOf(userInfoResult.get("code")))) {
throw new ServiceException("用户信息获取失败: " + userInfoResult.get("msg"));
}
UserDriverPo userPo = JSONUtil.toBean(JSONUtil.toJsonStr(userInfoResult.get("data")),
UserDriverPo.class);
vehicle.setUserName(userPo.getUserName());
vehicle.setUserPhone(userPo.getUserPhone());
if (ObjectUtil.isNotNull(userInfoResult.get("data"))) {
UserDriverPo userPo = JSONUtil.toBean(JSONUtil.toJsonStr(userInfoResult.get("data")),
UserDriverPo.class);
vehicle.setUserName(userPo.getUserName());
vehicle.setUserPhone(userPo.getUserPhone());
}
List<String> roleCodeList;
List<String> roleCodeList = new ArrayList<>();
AjaxResult<?> roleListAjaxResult = userServiceFeign.getRoleListByUserId(vehicle.getUserId());
if ("200".equals(String.valueOf(roleListAjaxResult.get("code"))) && ObjectUtil.isNotNull(
roleListAjaxResult.get("data"))) {
@@ -878,8 +881,6 @@ public class VehicleApplicationService {
RolePO.class);
if (CollUtil.isNotEmpty(rolePOS)) {
roleCodeList = rolePOS.stream().map(RolePO :: getRoleCode).collect(Collectors.toList());
} else {
throw new ServiceException("账号未授权角色信息!");
}
} else {
throw new ServiceException("获取用户角色列表失败: " + roleListAjaxResult.get("msg"));
@@ -1935,10 +1936,13 @@ public class VehicleApplicationService {
if (! "200".equals(String.valueOf(info.get("code")))) {
throw new ServiceException("用户信息获取失败");
}
UserDriverPo userPo = JSONObject.parseObject(JSONObject.toJSONString(info.get("data")),
UserDriverPo.class);
vehicle.setUserName(userPo.getUserName());
vehicle.setUserPhone(userPo.getUserPhone());
// 司机数据可能不存在用户尚未在用户中台完成注册此时使用车辆表单携带的用户信息
if (ObjectUtil.isNotNull(info.get("data"))) {
UserDriverPo userPo = JSONObject.parseObject(JSONObject.toJSONString(info.get("data")),
UserDriverPo.class);
vehicle.setUserName(userPo.getUserName());
vehicle.setUserPhone(userPo.getUserPhone());
}
List<String> roleCodeList = new ArrayList<>();
AjaxResult roleListAjaxResult = userServiceFeign.getRoleListByUserId(vehicle.getUserId());
if ("200".equals(String.valueOf(roleListAjaxResult.get("code"))) && ObjectUtil.isNotNull(
@@ -1948,8 +1952,6 @@ public class VehicleApplicationService {
if (rolePOS != null && ! rolePOS.isEmpty()) {
roleCodeList.addAll(
rolePOS.stream().map(RolePO :: getRoleCode).collect(Collectors.toList()));
} else {
throw new ServiceException("账号未授权角色信息!");
}
}
if (! roleCodeList.contains(RoleEnum.DRIVER.getCode())) {
@@ -20,10 +20,10 @@ spring:
discovery:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置使用ip+端口号
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.31:6848
username: nacos
password: manhuoda@2023
server-addr: 10.33.0.129:6010
# server-addr: 10.102.192.31:6848
# username: nacos
# password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.31:6848
# username: nacos
@@ -33,14 +33,14 @@ spring:
config:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置使用ip+端口号
server-addr: 10.102.192.31:6848
username: nacos
password: manhuoda@2023
# server-addr: 10.102.192.31:6848
# username: nacos
# password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.31:6848
# username: nacos
# password: manhuoda@2023
# server-addr: 10.33.0.129:6010
server-addr: 10.33.0.129:6010
#线上正式环境
# server-addr: 10.102.192.105:6848
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
@@ -227,4 +227,14 @@ public class MaterialBaseInfo extends BaseVOEntity {
@Excel(name = "毛重(kg")
private BigDecimal grossWeight;
}
@ApiModelProperty("保额")
@Excel(name = "保额")
private BigDecimal insureAmount;
@ApiModelProperty(name = "收费标准")
private String chargeStandard;
@ApiModelProperty(name = "单位")
private String unit;
}
@@ -274,5 +274,13 @@ public class MaterialBaseInfoPO extends BaseVOEntity {
@ApiModelProperty(name = "推送人名称")
private String pushByName;
@ApiModelProperty("保额")
@Excel(name = "保额")
private BigDecimal insureAmount;
@ApiModelProperty(name = "收费标准")
private String chargeStandard;
@ApiModelProperty(name = "单位")
private String unit;
}
@@ -250,4 +250,13 @@ public class MaterialBaseInfoDO extends BaseVOEntity {
@ApiModelProperty("更新时间止")
private String updateTimeEnd;
}
@ApiModelProperty("保额")
@Excel(name = "保额")
private BigDecimal insureAmount;
@ApiModelProperty(name = "收费标准")
private String chargeStandard;
@ApiModelProperty(name = "单位")
private String unit;
}
@@ -302,4 +302,13 @@ public class MaterialBaseInfoDTO extends BaseVOEntity {
@ApiModelProperty(name = "推送人名称")
private String pushByName;
}
@ApiModelProperty("保额")
@Excel(name = "保额")
private BigDecimal insureAmount;
@ApiModelProperty(name = "收费标准")
private String chargeStandard;
@ApiModelProperty(name = "单位")
private String unit;
}
@@ -69,6 +69,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and (operators_name IS NULL OR operators_name = '')
</sql>
<!-- 任务大厅 tabType=2:排除 PC 端已处理/已指派的关联业务单(delive_task 作业人仍为空时,业务单可能已在 PC 作业) -->
<sql id="selectDeliveTaskPo1">
<where>
del_flag = 1
@@ -64,6 +64,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="pushBy" column="push_by" />
<result property="grossWeight" column="gross_weight" />
<result property="pushByName" column="push_by_name" />
<result property="unit" column="unit" />
<result property="insureAmount" column="insure_amount" />
<result property="chargeStandard" column="charge_standard" />
</resultMap>
@@ -72,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
material_classify_name, a.material_type, a.material_type_name, a.pack_id, a.pack_code, a.pack_name, a.unit_code, a.unit_name, a.brand_id, a.brand_code, a.brand_name, a.shelf_life, a.weight_limit, a.volume_limit, a.material_shape,
material_shape_name, a.material_size, a.material_length, a.material_width, a.material_height, a.remark, a.nullify, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.common,
sku_code, a.unit_price, a.currency, a.origin_country, a.hs_code, a.declaration_unit, a.statutory_unit, a.statutory_second_unit, a.copy_code,
a.push_status,a.push_time,a.push_by,a.goods_type,a.gross_weight,a.push_by_name,
a.push_status,a.push_time,a.push_by,a.goods_type,a.gross_weight,a.push_by_name,a.unit,a.INSURE_AMOUNT,a.CHARGE_STANDARD,
specification_model as specification_model,nvl(b.stock_qty,0) as stock_quantity from material_base_info a left join (
select material_base_info_id, sum(INVENTORY_QUANTITY) as stock_qty from MATERIAL_INVENTORY group by material_base_info_id
) b on a.material_base_info_id = b.material_base_info_id