13 Commits
Author SHA1 Message Date
王奎兴 f6b112a134 dockerfile jdk修改 2026-02-10 17:47:33 +08:00
王奎兴 afc47230df bms nacos配置修改; 2026-02-09 15:23:17 +08:00
王奎兴 4917dcb154 修改dockerfile jar包位置 2026-02-09 15:14:52 +08:00
王奎兴 b136e6a55e bms及bms达梦配置修改; 2026-02-09 14:58:07 +08:00
王奎兴 1eb2f4c816 测试环境nacos配置修改; 2026-02-09 14:46:28 +08:00
王奎兴 8ca0b289fa Merge branch 'dev' into test 2026-02-09 14:45:24 +08:00
王奎兴 457fceb0b1 测试环境nacos配置修改; 2026-02-09 14:44:40 +08:00
王奎兴 4f16713c03 Merge branch 'dev' into test
# Conflicts:
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_finance/src/main/resources/bootstrap.yml
2026-02-09 14:40:57 +08:00
赵辉 98c4c08a8f 修改密码修正 2026-02-06 18:51:54 +08:00
赵辉 5170a2d96f Merge branch 'dev' into test 2026-02-06 18:50:42 +08:00
赵辉 d1e982b9d4 Merge branch 'dev' into test 2026-02-06 15:26:00 +08:00
赵辉 c0c75e2db0 Merge branch 'dev' into test
# Conflicts:
#	mhd_finance/src/main/resources/bootstrap.yml
2026-02-06 14:20:05 +08:00
赵辉 8f8bda4a87 yml修改 2026-02-06 14:19:37 +08:00
1717 changed files with 6277 additions and 191848 deletions
BIN
View File
Binary file not shown.
@@ -3,7 +3,6 @@ package com.mhd.system.api;
import com.mhd.common.core.constant.ServiceNameConstants; import com.mhd.common.core.constant.ServiceNameConstants;
import com.mhd.common.core.domain.dto.BusinessDataPushDTO; import com.mhd.common.core.domain.dto.BusinessDataPushDTO;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.domain.BusinessDocumentFeign;
import com.mhd.system.api.factory.RemoteBmsFeignFallbackFactory; import com.mhd.system.api.factory.RemoteBmsFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration; import com.mhd.system.api.feign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
@@ -19,8 +18,7 @@ import java.util.Set;
/** /**
* bms财务结算系统feign调用接口 * bms财务结算系统feign调用接口
*/ */
// 目标地址由 nacos 配置项 feign.url.mhd-bms-service 指定,未配置时按服务名走服务发现 @FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.32:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface BmsServiceFeign { public interface BmsServiceFeign {
@@ -37,13 +35,6 @@ public interface BmsServiceFeign {
@GetMapping("/settlementCustomersApi/getInfoByCode") @GetMapping("/settlementCustomersApi/getInfoByCode")
public AjaxResult getCustomersInfoByCode(@RequestParam("settlementCustomersCode")String settlementCustomersCode); public AjaxResult getCustomersInfoByCode(@RequestParam("settlementCustomersCode")String settlementCustomersCode);
/**
* 按结算主体ID(如货主ID,对应 settlement_customers.settlement_entity_id)查询结算对象
*/
@GetMapping("/settlementCustomersApi/getInfoBySettlementEntityId")
AjaxResult getCustomersInfoBySettlementEntityId(@RequestParam("settlementEntityId") Long settlementEntityId,
@RequestParam(value = "topOrganizationId", required = false) Long topOrganizationId);
/** /**
* 推送同步业务单据 * 推送同步业务单据
@@ -58,29 +49,4 @@ public interface BmsServiceFeign {
*/ */
@GetMapping("/documentTypeApi/getDocumentInfoByCodeSet") @GetMapping("/documentTypeApi/getDocumentInfoByCodeSet")
AjaxResult getDocumentInfoByCodeSet(@RequestParam("documentTypeCodeSet") Set<String> documentTypeCodeSet); AjaxResult getDocumentInfoByCodeSet(@RequestParam("documentTypeCodeSet") Set<String> documentTypeCodeSet);
}
/**
* 定时任务整租推送到bms
*/
@PostMapping("/businessDocumentApi/wholeRentSynchronization")
public AjaxResult businessDocumentApiSave(@RequestBody BusinessDataPushDTO businessDataPushDTO);
/**
* 定时任务整租推送到bms
*/
@PostMapping("/businessDocumentApi/wholeRentSynchronizationZXF")
public AjaxResult wholeRentSynchronizationZXF(@RequestBody BusinessDataPushDTO businessDataPushDTO);
@PostMapping("/businessDocumentApi/feignSave")
public AjaxResult feignSaveBusinessDocument(@RequestBody BusinessDocumentFeign businessDocumentFeign);
/**
* 根据结算对象id查询结算对象参数列表
*/
@GetMapping("/settlementCustomersParametersApi/getListBySettlementCustomersId")
AjaxResult getListBySettlementCustomersId(@RequestParam("settlementCustomersId") Long settlementCustomersId);
@PostMapping("/settlementCustomersApi/updatePushContractManageJobId")
AjaxResult updatePushContractManageJobId(@RequestParam("settlementCustomersId") Long settlementCustomersId,
@RequestParam("jobId") Integer jobId);
}
@@ -1,79 +0,0 @@
package com.mhd.system.api;
import com.mhd.common.core.constant.ServiceNameConstants;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.domain.*;
import com.mhd.system.api.factory.RemoteBmsFeignFallbackFactory;
import com.mhd.system.api.factory.RemoteOmsFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.concurrent.CompletableFuture;
// 目标地址由 nacos 配置项 feign.url.mhd-oms-service 指定,未配置时按服务名走服务发现
@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.33:8017",fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface OmsServiceFeign {
@ApiOperation("wms推送入库单")
@PostMapping(value = "/reservationStockInOrderApi/pushInOrder")
public AjaxResult pushInOrder(@RequestBody StockInOrderTZPD stockInOrder);
@ApiOperation("wms推送入库单明细")
@PostMapping(value = "/reservationStockInOrderApi/pushInOrderDetail")
public AjaxResult pushInOrderDetail(@RequestBody InMaterialDetailTZPD inMaterialDetail);
@ApiOperation("wms回传入库结果:按入库单号同步入库状态(3-收货中 4-上架中 5-已入库)到OMS入库业务单,type非1为入库")
@GetMapping(value = "/executionStockInOrderApi/returnResult")
public AjaxResult returnInResult(@RequestParam("orderNumber") String orderNumber, @RequestParam("status") Long status, @RequestParam("type") String type);
@ApiOperation("wms推送入库单")
@PostMapping(value = "/reservationStockOutOrderApi/pushOutOrder")
public AjaxResult pushOutOrder(@RequestBody StockOutOrderTZPD stockOutOrder);
@ApiOperation("wms推送入库单明细")
@PostMapping(value = "/reservationStockOutOrderApi/pushOutOrderDetail")
public AjaxResult pushOutOrderDetail(@RequestBody OutMaterialDetailTZPD outMaterialDetail);
@ApiOperation("编辑物料库存")
@PostMapping("/reservationMaterialInventoryApi/omsEdit")
@Async
public CompletableFuture<Void> omsEdit(@RequestBody MaterialInventoryOmsParamDO materialInventoryOmsParamDO);
@ApiOperation("查询企业单位列表-新增物料时显示下拉框数据")
@GetMapping("/erpEnterpriseUnitApi/unitList")
public AjaxResult getUnitList(ErpEnterpriseUnitDTO erpEnterpriseUnitDTO);
//查询企业国别列表-新增物料时显示下拉框数据
@ApiOperation("查询企业国别列表-新增物料时显示下拉框数据")
@GetMapping("/erpCountryApi/countryList")
public AjaxResult getCountryList(ErpCountryDTO erpCountryDTO);
@ApiOperation("保存gwlog")
@PostMapping("/gwLogApi/saveGwLog")
AjaxResult insertGwLog(@RequestBody GwLogDTO gwLogDTO);
@ApiOperation("修改gwlog")
@PostMapping("/gwLogApi/updateGwLog")
AjaxResult updateGwLog(@RequestBody GwLogDTO gwLogDTO);
@ApiOperation("批量推送")
@PostMapping("/reservationStockOutOrderApi/batchPush")
public AjaxResult batchPush(@RequestBody List<Long> idList);
@ApiOperation("批量推送")
@PostMapping("/reservationStockOutOrderApi/batchPushByNumber")
public AjaxResult batchPushByNumber(@RequestBody List<String> numberList);
@ApiOperation("保存电子签名记录")
@PostMapping("/electronicSignatureApi/saveSignature")
public AjaxResult saveSignature(@RequestBody ElectronicSignatureSyncDTO saveDTO);
}
@@ -12,8 +12,6 @@ import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.po.SysMultistageDictPo; import com.mhd.common.core.domain.po.SysMultistageDictPo;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.domain.ContainerFeignPO; import com.mhd.system.api.domain.ContainerFeignPO;
import com.mhd.system.api.domain.ContractManageFeignDTO;
import com.mhd.system.api.domain.ContractManageParametersFeign;
import com.mhd.system.api.domain.SysDictData; import com.mhd.system.api.domain.SysDictData;
import com.mhd.system.api.factory.RemoteSystemFeignFallbackFactory; import com.mhd.system.api.factory.RemoteSystemFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration; import com.mhd.system.api.feign.FeignAutoConfiguration;
@@ -203,13 +201,6 @@ public interface SystemServiceFeign {
@GetMapping("/batchApi/getInfo/{batchId}") @GetMapping("/batchApi/getInfo/{batchId}")
public AjaxResult getBatchInfoByBatchId(@PathVariable("batchId") Long batchId); public AjaxResult getBatchInfoByBatchId(@PathVariable("batchId") Long batchId);
/**
* 根据批次名称查询批次列表(导入用)
*/
@GetMapping("/batchApi/list")
public Object getBatchListByName(@RequestParam("batchName") String batchName,
@RequestParam("organizationId") Long organizationId);
/** /**
* 根据batchId获取对应批次详情信息 * 根据batchId获取对应批次详情信息
*/ */
@@ -227,24 +218,12 @@ public interface SystemServiceFeign {
@GetMapping("/associationWarehouseApi/getWarehouseInfo/{correlationId}") @GetMapping("/associationWarehouseApi/getWarehouseInfo/{correlationId}")
public AjaxResult getWarehouseInfo(@PathVariable("correlationId") Long correlationId); public AjaxResult getWarehouseInfo(@PathVariable("correlationId") Long correlationId);
/**
* 直接从数据库获取指定用户设置的仓库(不使用缓存)
*/
@GetMapping("/associationWarehouseApi/getWarehouseInfoFromDb/{correlationId}")
public AjaxResult getWarehouseInfoFromDb(@PathVariable("correlationId") Long correlationId);
/** /**
* 根据warehouseId获取对仓库信息 * 根据warehouseId获取对仓库信息
*/ */
@GetMapping("/warehouseApi/getInfo/{warehouseId}") @GetMapping("/warehouseApi/getInfo/{warehouseId}")
public AjaxResult getWarehouseInfoByWarehouseId(@PathVariable("warehouseId") Long warehouseId); public AjaxResult getWarehouseInfoByWarehouseId(@PathVariable("warehouseId") Long warehouseId);
/**
* 根据warehouseId获取仓库及下库区及库位树(与前端 warehouseApi/getWarehouseChildren 一致,用于PC上架页默认库位回显)
*/
@GetMapping("/warehouseApi/getWarehouseChildren")
public AjaxResult getWarehouseChildren(@RequestParam("warehouseId") Long warehouseId);
/** /**
* 根据storageSectionId获取对应库区信息 * 根据storageSectionId获取对应库区信息
*/ */
@@ -266,14 +245,6 @@ public interface SystemServiceFeign {
@GetMapping("/packApi/getInfoByPackIdAndUnitCode/{packId}/{unitCode}") @GetMapping("/packApi/getInfoByPackIdAndUnitCode/{packId}/{unitCode}")
public AjaxResult getInfoByPackIdAndUnitCode(@PathVariable("packId") Long packId, @PathVariable("unitCode") String unitCode); public AjaxResult getInfoByPackIdAndUnitCode(@PathVariable("packId") Long packId, @PathVariable("unitCode") String unitCode);
/**
* 根据包装编码/名称查询包装(导入用)
*/
@GetMapping("/packApi/list")
public Object getPackList(@RequestParam(value = "packCode", required = false) String packCode,
@RequestParam(value = "packName", required = false) String packName,
@RequestParam(value = "organizationId", required = false) Long organizationId);
/** /**
* 根据platformId获取对应月台信息 * 根据platformId获取对应月台信息
*/ */
@@ -317,12 +288,6 @@ public interface SystemServiceFeign {
@GetMapping("/expenseAccountApi/getInfoByCode") @GetMapping("/expenseAccountApi/getInfoByCode")
public AjaxResult getSubInfoByCode(@RequestParam("subjectCode") String subjectCode); public AjaxResult getSubInfoByCode(@RequestParam("subjectCode") String subjectCode);
/**
* 根据code编码查询费用科目
*/
@GetMapping("/expenseAccountApi/getInfoByCode2")
public AjaxResult getSubInfoByCode2(@RequestParam("subjectCode") String subjectCode,@RequestParam("topOrganizationId") Long topOrganizationId);
/** /**
* 根据code编码查询项目信息 * 根据code编码查询项目信息
@@ -354,51 +319,13 @@ public interface SystemServiceFeign {
@GetMapping("/contractManageApi/getInfoByCode") @GetMapping("/contractManageApi/getInfoByCode")
public AjaxResult getInfoByCode(@RequestParam("contractNumber") String contractNumber); public AjaxResult getInfoByCode(@RequestParam("contractNumber") String contractNumber);
/**
* 获取通用合同
*/
@GetMapping("/contractManageApi/getGeneralContract")
public AjaxResult getGeneralContract();
/** /**
* 根据结算主体获取合同信息 * 根据结算主体获取合同信息
*/ */
@GetMapping("/contractManageApi/getInfoByCustomer") @GetMapping("/contractManageApi/getInfoByCustomer")
public AjaxResult getInfoByCustomer(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType); public AjaxResult getInfoByCustomer(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType);
@ApiOperation("根据结算主体和费用科目获取合同信息")
@GetMapping(value = "/contractManageApi/getInfoByCustomerAndSecondSubjectCode")
public AjaxResult getInfoByCustomerAndSecondSubjectCode(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType,@RequestParam("firstSubjectCode") String firstSubjectCode,@RequestParam("topOrganizationId") Long topOrganizationId,@RequestParam("organizationId") Long organizationId);
/**
* 根据结算主体获取合同信息
*/
@GetMapping("/contractManageApi/getInfoByCustomer2")
public AjaxResult getInfoByCustomer2(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType,@RequestParam("topOrganizationId") Long topOrganizationId);
@GetMapping("/contractManageApi/getInfoByCustomerAndOrganizationId")
public AjaxResult getInfoByCustomerAndOrganizationId(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType,@RequestParam("topOrganizationId") Long topOrganizationId,@RequestParam("organizationId") Long organizationId);
@GetMapping("/contractManageApi/queryList") @GetMapping("/contractManageApi/queryList")
public AjaxResult queryList(); public AjaxResult queryList();
@GetMapping("/LeaseApi/wholeRentSynchronization") }
public AjaxResult wholeRentSynchronization();
/**
* 物料主数据导入:按组织与关键词匹配物料分类,返回体含物料分类的 code 字段,供写入 material_base_info.material_classify_code。
* 使用 basicApi 前缀,与 WMS 其他 Feign 调 system 的惯例一致(避免仅重启 WMS 时 system 上无 materialClassifyApi 新路由导致 404)。
*/
@GetMapping("/basicApi/matchMaterialClassifyForImport")
public AjaxResult matchForMaterialImport(@RequestParam("keyword") String keyword,
@RequestParam("organizationId") Long organizationId);
@ApiOperation("保存临时合同管理")
@PostMapping("/contractManageApi/feignSave")
public AjaxResult feignSave(@RequestBody ContractManageFeignDTO contractManageFeignDTO);
@ApiOperation("Feign保存合约信息规则维护")
@PostMapping("/contractManageParametersApi/feignSave")
public AjaxResult feignSaveContractParameters(@RequestBody ContractManageParametersFeign contractManageParametersFeign);
}
@@ -9,20 +9,15 @@ import com.mhd.common.core.domain.dto.UserDriverDTO;
import com.mhd.common.core.domain.entity.R; import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.todo.StatisticalMattersDo; import com.mhd.common.core.domain.todo.StatisticalMattersDo;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.system.api.domain.UserDTO; import com.mhd.system.api.domain.UserDTO;
import com.mhd.system.api.domain.UserShipperFeignDTO;
import com.mhd.system.api.domain.UserShipperQueryDTO;
import com.mhd.system.api.domain.UserUpdateDTO; import com.mhd.system.api.domain.UserUpdateDTO;
import com.mhd.system.api.factory.RemoteUserFeignFallbackFactory; import com.mhd.system.api.factory.RemoteUserFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration; import com.mhd.system.api.feign.FeignAutoConfiguration;
import com.mhd.system.api.model.LoginUser; import com.mhd.system.api.model.LoginUser;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -165,10 +160,6 @@ public interface UserServiceFeign {
@GetMapping("/userShipperApi/userShipperListAll") @GetMapping("/userShipperApi/userShipperListAll")
public AjaxResult<?> userShipperListAll(); public AjaxResult<?> userShipperListAll();
@ApiOperation("查询租户下全部托运人")
@GetMapping("/userShipperApi/userShipperListAllByOrg")
public AjaxResult<?> userShipperListAllByOrg(@RequestParam("orgCode") Long orgCode);
@ApiOperation("查询租户下全部承运人") @ApiOperation("查询租户下全部承运人")
@GetMapping("/userDriverApi/userDriverListAll") @GetMapping("/userDriverApi/userDriverListAll")
public AjaxResult<?> userDriverListAll(); public AjaxResult<?> userDriverListAll();
@@ -200,34 +191,4 @@ public interface UserServiceFeign {
@ApiOperation("根据用户ID查询货主信息") @ApiOperation("根据用户ID查询货主信息")
@GetMapping("/userShipperApi/getShipperByUserId/{userId}") @GetMapping("/userShipperApi/getShipperByUserId/{userId}")
public AjaxResult<?> getShipperByUserId(@PathVariable("userId") Long userId); public AjaxResult<?> getShipperByUserId(@PathVariable("userId") Long userId);
@ApiOperation("设置路线")
@PostMapping("/userApi/updateLineManagement")
public AjaxResult updateLineManagement(@RequestBody UserDTO userDTO);
@ApiOperation("商业合作伙伴-分页查询托运人列表")
@GetMapping("/userShipperApi/userShipperList")
public TableDataInfo userShipperList(@SpringQueryMap UserShipperQueryDTO userShipperQueryDTO);
@PostMapping("/userShipperApi/updatePushStatus")
public AjaxResult<?> updatePushStatus(@RequestParam(value = "shipperId") Long shipperId,
@RequestParam(value = "pushStatus", required = false) Integer pushStatus,
@RequestParam(value = "pushTime", required = false) String pushTime,
@RequestParam(value = "pushBy", required = false) Long pushBy,
@RequestParam(value = "pushByName", required = false) String pushByName,
@RequestParam(value = "organizationId") Long organizationId);
@PostMapping("/userShipperApi/getCustomerNcCodeBatch")
AjaxResult getCustomerNcCodeBatch(@RequestBody List<Long> shipperIdList);
@ApiOperation("查询赊销额度")
@PostMapping("/userShipperApi/querySaleCreditLimitFeign")
public AjaxResult querySaleCreditLimitFeign(@RequestBody UserShipperFeignDTO userShipperDTO);
@GetMapping("/userApi/getUserByUserAccount")
R<LoginUser> getUserByUserAccount(@RequestParam("userAccount") String account);
} }
@@ -17,7 +17,6 @@ import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.utils.sms.Result; import com.mhd.common.core.utils.sms.Result;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.domain.*; import com.mhd.system.api.domain.*;
import com.mhd.system.api.domain.TmsOrderAddDTO;
import com.mhd.system.api.feign.FeignAutoConfiguration; import com.mhd.system.api.feign.FeignAutoConfiguration;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
@@ -26,8 +25,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
// 目标地址由 nacos 配置项 feign.url.mhd-wlhy-service 指定,未配置时按服务名走服务发现 @FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.31:8014",configuration = FeignAutoConfiguration.class)
public interface WlhyServiceFeign { public interface WlhyServiceFeign {
/** /**
@@ -518,14 +516,6 @@ public interface WlhyServiceFeign {
@PostMapping(value = "/feign/outBoundSummary/getOrderListByReconciliation") @PostMapping(value = "/feign/outBoundSummary/getOrderListByReconciliation")
public R<List<TmsOrder>> getOrderListByReconciliation(@RequestBody ReconciliationDTO reconciliationDTO); public R<List<TmsOrder>> getOrderListByReconciliation(@RequestBody ReconciliationDTO reconciliationDTO);
@ApiOperation(value = "查询对账单对应的发票明细", notes = "查询对账单对应的发票明细")
@PostMapping(value = "/feign/outBoundSummary/selectMakeOutInvoiceListByReconciliation")
public R<List<TmsMakeOutInvoice>> selectMakeOutInvoiceListByReconciliation(@RequestBody ReconciliationDTO reconciliationDTO);
@ApiOperation(value = "查询对账单对应的发票明细子项", notes = "查询对账单对应的发票明细子项")
@PostMapping(value = "/feign/outBoundSummary/selectMakeOutInvoiceItemList")
public R<List<TmsMakeOutInvoiceItem>> selectMakeOutInvoiceItemList(@RequestBody TmsMakeOutInvoice tmsMakeOutInvoice);
@GetMapping(value = "/ntocc/tmsSettlementExchangeRate/queryById") @GetMapping(value = "/ntocc/tmsSettlementExchangeRate/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id); public Result<?> queryById(@RequestParam(name="id",required=true) String id);
@@ -539,20 +529,4 @@ public interface WlhyServiceFeign {
@GetMapping("/feign/order/cancelIssueDocuments") @GetMapping("/feign/order/cancelIssueDocuments")
public AjaxResult cancelIssueDocuments(@RequestParam(name="executeOrderId") String executeOrderId); public AjaxResult cancelIssueDocuments(@RequestParam(name="executeOrderId") String executeOrderId);
}
@GetMapping(value = "/ntocc/tmsSettlementExchangeRate/queryList")
public AjaxResult<?> queryList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pushStatus", required = false) String pushStatus,
@RequestParam(name="organizationId", required = false) String organizationId);
@ApiOperation("汇率-更新推送状态")
@PostMapping("/ntocc/tmsSettlementExchangeRate/updatePushStatus")
void updateExchangeRatePushStatus(@RequestParam("id") String id,
@RequestParam("pushStatus") Integer pushStatus,
@RequestParam(name="pushTime",required = false) String pushTime,
@RequestParam(name="pushBy",required = false) Long pushBy,
@RequestParam(name="pushByName",required = false) String pushByName,
@RequestParam("organizationId") String organizationId);
}
@@ -1,18 +1,15 @@
package com.mhd.system.api; package com.mhd.system.api;
import cn.hutool.json.JSONUtil;
import com.mhd.common.core.constant.ServiceNameConstants; import com.mhd.common.core.constant.ServiceNameConstants;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo; import com.mhd.system.api.domain.MaterialBaseInfoFeign;
import com.mhd.system.api.domain.*; import com.mhd.system.api.domain.MaterialInventoryDTO;
import com.mhd.system.api.factory.RemoteWmsFallbackFactory; import com.mhd.system.api.domain.NoticeOrderDTO;
import com.mhd.system.api.factory.RemoteTicketFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration; import com.mhd.system.api.feign.FeignAutoConfiguration;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -21,8 +18,7 @@ import java.util.Map;
* @description: TODO * @description: TODO
* @date 2024/5/10 8:58 * @date 2024/5/10 8:58
**/ **/
// 目标地址由 nacos 配置项 feign.url.mhd-wms-service 指定,未配置时按服务名走服务发现 @FeignClient(contextId = "remoteWmsServiceFeign", value = ServiceNameConstants.WMS_SERVICE, fallbackFactory = RemoteTicketFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE,url = "http://10.102.192.32:8016",fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface WmsServiceFeign { public interface WmsServiceFeign {
/** /**
@@ -68,112 +64,5 @@ public interface WmsServiceFeign {
* 查询物料库存列表不分页 * 查询物料库存列表不分页
*/ */
@GetMapping("/materialInventoryApi/listAll") @GetMapping("/materialInventoryApi/listAll")
public AjaxResult materialInventoryApiListAll(@SpringQueryMap MaterialInventoryDTO materialInventoryDTO); public AjaxResult materialInventoryApiListAll(MaterialInventoryDTO materialInventoryDTO);
}
/**
* oms下发单保存
*/
@ApiOperation("oms下发单保存")
@PostMapping(value = "/stockOutOrderApi/omsOutOrderAdd")
public void omsOutOrderAdd(@RequestBody StockOutOrder stockOutOrder);
/**
* oms下发单明细保存
*/
@ApiOperation("oms下发单明细保存")
@PostMapping(value = "/stockOutOrderApi/omsOutOrderAddDetail")
public void omsOutOrderAddDetail(@RequestBody List<OutMaterialDetail> outMaterialDetails);
/**
* oms下发单明细保存
*/
@ApiOperation("oms下发单明细保存")
@PostMapping(value = "/stockOutOrderApi/omsOutOrderAddDeliveryDetailsLink")
public void omsOutOrderAddDeliveryDetailsLink(@RequestBody List<DeliveryDetailsLink> deliveryDetailsLinks);
/**
* oms下发单保存(返回执行结果,失败时OMS据此回滚下发标记,避免"OMS已下发/WMS无数据"的阻断)
*/
@ApiOperation("oms下发单保存")
@PostMapping(value = "/stockInOrderApi/omsInOrderAdd")
public AjaxResult omsInOrderAdd(@RequestBody StockInOrder stockInOrder);
@ApiOperation("oms取消下发单保存")
@PostMapping(value = "/stockOutOrderApi/cancelExecutionOrder")
public AjaxResult omsCancelExecutionOrder(@RequestBody StockOutOrder stockOutOrder);
@ApiOperation("oms取消下发单自动分配")
@PostMapping(value = "/stockOutOrderApi/omsAutoAssign")
public void omsAutoAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO);
@ApiOperation("oms出库执行")
@PostMapping(value = "/stockOutOrderApi/execution")
public AjaxResult execution(@RequestBody com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO);
/**
* oms下发前库存校验:可用库存不足时返回错误,OMS据此在推送前拦截下发,
* 避免单据先落库、分配才失败而在WMS残留"已审核"状态的垃圾单
*/
@ApiOperation("oms下发前库存校验")
@PostMapping(value = "/stockOutOrderApi/checkOmsAssignInventory")
public AjaxResult checkOmsAssignInventory(@RequestBody List<OutMaterialDetail> outMaterialDetails);
/**
* oms下发单明细保存(返回执行结果,明细保存含自动审核链路,失败时OMS据此回滚)
*/
@ApiOperation("oms下发单明细保存")
@PostMapping(value = "/stockInOrderApi/omsInOrderAddDetail")
public AjaxResult omsInOrderAddDetail(@RequestBody List<InMaterialDetail> inMaterialDetails);
/**
* oms取消下发入库执行单:WMS侧一个事务内逻辑删除下发链路产生的全部数据
* (入库单/明细、收货单/明细、收货任务、收货作业单/明细、质检单),已开始收货则报错拦截
*/
@ApiOperation("oms取消下发入库单清理")
@PostMapping(value = "/stockInOrderApi/omsCancelInOrder")
public AjaxResult omsCancelInOrder(@RequestBody StockInOrder stockInOrder);
@ApiOperation("oms查询物料列表")
@GetMapping("/materialBaseInfoApi/queryList")
public TableDataInfo getMaterialBaseInfoList(MaterialInfoDTO materialInfoDTO);
@ApiOperation("oms物料列表推送-更新推送信息")
@PostMapping("/materialBaseInfoApi/updatePushStatus")
public AjaxResult<?> updateMaterialPushStatus(@RequestParam("materialBaseInfoId") Long materialBaseInfoId,
@RequestParam("pushStatus") Integer pushStatus,
@RequestParam(value = "pushTime",required = false) String pushTime,
@RequestParam(value = "pushBy",required = false) Long pushBy,
@RequestParam(value = "pushByName",required = false) String pushByName);
/**
* 根据物料ID列表批量查询物料信息
*/
@GetMapping("/materialBaseInfoApi/getBatchByIds")
public TableDataInfo getBatchByIds(@RequestParam("materialBaseInfoIds") List<Long> materialBaseInfoIds);
/**
* 生成拣货单
*/
@ApiOperation("生成拣货单")
@PostMapping("/stockOutOrderApi/genPickingOrderByOms")
public AjaxResult genPickingOrderByOms(@RequestBody com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO);
/**
* OMS批量签名:更新WMS入/出库单签名字段
*
* <p>OMS端勾选记录批量签名后,通过此Feign调用WMS的 /stockSignatureApi/batchSign 接口,
* 同步更新WMS stock_in_order / stock_out_order 表的签名状态、签名时间、签名图片、签名备注。</p>
*/
@ApiOperation("OMS批量签名-同步WMS入/出库单签名字段")
@PostMapping("/stockSignatureApi/batchSign")
public AjaxResult batchSignWms(@RequestBody SignatureBatchFeignDTO dto);
/**
* OMS查询WMS线路管理列表(按线路编码模糊查,OMS侧自行精确匹配),
* 出库导入时校验送貨線號/車次并回填线路名称
*/
@ApiOperation("OMS查询WMS线路管理列表")
@GetMapping("/lineManagementApi/listByApp")
public AjaxResult listLineManagement(@RequestParam("routeCode") String routeCode);
}
@@ -1,24 +0,0 @@
package com.mhd.system.api;
import com.mhd.common.core.constant.ServiceNameConstants;
import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.dto.YmsSysUserDTO;
import com.mhd.system.api.domain.YmsLoginUser;
import com.mhd.system.api.factory.RemoteBmsFeignFallbackFactory;
import com.mhd.system.api.factory.RemoteXxlJobFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
// 目标地址由 nacos 配置项 feign.url.xxl-job-service 指定,未配置时按服务名走服务发现
@FeignClient(contextId = "XxlJobService", value = ServiceNameConstants.XXL_JOB_SERVICE,url = "http://10.102.192.32:8020",fallbackFactory = RemoteXxlJobFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface XxlJobServiceFeign {
@GetMapping("/user/openFeignTest")
public R<Map<String, Object>> openFeignTest(@RequestParam("param") String string);
}
@@ -1,56 +0,0 @@
package com.mhd.system.api;
import com.mhd.common.core.constant.ServiceNameConstants;
import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.dto.YmsSysUserDTO;
import com.mhd.system.api.domain.YmsLoginUser;
import com.mhd.system.api.factory.RemoteBmsFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
// 目标地址由 nacos 配置项 feign.url.mhd-yms-service 指定,未配置时按服务名走服务发现
@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,url = "http://10.102.192.32:8018",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface YmsServiceFeign {
/**
* 获取YMS用户基本信息
* @param szwlUserId 数字物流用户ID
* @return YMS登录用户基本信息
*/
@GetMapping("/system/user/inner/getYmsUserInfo/{szwlUserId}")
R<YmsLoginUser> getYmsUserInfo(@PathVariable("szwlUserId") Long szwlUserId);
/**
* 获取用户详细信息
* @param userId 用户ID
* @return 用户信息
*/
@GetMapping("/system/user/inner/info/{userId}")
R<Long> innerGetInfo(@PathVariable("userId") Long userId);
/**
* 新增用户
* @param ymsSysUserDTO 用户信息
* @return 新增结果
*/
@PostMapping("/system/user/inner/add")
R<Object> innerAdd(@RequestBody YmsSysUserDTO ymsSysUserDTO);
/**
* 修改用户
* @param ymsSysUserDTO 用户信息
* @return 修改结果
*/
@PutMapping("/system/user/inner/edit")
R<Object> innerEdit(@RequestBody YmsSysUserDTO ymsSysUserDTO);
/**
* 删除用户
* @param userIds 用户ID数组
* @return 删除结果
*/
@DeleteMapping("/system/user/inner/remove/{userIds}")
R<Object> innerRemove(@PathVariable("userIds") Long[] userIds);
}
@@ -1,203 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 业务单据对象 business_document
*
* @author gen
* @date 2024-06-21
*/
@Data
public class BusinessDocumentFeign extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("业务单据记录id")
@TableId(type = IdType.AUTO)
private Long businessDocumentId;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("业务流水")
@Excel(name = "业务流水")
private String businessFlow;
@ApiModelProperty("状态(1-未生效,2-已生效,3-已计费,4-已驳回,5-已作废")
@Excel(name = "状态", readConverterExp = "状态(1-未生效,2-已生效,3-已计费,4-已驳回,5-已作废")
private Integer businessState;
@ApiModelProperty("来源模块")
@Excel(name = "来源模块")
private String belongModule;
@ApiModelProperty("来源模块code")
@Excel(name = "来源模块code")
private String belongModuleCode;
@ApiModelProperty("数据来源(1-系统生成,2-手工录入)")
@Excel(name = "数据来源", readConverterExp = "1=-系统生成,2-手工录入")
private Integer dataSources;
@ApiModelProperty("单据类型id")
@Excel(name = "单据类型id")
private Long documentTypeId;
@ApiModelProperty("单据类型code")
@Excel(name = "单据类型code")
private String documentTypeCode;
@ApiModelProperty("单据类型")
@Excel(name = "单据类型")
private String documentType;
@ApiModelProperty("原始业务单号")
@Excel(name = "原始业务单号")
private String originalBusinessNum;
@ApiModelProperty("项目编码")
@Excel(name = "项目编码")
private String projectCode;
@ApiModelProperty("项目名称")
@Excel(name = "项目名称")
private String projectName;
@ApiModelProperty("合同编号")
@Excel(name = "合同编号")
private String contractNumber;
@ApiModelProperty("合同名称")
@Excel(name = "合同名称")
private String contractName;
@ApiModelProperty("账单金额")
@Excel(name = "账单金额")
private BigDecimal billAmount;
@ApiModelProperty("预计费金额")
@Excel(name = "预计费金额")
private BigDecimal estimatedCost;
@ApiModelProperty("一级费用科目code")
@Excel(name = "一级费用科目code")
private String firstSubjectCode;
@ApiModelProperty("一级费用科目(结算项)")
@Excel(name = "一级费用科目")
private String firstSubjectName;
@ApiModelProperty("二级费用科目code")
@Excel(name = "二级费用科目code")
private String secondSubjectCode;
@ApiModelProperty("二级费用科目(结算项)")
@Excel(name = "二级费用科目")
private String secondSubjectName;
@ApiModelProperty("结算对象id")
@Excel(name = "结算对象id")
private Long settlementCustomersId;
@ApiModelProperty("结算对象code")
@Excel(name = "结算对象code")
private String settlementCustomersCode;
@ApiModelProperty("结算对象")
@Excel(name = "结算对象")
private String settlementEntity;
@ApiModelProperty("计费时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "计费时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date billingTime;
@ApiModelProperty("单据表单json数据")
@Excel(name = "单据表单json数据")
private String documentFormJson;
@ApiModelProperty("合同管理id")
@Excel(name = "合同管理id", readConverterExp = "合同管理id")
private Long contractManageId;
@ApiModelProperty("项目管理id")
@Excel(name = "项目管理id", readConverterExp = "项目管理id")
private Long projectManageId;
@ApiModelProperty("原始流水号")
@Excel(name = "原始流水号")
private String originalSerialNumber;
@ApiModelProperty("费用类型code(服务项)")
@Excel(name = "费用类型code(服务项)")
private String serviceItemsCode;
@ApiModelProperty("费用类型")
@Excel(name = "费用类型")
private String serviceItemsName;
@ApiModelProperty("费用类型id(服务项)")
@Excel(name = "费用类型id(服务项)")
private Long serviceItemsManageId;
@ApiModelProperty("单据备注")
@Excel(name = "单据备注")
private String remark;
@ApiModelProperty("审核备注")
@Excel(name = "审核备注")
private String reviewRemarks;
@ApiModelProperty("结算方式(1-现金,2-油卡)")
private Integer settlementWay;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员名称")
private String salesmanName;
@ApiModelProperty("税率")
private Double taxRate;
@ApiModelProperty("收款帐户")
private String paymentAccountId;
@ApiModelProperty("收款帐户名称")
private String paymentAccountName;
@ApiModelProperty("计费单位")
private String billingUnit;
@ApiModelProperty("计费单位2")
private String billingUnit2;
@ApiModelProperty("计费数量")
private BigDecimal billingNum;
@ApiModelProperty("计费单价")
private BigDecimal billingUnitPrice;
@ApiModelProperty("nc科目编码")
private String ncSubjectCode;
@ApiModelProperty("是否推送")
private Integer isPush;
@ApiModelProperty("仓库类型")
private String warehouseType;
}
@@ -1,110 +0,0 @@
package com.mhd.system.api.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 合同管理详情对象 contract_manage_detail
*
* @author gen
* @date 2024-06-07
*/
@Data
public class ContractManageDetailFeignDTO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("合同管理详情id")
private Long contractManageDetailId;
@ApiModelProperty("合同管理id")
@Excel(name = "合同管理id")
private Long contractManageId;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("结算科目类型(1-通用,2-临时)")
@Excel(name = "结算科目类型", readConverterExp = "1=-通用,2-临时")
private Integer subjectType;
@ApiModelProperty("一级费用科目code")
@Excel(name = "一级费用科目code")
private String firstSubjectCode;
@ApiModelProperty("一级费用科目")
@Excel(name = "一级费用科目")
private String firstSubjectName;
@ApiModelProperty("二级费用科目code")
@Excel(name = "二级费用科目code")
private String secondSubjectCode;
@ApiModelProperty("二级费用科目")
@Excel(name = "二级费用科目")
private String secondSubjectName;
@ApiModelProperty("计费策略id")
@Excel(name = "计费策略id")
private Long accountingStrategyId;
@ApiModelProperty("计费策略")
@Excel(name = "计费策略")
private String accountingStrategy;
@ApiModelProperty("计费策略编码")
@Excel(name = "计费策略编码")
private String accountingStrategyCode;
@ApiModelProperty("计费周期")
@Excel(name = "计费周期")
private String billingAttributes;
@ApiModelProperty("计费周期编码")
@Excel(name = "计费周期编码")
private String billingAttributesCode;
@ApiModelProperty("合同有效日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "合同有效日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date subjectEffectiveDate;
@ApiModelProperty("合同到期日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "合同到期日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date subjectExpirationDate;
@ApiModelProperty(name = "组织ID集合")
private List<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
@ApiModelProperty("单据类型code")
private String documentTypeCode;
@ApiModelProperty("单据类型")
private String documentType;
@ApiModelProperty("费用类别编码")
private String serviceItemsCode;
@ApiModelProperty("费用类别名称")
private String serviceItemsName;
}
@@ -1,228 +0,0 @@
package com.mhd.system.api.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 合同管理对象 contract_manage
*
* @author gen
* @date 2024-06-07
*/
@Data
public class ContractManageFeignDTO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("合同管理id")
private Long contractManageId;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("原始合同编号")
@Excel(name = "原始合同编号")
private String originalContractNumber;
@ApiModelProperty("合同编号")
@Excel(name = "合同编号")
private String contractNumber;
@ApiModelProperty("合同名称")
@Excel(name = "合同名称")
private String contractName;
@ApiModelProperty("是否通用合同(1-是,2-否)")
@Excel(name = "是否通用合同", readConverterExp = "1=-是,2-否")
private Integer commonContractFlag;
@ApiModelProperty("合同类型(1-仓储,2-运输,3-其他)")
@Excel(name = "合同类型", readConverterExp = "1=-仓储,2-运输,3=-其他")
private Integer contractType;
@ApiModelProperty("合同状态(1-未生效,2-使用中,3-已过期,4-已作废)")
@Excel(name = "合同状态", readConverterExp = "1=-未生效,2-使用中,3-已过期,4-已作废")
private Integer contractState;
@ApiModelProperty("签订单位")
@Excel(name = "签订单位")
private String signingUnit;
@ApiModelProperty("结算主体")
@Excel(name = "结算主体")
private String settlementCustomers;
@ApiModelProperty("结算主体id")
@Excel(name = "结算主体id")
private Long settlementCustomersId;
@ApiModelProperty("结算主体code")
@Excel(name = "结算主体code")
private String settlementCustomersCode;
@ApiModelProperty("我司身份(1-甲方,2-乙方)")
@Excel(name = "我司身份", readConverterExp = "1=-甲方,2-乙方")
private Integer ourIdentity;
@ApiModelProperty("账期(1-每月,2-双月,3-季度)")
@Excel(name = "账期", readConverterExp = "1=-每月,2-双月,3-季度")
private Integer accountingPeriod;
@ApiModelProperty("合同签订日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "合同签订日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date signingDate;
@ApiModelProperty("合同生效日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "合同生效日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date effectiveDate;
@ApiModelProperty("合同到期日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "合同到期日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date expirationDate;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("合同正本附件地址")
@Excel(name = "合同正本附件地址")
private String contractOriginalUrl;
@ApiModelProperty("廉政协议附件地址")
@Excel(name = "廉政协议附件地址")
private String integrityAgreementUrl;
@ApiModelProperty("安全协议附件地址")
@Excel(name = "安全协议附件地址")
private String securityProtocolUrl;
@ApiModelProperty("其他附件地址")
@Excel(name = "其他附件地址")
private String otherAttachmentsUrl;
@ApiModelProperty("合同正本附件原始文件名")
private String contractOriginalName;
@ApiModelProperty("廉政协议附件原始文件名")
private String integrityAgreementName;
@ApiModelProperty("安全协议附件原始文件名")
private String securityProtocolName;
@ApiModelProperty("其他附件原始文件名(多文件时与 otherAttachmentsUrl 同分隔符、同顺序)")
private String otherAttachmentsName;
@ApiModelProperty("我司签订人")
@Excel(name = "我司签订人")
private String ourSinged;
@ApiModelProperty("我司签订人联系方式")
@Excel(name = "我司签订人联系方式")
private String ourSingedPhone;
@ApiModelProperty("我司经办人")
@Excel(name = "我司经办人")
private String ourOperator;
@ApiModelProperty("我司经办人联系方式")
@Excel(name = "我司经办人联系方式")
private String ourOperatorPhone;
@ApiModelProperty("对方签订人")
@Excel(name = "对方签订人")
private String theySinged;
@ApiModelProperty("对方签订人联系方式")
@Excel(name = "对方签订人联系方式")
private String theySingedPhone;
@ApiModelProperty("对方经办人")
@Excel(name = "对方经办人")
private String theyOperator;
@ApiModelProperty("对方经办人联系方式")
@Excel(name = "对方经办人联系方式")
private String theyOperatorPhone;
@ApiModelProperty(name = "组织ID集合")
private List<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
@ApiModelProperty(name = "合同科目详情列表")
private List<ContractManageDetailFeignDTO> contractManageDetailDTOList;
@ApiModelProperty("合同管理ids")
private String contractManageIds;
@ApiModelProperty(name = "合同签订查询条件开始日期")
private String signingDateStart;
@ApiModelProperty(name = "合同签订查询条件结束日期")
private String signingDateEnd;
@ApiModelProperty(name = "合同生效查询条件开始日期")
private String effectiveDateStart;
@ApiModelProperty(name = "合同生效查询条件结束日期")
private String effectiveDateEnd;
@ApiModelProperty(name = "合同到期查询条件开始日期")
private String expirationDateStart;
@ApiModelProperty(name = "合同到期查询条件结束日期")
private String expirationDateEnd;
@ApiModelProperty(name = "结算主体基础数据id(可以是用户id也可以是企业id)")
private String settlementId;
@ApiModelProperty(name = "是否自动出账(1-是,2-否)")
private Integer automaticFlag;
@ApiModelProperty("出账日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date paymentDate;
@ApiModelProperty(name = "出账天数")
private Integer billDays;
@ApiModelProperty(name = "主体类型(1-货主,2-客户,3-承运商)")
private Integer principalType;
@ApiModelProperty("客户类型")
private String customerType;
@ApiModelProperty("客户类型编码")
private String customerTypeCode;
@ApiModelProperty(name = "是否包含运输费用(1-包含,2-包含)")
private Integer transportationCosts;
@ApiModelProperty("客户类型")
private String contractRentType;
@ApiModelProperty("客户类型编码")
private String contractRentTypeName;
@ApiModelProperty("仓库温层类型")
private String warehouseTempLayerType;
@ApiModelProperty("仓库温层类型编码")
private String warehouseTempLayerTypeName;
}
@@ -1,52 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 合约信息规则维护表
*
* @author gen
* @date 2024-06-07
*/
@Data
public class ContractManageParametersFeign extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("合同管理id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("合同管理id")
private Long contractManageId;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("合同编号")
@Excel(name = "合同编号")
private String contractNumber;
@ApiModelProperty("合同名称")
@Excel(name = "合同名称")
private String contractName;
@ApiModelProperty("合约信息规则维护")
@Excel(name = "合约信息规则维护表")
private String parametersJson;
}
@@ -1,50 +0,0 @@
package com.mhd.system.api.domain;
//package com.mhd.wms.domain.deliveryDetailsLink.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class DeliveryDetailsLink extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("编号")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("oms编号")
private Long omsId;
@ApiModelProperty(value = "业务单id")
private Long orderId;
@ApiModelProperty(value = "业务单号")
private String orderNumber;
@ApiModelProperty(value = "退货入库单号")
private String returnOrderNumber;
@ApiModelProperty(value = "类别")
private String category;
@ApiModelProperty(value = "发票编号")
private String invoiceNumber;
@ApiModelProperty(value = "客户编号")
private String customerNumber;
@ApiModelProperty(value = "配送名称")
private String deliveryName;
@ApiModelProperty(value = "")
private Integer box;
@ApiModelProperty(value = "")
private Integer bag;
@ApiModelProperty(value = "金额")
private BigDecimal amount;
}
@@ -1,108 +0,0 @@
package com.mhd.system.api.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 电子签名同步DTOWMS端通过Feign调用OMS
*/
@Data
public class ElectronicSignatureSyncDTO {
@ApiModelProperty("订单ID")
private Long orderId;
@ApiModelProperty("订单号")
private String orderNumber;
@ApiModelProperty("订单类型:IN-入库 OUT-出库")
private String orderType;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
private String warehouseName;
@ApiModelProperty("创建人")
private Long createBy;
@ApiModelProperty("创建人姓名")
private String createByName;
@ApiModelProperty("物料明细列表")
private List<MaterialDetailItem> materialDetailList;
@Data
public static class MaterialDetailItem {
@ApiModelProperty("物料基础信息ID")
private Long materialBaseInfoId;
@ApiModelProperty("物料编码")
private String materialCode;
@ApiModelProperty("物料名称")
private String materialName;
@ApiModelProperty("数量")
private BigDecimal quantity;
@ApiModelProperty("单位代码")
private String unitCode;
@ApiModelProperty("单位名称")
private String unitName;
@ApiModelProperty("批次号")
private String batchNumber;
@ApiModelProperty("LOT编号")
private String lotNumber;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
private String warehouseName;
@ApiModelProperty("库区ID")
private Long storageSectionId;
@ApiModelProperty("库区编码")
private String storageSectionCode;
@ApiModelProperty("库区名称")
private String storageSectionName;
@ApiModelProperty("库位ID")
private Long storageLocationId;
@ApiModelProperty("库位编码")
private String storageLocationCode;
@ApiModelProperty("库位名称")
private String storageLocationName;
@ApiModelProperty("业务唯一ID")
private Long uniqueId;
}
}
@@ -1,24 +0,0 @@
package com.mhd.system.api.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(description = "企业国别DTO")
public class ErpCountryDTO {
@ApiModelProperty("主键id")
private Long id;
@ApiModelProperty("ERP国别编码")
private String erpCountryCode;
@ApiModelProperty("ERP国别名称")
private String erpCountryName;
@ApiModelProperty("所属组织ID")
private Long organizationId;
}
@@ -1,22 +0,0 @@
package com.mhd.system.api.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(description = "企业单位DTO")
public class ErpEnterpriseUnitDTO {
@ApiModelProperty("企业单位id")
private Long id;
@ApiModelProperty("企业单位名称")
private String erpName;
@ApiModelProperty("企业单位编码")
private String erpCode;
@ApiModelProperty("组织ID")
private Long organizationId;
}
@@ -1,54 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class GwLogDTO {
@ApiModelProperty("日志id")
private Long logId;
@ApiModelProperty("类型")
private String type;
@ApiModelProperty("业务ID")
private Long businessId;
@ApiModelProperty("请求报文")
private String requestBody;
@ApiModelProperty("响应报文")
private String responseBody;
@ApiModelProperty("状态(1-初始,2-成功,3-失败)")
private Integer status;
@ApiModelProperty("错误信息")
private String errorMsg;
@ApiModelProperty("推送时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date sendTime;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("创建人")
private Long createBy;
@ApiModelProperty("创建时间")
private Date createTime;
}
@@ -1,64 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
public class GwLogW implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("日志id")
private Long logId;
@ApiModelProperty("类型")
private String type;
@ApiModelProperty("业务ID")
private Long businessId;
@ApiModelProperty("请求报文")
private String requestBody;
@ApiModelProperty("响应报文")
private String responseBody;
@ApiModelProperty("状态(1-初始,2-成功,3-失败)")
private Integer status;
@ApiModelProperty("错误信息")
private String errorMsg;
@ApiModelProperty("推送时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date sendTime;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("创建人")
private Long createBy;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("删除标记:1-正常,0-删除")
private Integer delFlag;
// @ApiModelProperty("推送人姓名")
// private String pushByName;
}
@@ -1,402 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 物料明细对象 material_detail
*
* @author gen
* @date 2024-05-21
*/
@Data
public class InMaterialDetail extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("订单物料明细id")
@TableId(type = IdType.AUTO)
private Long materialDetailId;
@ApiModelProperty("业务唯一id")
@JsonSerialize(using = ToStringSerializer.class)
private Long uniqueId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("入库单号")
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("物料基础信息id")
@Excel(name = "物料基础信息id")
private Long materialBaseInfoId;
@ApiModelProperty("物料编码")
@Excel(name = "物料编码")
private String materialCode;
@ApiModelProperty("物料名称")
@Excel(name = "物料名称")
private String materialName;
@ApiModelProperty("物料条形码")
@Excel(name = "物料条形码")
private String barCode;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("收货数量")
@Excel(name = "收货数量")
private BigDecimal receiptQuantity;
@ApiModelProperty("上架数量")
@Excel(name = "上架数量")
private BigDecimal shelvesQuantity;
@ApiModelProperty("作业数量(例如:收货数量 上架数量)")
@Excel(name = "作业数量(例如:收货数量 上架数量)")
private BigDecimal actualQuantity;
@ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)")
@Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)")
private Integer receiptStatus;
@ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)")
@Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)")
private Integer shelvesStatus;
@ApiModelProperty("包装规格id")
@Excel(name = "包装规格id")
private Long packId;
@ApiModelProperty("包装规格编码")
@Excel(name = "包装规格编码")
private String packCode;
@ApiModelProperty("包装规格名称")
@Excel(name = "包装规格名称")
private String packName;
@ApiModelProperty("包装详情id")
@Excel(name = "包装详情id")
private Long packDetailId;
@ApiModelProperty("单位代码:EA IP CS PL OT")
@Excel(name = "单位代码:EA IP CS PL OT")
private String unitCode;
@ApiModelProperty("单位名称")
@Excel(name = "单位名称")
private String unitName;
@ApiModelProperty("单位数量")
@Excel(name = "单位数量")
private BigDecimal unitNumber;
@ApiModelProperty("物料仓库控制信息id")
@Excel(name = "物料仓库控制信息id")
private Long materialWarehouseControlId;
@ApiModelProperty("是否序列号管理: 1-是 2-否")
@Excel(name = "是否序列号管理: 1-是 2-否")
private Integer serialNumberManage;
@ApiModelProperty("是否质检管理: 1-是 2-否")
@Excel(name = "是否质检管理: 1-是 2-否")
private Integer qualityInspectionManage;
@ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前")
@Excel(name = "质检阶段: 1-收货前 2-收货后上架前")
private Integer qualityInspectionStage;
@ApiModelProperty("质检规则: 1-全检 2-抽检 ")
@Excel(name = "质检规则: 1-全检 2-抽检 ")
private Integer qualityInspectionRule;
@ApiModelProperty("抽检比例")
@Excel(name = "抽检比例")
private BigDecimal qualityInspectionRatio;
@ApiModelProperty("质检项: 1-包装 2-纯度")
@Excel(name = "质检项: 1-包装 2-纯度")
private Integer qualityInspectionTerm;
@ApiModelProperty("质检结果: 1-正常 2-异常")
@Excel(name = "质检结果: 1-正常 2-异常")
private Integer qualityInspectionResults;
@ApiModelProperty("是否允许超收: 1-是 2-否")
@Excel(name = "是否允许超收: 1-是 2-否")
private Integer allowOvercharge;
@ApiModelProperty("超收比例")
@Excel(name = "超收比例")
private BigDecimal overchargeRatio;
@ApiModelProperty("批次号")
@Excel(name = "批次号")
private String batchNumber;
@ApiModelProperty("物料状态编码")
@Excel(name = "物料状态编码")
private String materialStatusCode;
@ApiModelProperty("物料状态名称")
@Excel(name = "物料状态名称")
private String materialStatusName;
@ApiModelProperty("分配规则id")
@Excel(name = "分配规则id")
private Long distributeRuleId;
@ApiModelProperty("分配规则编码")
@Excel(name = "分配规则编码")
private String distributeRuleCode;
@ApiModelProperty("分配规则名称")
@Excel(name = "分配规则名称")
private String distributeRuleName;
@ApiModelProperty("容器id")
@Excel(name = "容器id")
private Long containerId;
@ApiModelProperty("容器编码")
@Excel(name = "容器编码")
private String containerCode;
@ApiModelProperty("容器类型 数据字典")
@Excel(name = "容器类型 数据字典")
private String containerType;
@ApiModelProperty("容器类型名称 数据字典")
@Excel(name = "容器类型名称 数据字典")
private String containerTypeName;
@ApiModelProperty("上架仓库id")
private Long warehouseId;
@ApiModelProperty("上架仓库编码")
@Excel(name = "上架仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("上架库区id")
@Excel(name = "上架库区id")
private Long storageSectionId;
@ApiModelProperty("上架库区编码")
@Excel(name = "上架库区编码")
private String storageCode;
@ApiModelProperty("上架库区名称")
@Excel(name = "上架库区名称")
private String storageName;
@ApiModelProperty("上架库位id")
@Excel(name = "上架库位id")
private Long storageLocationId;
@ApiModelProperty("上架库位编码")
@Excel(name = "上架库位编码")
private String storageLocationCode;
@ApiModelProperty("上架库位名称")
@Excel(name = "上架库位名称")
private String storageLocationName;
@ApiModelProperty("层级深度,从一级开始递增")
private Integer level;
@ApiModelProperty("父级唯一Id")
private Long parentUniqueId;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
// ========== 报关相关明细字段 ==========
@ApiModelProperty("规格型号")
@Excel(name = "规格型号/ITEM")
private String specificationModel;
@ApiModelProperty("SKU码")
@Excel(name = "SKU码")
private String skuCode;
@ApiModelProperty("Invoice No.")
@Excel(name = "Invoice No.")
private String invoiceNo;
@ApiModelProperty("")
@Excel(name = "")
private BigDecimal liter;
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String dimensions;
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declarationUnit;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
private String batchRefNo;
@ApiModelProperty("Sheet Ref NO's")
@Excel(name = "Sheet Ref NO's")
private String sheetRefNo;
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String originCountry;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String boxPalletNo;
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private BigDecimal declaredQuantity;
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private BigDecimal boxCount;
@ApiModelProperty("件数")
@Excel(name = "件数")
private BigDecimal pieceCount;
@ApiModelProperty("入库数量(输入大于等于0的数字,可以为小数)")
@Excel(name = "入库数量")
private BigDecimal inboundQuantity;
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private BigDecimal totalNetWeight;
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private BigDecimal totalGrossWeight;
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private BigDecimal totalVolume;
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private BigDecimal totalArea;
@ApiModelProperty("总价")
@Excel(name = "总价")
private BigDecimal totalPrice;
@ApiModelProperty("合同收费")
@Excel(name = "合同收费")
private BigDecimal contractFee;
@ApiModelProperty("每月仓租")
@Excel(name = "每月仓租")
private BigDecimal monthlyWarehouseFee;
@ApiModelProperty("半月仓租")
@Excel(name = "半月仓租")
private BigDecimal halfMonthWhFee;
@ApiModelProperty("折扣(%)")
@Excel(name = "折扣(%)")
private BigDecimal discountRate;
@ApiModelProperty("单体积(CBM)")
@Excel(name = "单体积(CBM)")
private BigDecimal singleVolume;
@ApiModelProperty("单毛重(KG)")
@Excel(name = "单毛重(KG)")
private BigDecimal singleGrossWeight;
@ApiModelProperty("lot编号")
@Excel(name = "lot编号")
private String lotNo;
@ApiModelProperty("oms入库单详情id")
@Excel(name = "oms入库单详情id")
private String omsInMaterialDetail;
@ApiModelProperty(value = "饮用时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date drinkDate;
@ApiModelProperty("过期日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date expiryDate;
@ApiModelProperty("来货验收是否合格;1 合格,0 不合格")
@Excel(name = "来货验收是否合格;1 合格,0 不合格")
private String arrivalAcceptQualified;
@ApiModelProperty("包装是否破损;1 破损,0 完好")
@Excel(name = "包装是否破损;1 破损,0 完好")
private String packageDamaged;
@ApiModelProperty("是否解冻 / 水渍;1 是,0 否")
@Excel(name = "是否解冻 / 水渍;1 是,0 否")
private String isThawWaterstain;
@ApiModelProperty("问题货是否已通知客户;1 已通知,0 未通知")
@Excel(name = "问题货是否已通知客户;1 已通知,0 未通知")
private String notifyCustomerAbnormal;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
}
@@ -1,371 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 物料明细对象 material_detail
*
* @author gen
* @date 2024-05-21
*/
@Data
public class InMaterialDetailTZPD extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("订单物料明细id")
@TableId(type = IdType.AUTO)
private Long materialDetailId;
@ApiModelProperty("业务唯一id")
@JsonSerialize(using = ToStringSerializer.class)
private Long uniqueId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("入库单号")
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("物料基础信息id")
@Excel(name = "物料基础信息id")
private Long materialBaseInfoId;
@ApiModelProperty("物料编码")
@Excel(name = "物料编码")
private String materialCode;
@ApiModelProperty("物料名称")
@Excel(name = "物料名称")
private String materialName;
@ApiModelProperty("物料条形码")
@Excel(name = "物料条形码")
private String barCode;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("收货数量")
@Excel(name = "收货数量")
private BigDecimal receiptQuantity;
@ApiModelProperty("上架数量")
@Excel(name = "上架数量")
private BigDecimal shelvesQuantity;
@ApiModelProperty("作业数量(例如:收货数量 上架数量)")
@Excel(name = "作业数量(例如:收货数量 上架数量)")
private BigDecimal actualQuantity;
@ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)")
@Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)")
private Integer receiptStatus;
@ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)")
@Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)")
private Integer shelvesStatus;
@ApiModelProperty("包装规格id")
@Excel(name = "包装规格id")
private Long packId;
@ApiModelProperty("包装规格编码")
@Excel(name = "包装规格编码")
private String packCode;
@ApiModelProperty("包装规格名称")
@Excel(name = "包装规格名称")
private String packName;
@ApiModelProperty("包装详情id")
@Excel(name = "包装详情id")
private Long packDetailId;
@ApiModelProperty("单位代码:EA IP CS PL OT")
@Excel(name = "单位代码:EA IP CS PL OT")
private String unitCode;
@ApiModelProperty("单位名称")
@Excel(name = "单位名称")
private String unitName;
@ApiModelProperty("单位数量")
@Excel(name = "单位数量")
private BigDecimal unitNumber;
@ApiModelProperty("物料仓库控制信息id")
@Excel(name = "物料仓库控制信息id")
private Long materialWarehouseControlId;
@ApiModelProperty("是否序列号管理: 1-是 2-否")
@Excel(name = "是否序列号管理: 1-是 2-否")
private Integer serialNumberManage;
@ApiModelProperty("是否质检管理: 1-是 2-否")
@Excel(name = "是否质检管理: 1-是 2-否")
private Integer qualityInspectionManage;
@ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前")
@Excel(name = "质检阶段: 1-收货前 2-收货后上架前")
private Integer qualityInspectionStage;
@ApiModelProperty("质检规则: 1-全检 2-抽检 ")
@Excel(name = "质检规则: 1-全检 2-抽检 ")
private Integer qualityInspectionRule;
@ApiModelProperty("抽检比例")
@Excel(name = "抽检比例")
private BigDecimal qualityInspectionRatio;
@ApiModelProperty("质检项: 1-包装 2-纯度")
@Excel(name = "质检项: 1-包装 2-纯度")
private Integer qualityInspectionTerm;
@ApiModelProperty("质检结果: 1-正常 2-异常")
@Excel(name = "质检结果: 1-正常 2-异常")
private Integer qualityInspectionResults;
@ApiModelProperty("是否允许超收: 1-是 2-否")
@Excel(name = "是否允许超收: 1-是 2-否")
private Integer allowOvercharge;
@ApiModelProperty("超收比例")
@Excel(name = "超收比例")
private BigDecimal overchargeRatio;
@ApiModelProperty("批次号")
@Excel(name = "批次号")
private String batchNumber;
@ApiModelProperty("物料状态编码")
@Excel(name = "物料状态编码")
private String materialStatusCode;
@ApiModelProperty("物料状态名称")
@Excel(name = "物料状态名称")
private String materialStatusName;
@ApiModelProperty("分配规则id")
@Excel(name = "分配规则id")
private Long distributeRuleId;
@ApiModelProperty("分配规则编码")
@Excel(name = "分配规则编码")
private String distributeRuleCode;
@ApiModelProperty("分配规则名称")
@Excel(name = "分配规则名称")
private String distributeRuleName;
@ApiModelProperty("容器id")
@Excel(name = "容器id")
private Long containerId;
@ApiModelProperty("容器编码")
@Excel(name = "容器编码")
private String containerCode;
@ApiModelProperty("容器类型 数据字典")
@Excel(name = "容器类型 数据字典")
private String containerType;
@ApiModelProperty("容器类型名称 数据字典")
@Excel(name = "容器类型名称 数据字典")
private String containerTypeName;
@ApiModelProperty("上架仓库id")
private Long warehouseId;
@ApiModelProperty("上架仓库编码")
@Excel(name = "上架仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("上架库区id")
@Excel(name = "上架库区id")
private Long storageSectionId;
@ApiModelProperty("上架库区编码")
@Excel(name = "上架库区编码")
private String storageCode;
@ApiModelProperty("上架库区名称")
@Excel(name = "上架库区名称")
private String storageName;
@ApiModelProperty("上架库位id")
@Excel(name = "上架库位id")
private Long storageLocationId;
@ApiModelProperty("上架库位编码")
@Excel(name = "上架库位编码")
private String storageLocationCode;
@ApiModelProperty("上架库位名称")
@Excel(name = "上架库位名称")
private String storageLocationName;
@ApiModelProperty("层级深度,从一级开始递增")
private Integer level;
@ApiModelProperty("父级唯一Id")
private Long parentUniqueId;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
// ========== 报关相关明细字段 ==========
@ApiModelProperty("规格型号")
@Excel(name = "规格型号/ITEM")
private String specificationModel;
@ApiModelProperty("SKU码")
@Excel(name = "SKU码")
private String skuCode;
@ApiModelProperty("Invoice No.")
@Excel(name = "Invoice No.")
private String invoiceNo;
@ApiModelProperty("")
@Excel(name = "")
private BigDecimal liter;
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String dimensions;
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declarationUnit;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
private String batchRefNo;
@ApiModelProperty("Sheet Ref NO's")
@Excel(name = "Sheet Ref NO's")
private String sheetRefNo;
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String originCountry;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String boxPalletNo;
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private BigDecimal declaredQuantity;
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private BigDecimal boxCount;
@ApiModelProperty("件数")
@Excel(name = "件数")
private BigDecimal pieceCount;
@ApiModelProperty("入库数量(输入大于等于0的数字,可以为小数)")
@Excel(name = "入库数量")
private BigDecimal inboundQuantity;
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private BigDecimal totalNetWeight;
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private BigDecimal totalGrossWeight;
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private BigDecimal totalVolume;
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private BigDecimal totalArea;
@ApiModelProperty("总价")
@Excel(name = "总价")
private BigDecimal totalPrice;
@ApiModelProperty("合同收费")
@Excel(name = "合同收费")
private BigDecimal contractFee;
@ApiModelProperty("每月仓租")
@Excel(name = "每月仓租")
private BigDecimal monthlyWarehouseFee;
@ApiModelProperty("半月仓租")
@Excel(name = "半月仓租")
private BigDecimal halfMonthWhFee;
@ApiModelProperty("折扣(%)")
@Excel(name = "折扣(%)")
private BigDecimal discountRate;
@ApiModelProperty("单体积(CBM)")
@Excel(name = "单体积(CBM)")
private BigDecimal singleVolume;
@ApiModelProperty("单毛重(KG)")
@Excel(name = "单毛重(KG)")
private BigDecimal singleGrossWeight;
@ApiModelProperty("lot编号")
@Excel(name = "lot编号")
private String lotNo;
@ApiModelProperty("oms入库单详情id")
@Excel(name = "oms入库单详情id")
private String omsInMaterialDetail;
}
@@ -1,202 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 库存调整记录对象 inventory_adjustment_record
*
* @author gen
* @date 2024-07-17
*/
@Data
public class InventoryAdjustmentRecord extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("库存调整记录id")
@TableId(type = IdType.AUTO)
private Long inventoryAdjustmentId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("物料库存id")
private Long materialInventoryId;
@ApiModelProperty("物料基础信息id")
@Excel(name = "物料基础信息id")
private Long materialBaseInfoId;
@ApiModelProperty("物料编码")
@Excel(name = "物料编码")
private String materialCode;
@ApiModelProperty("物料名称")
@Excel(name = "物料名称")
private String materialName;
@ApiModelProperty("物料条形码")
@Excel(name = "物料条形码")
private String barCode;
@ApiModelProperty("货主id")
@Excel(name = "货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
private String shipperName;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("库区id")
@Excel(name = "库区id")
private Long storageSectionId;
@ApiModelProperty("库区编码")
@Excel(name = "库区编码")
private String storageCode;
@ApiModelProperty("库区名称")
@Excel(name = "库区名称")
private String storageName;
@ApiModelProperty("库位id")
@Excel(name = "库位id")
private Long storageLocationId;
@ApiModelProperty("库位编码")
@Excel(name = "库位编码")
private String storageLocationCode;
@ApiModelProperty("库位名称")
@Excel(name = "库位名称")
private String storageLocationName;
@ApiModelProperty("调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结")
@Excel(name = "调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结")
private Long adjustType;
@ApiModelProperty("调整方向:0:无状态 1:增库存 2:减库存")
@Excel(name = "调整方向:0:无状态 1:增库存 2:减库存")
private Long adjustDirection;
@ApiModelProperty("调整前状态编码")
@Excel(name = "调整前状态编码")
private String adjustBeforeStatusCode;
@ApiModelProperty("调整前状态名称")
@Excel(name = "调整前状态名称")
private String adjustBeforeStatusName;
@ApiModelProperty("调整后状态编码")
@Excel(name = "调整后状态编码")
private String adjustAfterStatusCode;
@ApiModelProperty("调整后状态名称")
@Excel(name = "调整后状态名称")
private String adjustAfterStatusName;
@ApiModelProperty("调整前库存数量")
@Excel(name = "调整前库存数量")
private BigDecimal inventoryBeforeQuantity;
@ApiModelProperty("调整前可用数量")
@Excel(name = "调整前可用数量")
private BigDecimal allocationBeforeQuantity;
@ApiModelProperty("调整前冻结数量")
@Excel(name = "调整前冻结数量")
private BigDecimal freezeBeforeQuantity;
@ApiModelProperty("调整后库存数量")
@Excel(name = "调整后库存数量")
private BigDecimal inventoryAfterQuantity;
@ApiModelProperty("调整后可用数量")
@Excel(name = "调整后可用数量")
private BigDecimal allocationAfterQuantity;
@ApiModelProperty("调整后冻结数量")
@Excel(name = "调整后冻结数量")
private BigDecimal freezeAfterQuantity;
@ApiModelProperty("调整动作")
@Excel(name = "调整动作")
private String adjustAction;
@ApiModelProperty("关联单号")
@Excel(name = "关联单号")
private String relateNo;
@ApiModelProperty("调整前净重(KG)")
@Excel(name = "调整前净重(KG)")
private BigDecimal netWeight;
@ApiModelProperty("调整前毛重(KG)")
@Excel(name = "调整前毛重(KG)")
private BigDecimal grossWeight;
@ApiModelProperty("调整前体积")
@Excel(name = "调整前体积")
private BigDecimal volume;
@ApiModelProperty("调整前面积")
@Excel(name = "调整前面积")
private BigDecimal area;
@ApiModelProperty("调整后净重(KG)")
@Excel(name = "调整后净重(KG)")
private BigDecimal adjustedNetWeight;
@ApiModelProperty("调整后毛重(KG)")
@Excel(name = "调整后毛重(KG)")
private BigDecimal adjustedGrossWeight;
@ApiModelProperty("调整后体积")
@Excel(name = "调整后体积")
private BigDecimal adjustedVolume;
@ApiModelProperty("调整后面积")
@Excel(name = "调整后面积")
private BigDecimal adjustedArea;
@ApiModelProperty("入库单号")
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("LOT编号")
@Excel(name = "LOT编号")
private String lotNumber;
@ApiModelProperty("批次号")
@Excel(name = "批次号")
private String batchNumber;
}
@@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
@@ -67,10 +66,6 @@ public class MaterialBarCodeFeign extends BaseVOEntity{
@Excel(name = "名称") @Excel(name = "名称")
private String name; private String name;
@ApiModelProperty("数量")
@Excel(name = "数量")
private BigDecimal number;
@ApiModelProperty("备注") @ApiModelProperty("备注")
@Excel(name = "备注") @Excel(name = "备注")
private String remark; private String remark;
@@ -202,19 +202,6 @@ public class MaterialBaseInfoFeign extends BaseVOEntity{
@ApiModelProperty("法定第二单位") @ApiModelProperty("法定第二单位")
private String statutorySecondUnit; private String statutorySecondUnit;
@ApiModelProperty("是否抄码: 1-是 2-否")
@Excel(name = "是否抄码: 1-是 2-否")
private Integer copyCode;
@ApiModelProperty("货物类型:0-物料 1-半成品 2-成品")
@Excel(name = "货物类型:0-物料 1-半成品 2-成品")
private Integer goodsType;
@ApiModelProperty("毛重(kg")
@Excel(name = "毛重(kg")
private BigDecimal grossWeight;
/** /**
* 规格型号 * 规格型号
*/ */
@@ -224,46 +211,5 @@ public class MaterialBaseInfoFeign extends BaseVOEntity{
@ApiModelProperty("币制") @ApiModelProperty("币制")
private String currency; private String currency;
}
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
private String shipperCode;
@ApiModelProperty("复合条件查询 物料名称 物料编码 物料条码")
private String compoundOrQuery;
@ApiModelProperty("批次ID")
private Long batchId;
@ApiModelProperty("保额")
@Excel(name = "保额")
private BigDecimal insureAmount;
@ApiModelProperty(name = "收费标准")
private BigDecimal chargeStandard;
@ApiModelProperty(name = "单位")
private String unit;
@ApiModelProperty(name = "组织(多个用,分开)")
private String orgId;
@ApiModelProperty(name = "是否正常物料: 0-是 1-否")
private Integer isNormalMaterial;
@ApiModelProperty("每月仓租")
@Excel(name = "每月仓租")
private BigDecimal monthlyWarehouseRent;
@ApiModelProperty("半月仓租")
@Excel(name = "半月仓租")
private BigDecimal halfMonthWarehouseRent;
@ApiModelProperty("每月仓租单位")
@Excel(name = "每月仓租单位")
private String monthlyWarehouseRentUnit;
@ApiModelProperty("半月仓租单位")
@Excel(name = "半月仓租单位")
private String halfMonthWarehouseRentUnit;
}
@@ -1,65 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.handler.ListTypeHandler;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @author ZhouGY
* @title MaterialBaseDO
* @description: TODO
* @date 2024/7/5 10:59
**/
@EqualsAndHashCode(callSuper = true)
@Data
public class MaterialBasePO extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("货主id")
@Excel(name = "货主id")
private Long shipperId;
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
private String shipperCode;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
private String shipperName;
@ApiModelProperty("物料编码")
@Excel(name = "物料编码")
private String materialCode;
@ApiModelProperty("物料名称")
@Excel(name = "物料名称")
private String materialName;
@ApiModelProperty("物料条形码")
@Excel(name = "物料条形码")
private String barCode;
@ApiModelProperty("物料分类编码")
@Excel(name = "物料分类编码")
@TableField(typeHandler = ListTypeHandler.class)
private List<String> materialClassifyCode;
@ApiModelProperty("物料分类名称")
@Excel(name = "物料分类名称")
@TableField(typeHandler = ListTypeHandler.class)
private List<String> materialClassifyName;
@ApiModelProperty("物料种类编码 数据字典")
@Excel(name = "物料种类编码 数据字典")
private String materialType;
@ApiModelProperty("物料种类名称 数据字典")
@Excel(name = "物料种类名称 数据字典")
private String materialTypeName;
}
@@ -82,12 +82,12 @@ public class MaterialCommonFeign extends BaseVOEntity{
private String dangerLevelName; private String dangerLevelName;
@ApiModelProperty("生产日期") @ApiModelProperty("生产日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date productionTime; private Date productionTime;
@ApiModelProperty("失效日期") @ApiModelProperty("失效日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date expirationTime; private Date expirationTime;
@@ -101,4 +101,4 @@ public class MaterialCommonFeign extends BaseVOEntity{
@ApiModelProperty(name = "权限菜单ID") @ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId; private Long permissionMenuId;
} }
@@ -1,57 +0,0 @@
package com.mhd.system.api.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(description = "物料信息查询DTO")
public class MaterialInfoDTO {
@ApiModelProperty("物料id")
private Long materialBaseInfoId;
@ApiModelProperty("物料id")
private String materialCode;
@ApiModelProperty("物料名称")
private String materialName;
@ApiModelProperty("货物类型 0-料件 1-半成品 2-成品")
private Integer goodsType;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("创建时间起")
private String createTimeStart;
@ApiModelProperty("创建时间止")
private String createTimeEnd;
@ApiModelProperty("更新时间起")
private String updateTimeStart;
@ApiModelProperty("更新时间止")
private String updateTimeEnd;
@ApiModelProperty("推送状态")
private Integer pushStatus;
@ApiModelProperty("推送时间起")
private String pushTimeStart;
@ApiModelProperty("推送时间止")
private String pushTimeEnd;
@ApiModelProperty(value = "页码")
private Integer pageNum = 1;
@ApiModelProperty(value = "每页数量")
private Integer pageSize = 10;
}
@@ -1,91 +0,0 @@
package com.mhd.system.api.domain;
import com.mhd.common.core.web.domain.BaseVOEntity;
import com.mhd.system.api.model.LoginUser;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 物料库存对象 material_inventory
*
* @author gen
* @date 2024-05-29
*/
@Data
public class MaterialInventoryOmsParamDO extends BaseVOEntity {
private static final long serialVersionUID = 1L;
//库存id
private Long materialInventoryId;
//物料基础信息id
private Long materialBaseInfoId;
//物料明细ID
private Long materialDetailId;
//仓库信息参数
private Long organizationId;
private String organizationName;
private Long topOrganizationId;
//仓库ID
private Long warehouseId;
//仓库编码
private String warehouseCode;
//仓库名称
private String warehouseName;
//存储区ID
private Long storageSectionId;
//存储区编码
private String storageCode;
//存储区名称
private String storageName;
//存储位置ID
private Long storageLocationId;
//存储位置编码
private String storageLocationCode;
//存储位置名称
private String storageLocationName;
//调整数量
private BigDecimal quantity;
//净重
private BigDecimal netWeight;
//毛重
private BigDecimal grossWeight;
//体积
private BigDecimal volume;
//面积
private BigDecimal area;
//类型(1:上架2:分配3:取消分配4:出库交接5:移位6:库存调整7:库存冻结)
private String type;
private String barCode;
private String inOrderNumber;
private String lotNumber;
private String batchNumber;
private String isNew;
/** 业务关联单号(出库单号、交接单对应单号等),用于库存调整记录 relate_no;可与入库单号区分 */
private String relateNo;
private String kctzType;
private LoginUser loginUser;
private String batchNo;
//生产日期
private Date productionDate;
//过期日期
private Date expiryDate;
//进货日期
private Date purchaseDate;
private String executioOrderNumber;
}
@@ -1,217 +0,0 @@
package com.mhd.system.api.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 物料库存对象 material_inventory
*
* @author gen
* @date 2024-05-29
*/
@Data
@ApiModel(value = "物料库存对象", description = "物料库存响应对象")
public class MaterialInventoryPO extends MaterialBasePO {
private static final long serialVersionUID = 1L;
@ApiModelProperty("物料库存id")
private Long materialInventoryId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("物料基础信息id")
@Excel(name = "物料基础信息id")
private Long materialBaseInfoId;
@ApiModelProperty("上架单物料明细id")
@Excel(name = "上架单物料明细id")
private Long materialDetailId;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("库区id")
@Excel(name = "库区id")
private Long storageSectionId;
@ApiModelProperty("库区编码")
@Excel(name = "库区编码")
private String storageCode;
@ApiModelProperty("库区名称")
@Excel(name = "库区名称")
private String storageName;
@ApiModelProperty("库位id")
@Excel(name = "库位id")
private Long storageLocationId;
@ApiModelProperty("库位编码")
@Excel(name = "库位编码")
private String storageLocationCode;
@ApiModelProperty("库位名称")
@Excel(name = "库位名称")
private String storageLocationName;
@ApiModelProperty("批次号")
@Excel(name = "批次号")
private String batchNumber;
@ApiModelProperty("物料状态编码")
@Excel(name = "物料状态编码")
private String materialStatusCode;
@ApiModelProperty("物料状态名称")
@Excel(name = "物料状态名称")
private String materialStatusName;
@ApiModelProperty("容器id")
@Excel(name = "容器id")
private Long containerId;
@ApiModelProperty("容器编码")
@Excel(name = "容器编码")
private String containerCode;
@ApiModelProperty("容器类型 数据字典")
@Excel(name = "容器类型 数据字典")
private String containerType;
@ApiModelProperty("容器类型名称 数据字典")
@Excel(name = "容器类型名称 数据字典")
private String containerTypeName;
@ApiModelProperty("库存数量")
@Excel(name = "库存数量")
private BigDecimal inventoryQuantity;
@ApiModelProperty("可用数量")
@Excel(name = "可用数量")
private BigDecimal allocationQuantity;
@ApiModelProperty("冻结数量")
@Excel(name = "冻结数量")
private BigDecimal freezeQuantity;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("盘点是否可用:0-禁用 1-可用")
@Excel(name = "盘点是否可用:0-禁用 1-可用")
private Integer isAble;
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("净重(KG)")
@Excel(name = "净重(KG)")
private BigDecimal netWeight;
@ApiModelProperty("毛重(KG)")
@Excel(name = "毛重(KG)")
private BigDecimal grossWeight;
@ApiModelProperty("体积")
@Excel(name = "体积")
private BigDecimal volume;
@ApiModelProperty("面积")
@Excel(name = "面积")
private BigDecimal area;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
private String batchRefNo;
@ApiModelProperty("Sheet Ref NO's")
@Excel(name = "Sheet Ref NO's")
private String sheetRefNo;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String boxPalletNo;
@ApiModelProperty("扩展字段1")
@Excel(name = "扩展字段1")
private String extAttr1;
@ApiModelProperty("扩展字段2")
@Excel(name = "扩展字段2")
private String extAttr2;
@ApiModelProperty("生产日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date productionDate;
@ApiModelProperty("过期日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "过期日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expiryDate;
@ApiModelProperty("存货日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "存货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date inventoryDate;
@ApiModelProperty("ExtAttr3")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "ExtAttr3", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date extAttr3;
@ApiModelProperty("ExtAttr4")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "ExtAttr4", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date extAttr4;
@ApiModelProperty("物料更多属性列表(批次属性)")
private List<MaterialMoreDetailPO> materialMoreDetailList;
@ApiModelProperty("包装名")
@Excel(name = "包装名")
private String packName;
@ApiModelProperty("单位名")
@Excel(name = "单位名")
private String unitName;
}
@@ -1,79 +0,0 @@
package com.mhd.system.api.domain;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 物料更多属性明细对象 material_more_detail
*
* @author gen
* @date 2024-05-21
*/
@Data
@ApiModel(value = "物料更多属性明细对象", description = "物料更多属性明细响应对象")
public class MaterialMoreDetailPO extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("物料更多属性明细id")
private Long materialMoreDetailId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("来源单号")
@Excel(name = "来源单号")
private String orderNumber;
@ApiModelProperty("订单物料明细业务唯一id")
@Excel(name = "订单物料明细业务唯一id")
private Long materialDetailUniqueId;
@ApiModelProperty("批次id")
@Excel(name = "批次id")
private Long batchId;
@ApiModelProperty("批次详情id")
@Excel(name = "批次详情id")
private Long batchDetailId;
@ApiModelProperty("批次标签")
@Excel(name = "批次标签")
private String batchLabels;
@ApiModelProperty("输入控制: 1-必填 2-可选")
@Excel(name = "输入控制: 1-必填 2-可选")
private String inputControl;
@ApiModelProperty("属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本")
@Excel(name = "属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本")
private String attributeFormat;
@ApiModelProperty("属性选项")
@Excel(name = "属性选项")
private String attributeOption;
@ApiModelProperty("属性值")
@Excel(name = "属性值")
private String attributeValue;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
}
@@ -1,496 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 物料明细对象 material_detail
*
* @author gen
* @date 2024-05-21
*/
@Data
public class OutMaterialDetail extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("订单物料明细id")
@TableId(type = IdType.AUTO)
private Long materialDetailId;
@ApiModelProperty("业务唯一id")
@JsonSerialize(using = ToStringSerializer.class)
private Long uniqueId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("出库单号")
@Excel(name = "出库单号")
private String outOrderNumber;
@ApiModelProperty("物料基础信息id")
@Excel(name = "物料基础信息id")
private Long materialBaseInfoId;
@ApiModelProperty("物料编码")
@Excel(name = "物料编码")
private String materialCode;
@ApiModelProperty("物料名称")
@Excel(name = "物料名称")
private String materialName;
@ApiModelProperty("物料条形码")
@Excel(name = "物料条形码")
private String barCode;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("已分配数量")
@Excel(name = "已分配数量")
private BigDecimal alreadyAllocationQuantity;
@ApiModelProperty("本次分配数量")
@Excel(name = "本次分配数量")
@TableField(exist = false)
private BigDecimal nowAllocationQuantity;
@ApiModelProperty("分配数量")
@Excel(name = "分配数量")
private BigDecimal allocationQuantity;
@ApiModelProperty("拣货数量")
@Excel(name = "拣货数量")
private BigDecimal pickingQuantity;
@ApiModelProperty("复核数量")
@Excel(name = "复核数量")
private BigDecimal checkQuantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@ApiModelProperty("体积 单位:立方米")
@Excel(name = "体积 单位:立方米")
private BigDecimal volumeLimit;
@ApiModelProperty("包装规格id")
@Excel(name = "包装规格id")
private Long packId;
@ApiModelProperty("包装规格编码")
@Excel(name = "包装规格编码")
private String packCode;
@ApiModelProperty("包装规格名称")
@Excel(name = "包装规格名称")
private String packName;
@ApiModelProperty("包装详情id")
@Excel(name = "包装详情id")
private Long packDetailId;
@ApiModelProperty("单位代码:EA IP CS PL OT")
@Excel(name = "单位代码:EA IP CS PL OT")
private String unitCode;
@ApiModelProperty("单位名称")
@Excel(name = "单位名称")
private String unitName;
@ApiModelProperty("单位数量")
@Excel(name = "单位数量")
private BigDecimal unitNumber;
@ApiModelProperty("物料仓库控制信息id")
@Excel(name = "物料仓库控制信息id")
private Long materialWarehouseControlId;
@ApiModelProperty("是否序列号管理: 1-是 2-否")
@Excel(name = "是否序列号管理: 1-是 2-否")
private Integer serialNumberManage;
@ApiModelProperty("物料库存id")
@Excel(name = "物料库存id")
private Long materialInventoryId;
@ApiModelProperty("批次号")
@Excel(name = "批次号")
private String batchNumber;
@ApiModelProperty("物料状态编码")
@Excel(name = "物料状态编码")
private String materialStatusCode;
@ApiModelProperty("物料状态名称")
@Excel(name = "物料状态名称")
private String materialStatusName;
@ApiModelProperty("容器id")
@Excel(name = "容器id")
private Long containerId;
@ApiModelProperty("容器编码")
@Excel(name = "容器编码")
private String containerCode;
@ApiModelProperty("容器类型 数据字典")
@Excel(name = "容器类型 数据字典")
private String containerType;
@ApiModelProperty("容器类型名称 数据字典")
@Excel(name = "容器类型名称 数据字典")
private String containerTypeName;
@ApiModelProperty("分配仓库id")
private Long warehouseId;
@ApiModelProperty("分配仓库编码")
@Excel(name = "分配仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("分配库区id")
@Excel(name = "分配库区id")
private Long storageSectionId;
@ApiModelProperty("分配库区编码")
@Excel(name = "分配库区编码")
private String storageCode;
@ApiModelProperty("分配库区名称")
@Excel(name = "分配库区名称")
private String storageName;
@ApiModelProperty("分配库位id")
@Excel(name = "分配库位id")
private Long storageLocationId;
@ApiModelProperty("分配库位编码")
@Excel(name = "分配库位编码")
private String storageLocationCode;
@ApiModelProperty("分配库位名称")
@Excel(name = "分配库位名称")
private String storageLocationName;
@ApiModelProperty("层级深度,从一级开始递增")
private Integer level;
@ApiModelProperty("父级唯一Id")
private Long parentUniqueId;
@ApiModelProperty("是否允许修改: 1-是 2-否 分配后 不再支持修改")
@Excel(name = "是否允许修改: 1-是 2-否")
private Integer allowModify;
@ApiModelProperty("是否生成拣货单: 1-是 2-否")
@Excel(name = "是否生成拣货单: 1-是 2-否")
private Integer genPickingOrder;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
@Excel(name = "商品名称")
private String commodityName;
/**
* 商品编码
*/
@ApiModelProperty("商品编码")
@Excel(name = "商品编码")
private String commodityNo;
/**
* 料号
*/
@ApiModelProperty("料号")
@Excel(name = "料号")
private String materialNo;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
/**
* 商品SKU码
*/
@ApiModelProperty("商品SKU码")
@Excel(name = "商品SKU码")
private String skucode;
/**
* Invoice No
*/
@ApiModelProperty("Invoice No")
@Excel(name = "Invoice No")
private String invoiceNo;
/**
* 升
*/
@ApiModelProperty("")
@Excel(name = "")
private String liter;
/**
* 尺寸
*/
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String size;
/**
* 申报单位
*/
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declareUnit;
/**
* Batch Ref NOs
*/
@ApiModelProperty("Batch Ref NOs")
@Excel(name = "Batch Ref NOs")
private String batchRefNo;
/**
* Sheet Ref NOs
*/
@ApiModelProperty("Sheet Ref NOs")
@Excel(name = "Sheet Ref NOs")
private String sheetRefNo;
/**
* 原产国
*/
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
/**
* 箱号/卡板号
*/
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String boxPalletNo;
/**
* 币制
*/
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
/**
* 申报数量
*/
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private BigDecimal declareQuantity;
/**
* 箱数
*/
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private BigDecimal caseCount;
/**
* 件数
*/
@ApiModelProperty("件数")
@Excel(name = "件数")
private BigDecimal pieceCount;
/**
* 出库数量
*/
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outboundQuantity;
/**
* 总净重(KG)
*/
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private BigDecimal totalNetWeight;
/**
* 总毛重(KG)
*/
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private BigDecimal totalGrossWeight;
/**
* 总体积(CBM)
*/
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private BigDecimal totalVolume;
/**
* 总面积(SQM)
*/
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private BigDecimal totalArea;
/**
* 总价
*/
@ApiModelProperty("总价")
@Excel(name = "总价")
private BigDecimal totalAmount;
/**
* 单位
*/
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("扩展属性1")
@Excel(name = "扩展属性1")
@TableField("ext_attr_1")
private String extAttr1;
@ApiModelProperty("扩展属性2")
@Excel(name = "扩展属性2")
@TableField("ext_attr_2")
private String extAttr2;
@ApiModelProperty("生产日期")
@Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date productionDate;
@ApiModelProperty("过期日期")
@Excel(name = "过期日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expiryDate;
@ApiModelProperty("存货日期")
@Excel(name = "存货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date inventoryDate;
@ApiModelProperty("扩展属性3")
@Excel(name = "扩展属性3", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField("ext_attr_3")
private Date extAttr3;
@ApiModelProperty("扩展属性4")
@Excel(name = "扩展属性4", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField("ext_attr_4")
private Date extAttr4;
/**
* 库存数量(仅用于前端展示,从material_inventory表中带出)
*/
@ApiModelProperty("分配时库存数量")
private BigDecimal inventoryQuantity;
@TableField(exist = false)
private BigDecimal actualQuantity;
@ApiModelProperty("复核总净重(KG)")
@Excel(name = "复核总净重(KG)")
private BigDecimal checkNetWeight;
@ApiModelProperty("复核总毛重(KG)")
@Excel(name = "复核总毛重(KG)")
private BigDecimal checkGrossWeight;
@ApiModelProperty("复核总体积(CBM)")
@Excel(name = "复核总体积(CBM)")
private BigDecimal checkVolume;
@ApiModelProperty("复核总面积(SQM)")
@Excel(name = "复核总面积(SQM)")
private BigDecimal checkArea;
@ApiModelProperty("是否已分配")
@Excel(name = "是否已分配")
private String isAllocated;
@ApiModelProperty("合同收费")
@Excel(name = "合同收费")
private BigDecimal contractFee;
@ApiModelProperty("每月仓租")
@Excel(name = "每月仓租")
private BigDecimal monthlyWarehouseFee;
@ApiModelProperty("半月仓租")
@Excel(name = "半月仓租")
private BigDecimal halfMonthWhFee;
@ApiModelProperty("折扣(%)")
@Excel(name = "折扣(%)")
private BigDecimal discountRate;
@ApiModelProperty("单体积(CBM)")
@Excel(name = "单体积(CBM)")
private BigDecimal singleVolume;
@ApiModelProperty("单毛重(KG)")
@Excel(name = "单毛重(KG)")
private BigDecimal singleGrossWeight;
@ApiModelProperty("lot编号")
@Excel(name = "lot编号")
private String lotNo;
@ApiModelProperty("入库单号")
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("库存单位")
@Excel(name = "库存单位")
private String stockUnit;
@ApiModelProperty("库存数量")
@Excel(name = "库存数量")
private BigDecimal stockQuantity;
}
@@ -1,496 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 物料明细对象 material_detail
*
* @author gen
* @date 2024-05-21
*/
@Data
public class OutMaterialDetailTZPD extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("订单物料明细id")
@TableId(type = IdType.AUTO)
private Long materialDetailId;
@ApiModelProperty("业务唯一id")
@JsonSerialize(using = ToStringSerializer.class)
private Long uniqueId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("出库单号")
@Excel(name = "出库单号")
private String outOrderNumber;
@ApiModelProperty("物料基础信息id")
@Excel(name = "物料基础信息id")
private Long materialBaseInfoId;
@ApiModelProperty("物料编码")
@Excel(name = "物料编码")
private String materialCode;
@ApiModelProperty("物料名称")
@Excel(name = "物料名称")
private String materialName;
@ApiModelProperty("物料条形码")
@Excel(name = "物料条形码")
private String barCode;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("已分配数量")
@Excel(name = "已分配数量")
private BigDecimal alreadyAllocationQuantity;
@ApiModelProperty("本次分配数量")
@Excel(name = "本次分配数量")
@TableField(exist = false)
private BigDecimal nowAllocationQuantity;
@ApiModelProperty("分配数量")
@Excel(name = "分配数量")
private BigDecimal allocationQuantity;
@ApiModelProperty("拣货数量")
@Excel(name = "拣货数量")
private BigDecimal pickingQuantity;
@ApiModelProperty("复核数量")
@Excel(name = "复核数量")
private BigDecimal checkQuantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@ApiModelProperty("体积 单位:立方米")
@Excel(name = "体积 单位:立方米")
private BigDecimal volumeLimit;
@ApiModelProperty("包装规格id")
@Excel(name = "包装规格id")
private Long packId;
@ApiModelProperty("包装规格编码")
@Excel(name = "包装规格编码")
private String packCode;
@ApiModelProperty("包装规格名称")
@Excel(name = "包装规格名称")
private String packName;
@ApiModelProperty("包装详情id")
@Excel(name = "包装详情id")
private Long packDetailId;
@ApiModelProperty("单位代码:EA IP CS PL OT")
@Excel(name = "单位代码:EA IP CS PL OT")
private String unitCode;
@ApiModelProperty("单位名称")
@Excel(name = "单位名称")
private String unitName;
@ApiModelProperty("单位数量")
@Excel(name = "单位数量")
private BigDecimal unitNumber;
@ApiModelProperty("物料仓库控制信息id")
@Excel(name = "物料仓库控制信息id")
private Long materialWarehouseControlId;
@ApiModelProperty("是否序列号管理: 1-是 2-否")
@Excel(name = "是否序列号管理: 1-是 2-否")
private Integer serialNumberManage;
@ApiModelProperty("物料库存id")
@Excel(name = "物料库存id")
private Long materialInventoryId;
@ApiModelProperty("批次号")
@Excel(name = "批次号")
private String batchNumber;
@ApiModelProperty("物料状态编码")
@Excel(name = "物料状态编码")
private String materialStatusCode;
@ApiModelProperty("物料状态名称")
@Excel(name = "物料状态名称")
private String materialStatusName;
@ApiModelProperty("容器id")
@Excel(name = "容器id")
private Long containerId;
@ApiModelProperty("容器编码")
@Excel(name = "容器编码")
private String containerCode;
@ApiModelProperty("容器类型 数据字典")
@Excel(name = "容器类型 数据字典")
private String containerType;
@ApiModelProperty("容器类型名称 数据字典")
@Excel(name = "容器类型名称 数据字典")
private String containerTypeName;
@ApiModelProperty("分配仓库id")
private Long warehouseId;
@ApiModelProperty("分配仓库编码")
@Excel(name = "分配仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("分配库区id")
@Excel(name = "分配库区id")
private Long storageSectionId;
@ApiModelProperty("分配库区编码")
@Excel(name = "分配库区编码")
private String storageCode;
@ApiModelProperty("分配库区名称")
@Excel(name = "分配库区名称")
private String storageName;
@ApiModelProperty("分配库位id")
@Excel(name = "分配库位id")
private Long storageLocationId;
@ApiModelProperty("分配库位编码")
@Excel(name = "分配库位编码")
private String storageLocationCode;
@ApiModelProperty("分配库位名称")
@Excel(name = "分配库位名称")
private String storageLocationName;
@ApiModelProperty("层级深度,从一级开始递增")
private Integer level;
@ApiModelProperty("父级唯一Id")
private Long parentUniqueId;
@ApiModelProperty("是否允许修改: 1-是 2-否 分配后 不再支持修改")
@Excel(name = "是否允许修改: 1-是 2-否")
private Integer allowModify;
@ApiModelProperty("是否生成拣货单: 1-是 2-否")
@Excel(name = "是否生成拣货单: 1-是 2-否")
private Integer genPickingOrder;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
@Excel(name = "商品名称")
private String commodityName;
/**
* 商品编码
*/
@ApiModelProperty("商品编码")
@Excel(name = "商品编码")
private String commodityNo;
/**
* 料号
*/
@ApiModelProperty("料号")
@Excel(name = "料号")
private String materialNo;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
/**
* 商品SKU码
*/
@ApiModelProperty("商品SKU码")
@Excel(name = "商品SKU码")
private String skucode;
/**
* Invoice No
*/
@ApiModelProperty("Invoice No")
@Excel(name = "Invoice No")
private String invoiceNo;
/**
* 升
*/
@ApiModelProperty("")
@Excel(name = "")
private String liter;
/**
* 尺寸
*/
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String size;
/**
* 申报单位
*/
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declareUnit;
/**
* Batch Ref NOs
*/
@ApiModelProperty("Batch Ref NOs")
@Excel(name = "Batch Ref NOs")
private String batchRefNo;
/**
* Sheet Ref NOs
*/
@ApiModelProperty("Sheet Ref NOs")
@Excel(name = "Sheet Ref NOs")
private String sheetRefNo;
/**
* 原产国
*/
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
/**
* 箱号/卡板号
*/
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String boxPalletNo;
/**
* 币制
*/
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
/**
* 申报数量
*/
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private BigDecimal declareQuantity;
/**
* 箱数
*/
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private BigDecimal caseCount;
/**
* 件数
*/
@ApiModelProperty("件数")
@Excel(name = "件数")
private BigDecimal pieceCount;
/**
* 出库数量
*/
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outboundQuantity;
/**
* 总净重(KG)
*/
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private BigDecimal totalNetWeight;
/**
* 总毛重(KG)
*/
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private BigDecimal totalGrossWeight;
/**
* 总体积(CBM)
*/
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private BigDecimal totalVolume;
/**
* 总面积(SQM)
*/
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private BigDecimal totalArea;
/**
* 总价
*/
@ApiModelProperty("总价")
@Excel(name = "总价")
private BigDecimal totalAmount;
/**
* 单位
*/
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("扩展属性1")
@Excel(name = "扩展属性1")
@TableField("ext_attr_1")
private String extAttr1;
@ApiModelProperty("扩展属性2")
@Excel(name = "扩展属性2")
@TableField("ext_attr_2")
private String extAttr2;
@ApiModelProperty("生产日期")
@Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date productionDate;
@ApiModelProperty("过期日期")
@Excel(name = "过期日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expiryDate;
@ApiModelProperty("存货日期")
@Excel(name = "存货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date inventoryDate;
@ApiModelProperty("扩展属性3")
@Excel(name = "扩展属性3", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField("ext_attr_3")
private Date extAttr3;
@ApiModelProperty("扩展属性4")
@Excel(name = "扩展属性4", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField("ext_attr_4")
private Date extAttr4;
/**
* 库存数量(仅用于前端展示,从material_inventory表中带出)
*/
@ApiModelProperty("分配时库存数量")
private BigDecimal inventoryQuantity;
@TableField(exist = false)
private BigDecimal actualQuantity;
@ApiModelProperty("复核总净重(KG)")
@Excel(name = "复核总净重(KG)")
private BigDecimal checkNetWeight;
@ApiModelProperty("复核总毛重(KG)")
@Excel(name = "复核总毛重(KG)")
private BigDecimal checkGrossWeight;
@ApiModelProperty("复核总体积(CBM)")
@Excel(name = "复核总体积(CBM)")
private BigDecimal checkVolume;
@ApiModelProperty("复核总面积(SQM)")
@Excel(name = "复核总面积(SQM)")
private BigDecimal checkArea;
@ApiModelProperty("是否已分配")
@Excel(name = "是否已分配")
private String isAllocated;
@ApiModelProperty("合同收费")
@Excel(name = "合同收费")
private BigDecimal contractFee;
@ApiModelProperty("每月仓租")
@Excel(name = "每月仓租")
private BigDecimal monthlyWarehouseFee;
@ApiModelProperty("半月仓租")
@Excel(name = "半月仓租")
private BigDecimal halfMonthWhFee;
@ApiModelProperty("折扣(%)")
@Excel(name = "折扣(%)")
private BigDecimal discountRate;
@ApiModelProperty("单体积(CBM)")
@Excel(name = "单体积(CBM)")
private BigDecimal singleVolume;
@ApiModelProperty("单毛重(KG)")
@Excel(name = "单毛重(KG)")
private BigDecimal singleGrossWeight;
@ApiModelProperty("lot编号")
@Excel(name = "lot编号")
private String lotNo;
@ApiModelProperty("入库单号")
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("库存单位")
@Excel(name = "库存单位")
private String stockUnit;
@ApiModelProperty("库存数量")
@Excel(name = "库存数量")
private BigDecimal stockQuantity;
}
@@ -1,42 +0,0 @@
package com.mhd.system.api.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* OMS→WMS 批量签名 Feign DTO
*
* <p>OMS端批量签名时,通过此DTO调用WMS的批量签名接口,
* 更新WMS stock_in_order / stock_out_order 表的签名字段。</p>
*/
@Data
public class SignatureBatchFeignDTO {
@ApiModelProperty("入库单ID列表")
private List<Long> inOrderIds;
@ApiModelProperty("出库单ID列表")
private List<Long> outOrderIds;
@ApiModelProperty("签名状态:2-已签名")
private Integer signatureStatus;
@ApiModelProperty("签名时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date signatureTime;
@ApiModelProperty("手写签名图片(base64或URL,单张)")
private String signaturePic;
@ApiModelProperty("拍照取证图片(逗号分隔多张URL")
private String evidencePics;
@ApiModelProperty("签名备注")
private String signatureRemark;
}
@@ -1,367 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 入库单对象 stock_in_order
*
* @author gen
* @date 2024-05-21
*/
@Data
public class StockInOrder extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("入库单id")
@TableId(type = IdType.AUTO)
private Long inOrderId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("通知单号")
@Excel(name = "通知单号")
private String noticeNumber;
@ApiModelProperty("入库单号")
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭")
@Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭")
private Integer status;
@ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
@Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
private Integer auditStatus;
@ApiModelProperty("入库单审核备注")
@Excel(name = "入库单审核备注")
private String auditRemark;
@ApiModelProperty("入库单审核人")
@Excel(name = "入库单审核人")
private Long auditBy;
@ApiModelProperty("入库单审核人姓名")
@Excel(name = "入库单审核人姓名")
private String auditByName;
@ApiModelProperty("入库单审核时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date auditTime;
@ApiModelProperty("货主id")
@Excel(name = "货主id")
private Long shipperId;
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
private String shipperCode;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
private String shipperName;
@ApiModelProperty("入库单类型编码")
@Excel(name = "入库单类型编码")
private String orderTypeCode;
@ApiModelProperty("入库单类型名称")
@Excel(name = "入库单类型名称")
private String orderTypeName;
@ApiModelProperty("供应商id")
@Excel(name = "供应商id")
private Long supplierId;
@ApiModelProperty("供应商编码")
@Excel(name = "供应商编码")
private String supplierCode;
@ApiModelProperty("供应商名称")
@Excel(name = "供应商名称")
private String supplierName;
@ApiModelProperty("预计到货时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expectTime;
@ApiModelProperty("供应链订单号")
@Excel(name = "供应链订单号")
private String supplyChainNumber;
@ApiModelProperty("优先级别编码")
@Excel(name = "优先级别编码")
private String priorityLevelCode;
@ApiModelProperty("优先级别名称")
@Excel(name = "优先级别名称")
private String priorityLevelName;
@ApiModelProperty("是否直接入库: 1-是 2-否")
@Excel(name = "是否直接入库: 1-是 2-否")
private Integer directWarehouse;
@ApiModelProperty("附件url")
@Excel(name = "附件url")
private String annexUrl;
@ApiModelProperty("物料种数")
@Excel(name = "物料种数")
private Integer materialQuantity;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@ApiModelProperty("体积 单位:立方米")
@Excel(name = "体积 单位:立方米")
private BigDecimal volumeLimit;
@ApiModelProperty("是否取消订单: 1-是 2-否")
@Excel(name = "是否取消订单: 1-是 2-否")
private Integer cancelOrder;
@ApiModelProperty("取消订单备注")
@Excel(name = "取消订单备注")
private String cancelRemark;
@ApiModelProperty("取消订单人")
@Excel(name = "取消订单人")
private Long cancelBy;
@ApiModelProperty("取消订单人姓名")
@Excel(name = "取消订单人姓名")
private String cancelByName;
@ApiModelProperty("取消订单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date cancelTime;
@ApiModelProperty("是否关闭订单: 1-是 2-否")
@Excel(name = "是否关闭订单: 1-是 2-否")
private Integer closeOrder;
@ApiModelProperty("关闭订单备注")
@Excel(name = "关闭订单备注")
private String closeRemark;
@ApiModelProperty("关闭订单人")
@Excel(name = "关闭订单人")
private Long closeBy;
@ApiModelProperty("关闭订单人姓名")
@Excel(name = "关闭订单人姓名")
private String closeByName;
@ApiModelProperty("关闭订单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date closeTime;
@ApiModelProperty("入库单来源: 1-正常录入 2-通知单生成 3-无单收货")
@Excel(name = "入库单来源: 1-正常录入 2-通知单生成 3-无单收货")
private Integer orderSource;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("调度单号")
private String mobilizeCode;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
// ========== 报关相关字段 ==========
@ApiModelProperty("To")
@Excel(name = "To")
@TableField(value = "\"TO\"")
private String to;
@ApiModelProperty("联系人")
@Excel(name = "联系人")
private String contactPerson;
@ApiModelProperty("车型及车牌")
@Excel(name = "车型及车牌")
private String vehicleInfo;
@ApiModelProperty("委托编号NO")
@Excel(name = "委托编号NO")
private String consignmentNo;
@ApiModelProperty("Tel")
@Excel(name = "Tel")
private String tel;
@ApiModelProperty("司机签名")
@Excel(name = "司机签名")
private String driverSignature;
@ApiModelProperty("Fax")
@Excel(name = "Fax")
private String fax;
@ApiModelProperty("申报地关区")
@Excel(name = "申报地关区")
private String declarationArea;
@ApiModelProperty("生产商")
@Excel(name = "生产商")
private String manufacturer;
@ApiModelProperty("报关员姓名及联系方式")
@Excel(name = "报关员姓名及联系方式")
private String customsBrokerInfo;
@ApiModelProperty("送货地址")
@Excel(name = "送货地址")
private String deliveryAddress;
@ApiModelProperty("进出境关别")
@Excel(name = "进出境关别")
private String entryExitCustoms;
@ApiModelProperty("起运/运抵国(地区)")
@Excel(name = "起运/运抵国(地区)")
private String originDestinationCountry;
@ApiModelProperty("承运商")
@Excel(name = "承运商")
private String carrier;
@ApiModelProperty("柜号")
@Excel(name = "柜号")
private String containerNo;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportMethod;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionMethod;
@ApiModelProperty("海关是否查验货物")
@Excel(name = "海关是否查验货物")
private Integer customsInspection;
@ApiModelProperty("是否需要报关")
@Excel(name = "是否需要报关")
private Integer needCustomsDeclaration;
@ApiModelProperty("是否需要运输")
@Excel(name = "是否需要运输")
private Integer needTransport;
@ApiModelProperty("入仓日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "入仓日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date warehouseDate;
@ApiModelProperty("完成时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date completionTime;
@ApiModelProperty("下单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "下单日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date orderDate;
@ApiModelProperty("业务单号")
@Excel(name = "业务单号")
private String businessOrderNo;
@ApiModelProperty("业务类型")
@Excel(name = "业务类型")
private String businessType;
@ApiModelProperty("制单人")
@Excel(name = "制单人")
private String documentCreator;
@ApiModelProperty("制单人名称")
@Excel(name = "制单人名称")
private String documentCreatorName;
@ApiModelProperty("制单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date documentDate;
@ApiModelProperty("订单状态")
@Excel(name = "订单状态")
private String orderStatus;
@ApiModelProperty("oms入库单id")
@Excel(name = "oms入库单id")
private String omsStockInOrderId;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员名称")
private String salesmanName;
@Excel(name = "附件url")
private String pictureUrl;
}
@@ -1,365 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 入库单对象 stock_in_order
*
* @author gen
* @date 2024-05-21
*/
@Data
public class StockInOrderTZPD extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("入库单id")
@TableId(type = IdType.AUTO)
private Long inOrderId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("通知单号")
@Excel(name = "通知单号")
private String noticeNumber;
@ApiModelProperty("入库单号")
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭")
@Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭")
private Integer status;
@ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
@Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
private Integer auditStatus;
@ApiModelProperty("入库单审核备注")
@Excel(name = "入库单审核备注")
private String auditRemark;
@ApiModelProperty("入库单审核人")
@Excel(name = "入库单审核人")
private Long auditBy;
@ApiModelProperty("入库单审核人姓名")
@Excel(name = "入库单审核人姓名")
private String auditByName;
@ApiModelProperty("入库单审核时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date auditTime;
@ApiModelProperty("货主id")
@Excel(name = "货主id")
private Long shipperId;
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
private String shipperCode;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
private String shipperName;
@ApiModelProperty("入库单类型编码")
@Excel(name = "入库单类型编码")
private String orderTypeCode;
@ApiModelProperty("入库单类型名称")
@Excel(name = "入库单类型名称")
private String orderTypeName;
@ApiModelProperty("供应商id")
@Excel(name = "供应商id")
private Long supplierId;
@ApiModelProperty("供应商编码")
@Excel(name = "供应商编码")
private String supplierCode;
@ApiModelProperty("供应商名称")
@Excel(name = "供应商名称")
private String supplierName;
@ApiModelProperty("预计到货时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expectTime;
@ApiModelProperty("供应链订单号")
@Excel(name = "供应链订单号")
private String supplyChainNumber;
@ApiModelProperty("优先级别编码")
@Excel(name = "优先级别编码")
private String priorityLevelCode;
@ApiModelProperty("优先级别名称")
@Excel(name = "优先级别名称")
private String priorityLevelName;
@ApiModelProperty("是否直接入库: 1-是 2-否")
@Excel(name = "是否直接入库: 1-是 2-否")
private Integer directWarehouse;
@ApiModelProperty("附件url")
@Excel(name = "附件url")
private String annexUrl;
@ApiModelProperty("物料种数")
@Excel(name = "物料种数")
private Integer materialQuantity;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@ApiModelProperty("体积 单位:立方米")
@Excel(name = "体积 单位:立方米")
private BigDecimal volumeLimit;
@ApiModelProperty("是否取消订单: 1-是 2-否")
@Excel(name = "是否取消订单: 1-是 2-否")
private Integer cancelOrder;
@ApiModelProperty("取消订单备注")
@Excel(name = "取消订单备注")
private String cancelRemark;
@ApiModelProperty("取消订单人")
@Excel(name = "取消订单人")
private Long cancelBy;
@ApiModelProperty("取消订单人姓名")
@Excel(name = "取消订单人姓名")
private String cancelByName;
@ApiModelProperty("取消订单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date cancelTime;
@ApiModelProperty("是否关闭订单: 1-是 2-否")
@Excel(name = "是否关闭订单: 1-是 2-否")
private Integer closeOrder;
@ApiModelProperty("关闭订单备注")
@Excel(name = "关闭订单备注")
private String closeRemark;
@ApiModelProperty("关闭订单人")
@Excel(name = "关闭订单人")
private Long closeBy;
@ApiModelProperty("关闭订单人姓名")
@Excel(name = "关闭订单人姓名")
private String closeByName;
@ApiModelProperty("关闭订单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date closeTime;
@ApiModelProperty("入库单来源: 1-正常录入 2-通知单生成 3-无单收货")
@Excel(name = "入库单来源: 1-正常录入 2-通知单生成 3-无单收货")
private Integer orderSource;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("调度单号")
private String mobilizeCode;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
// ========== 报关相关字段 ==========
@ApiModelProperty("To")
@Excel(name = "To")
@TableField(value = "\"TO\"")
private String to;
@ApiModelProperty("联系人")
@Excel(name = "联系人")
private String contactPerson;
@ApiModelProperty("车型及车牌")
@Excel(name = "车型及车牌")
private String vehicleInfo;
@ApiModelProperty("委托编号NO")
@Excel(name = "委托编号NO")
private String consignmentNo;
@ApiModelProperty("Tel")
@Excel(name = "Tel")
private String tel;
@ApiModelProperty("司机签名")
@Excel(name = "司机签名")
private String driverSignature;
@ApiModelProperty("Fax")
@Excel(name = "Fax")
private String fax;
@ApiModelProperty("申报地关区")
@Excel(name = "申报地关区")
private String declarationArea;
@ApiModelProperty("生产商")
@Excel(name = "生产商")
private String manufacturer;
@ApiModelProperty("报关员姓名及联系方式")
@Excel(name = "报关员姓名及联系方式")
private String customsBrokerInfo;
@ApiModelProperty("送货地址")
@Excel(name = "送货地址")
private String deliveryAddress;
@ApiModelProperty("进出境关别")
@Excel(name = "进出境关别")
private String entryExitCustoms;
@ApiModelProperty("起运/运抵国(地区)")
@Excel(name = "起运/运抵国(地区)")
private String originDestinationCountry;
@ApiModelProperty("承运商")
@Excel(name = "承运商")
private String carrier;
@ApiModelProperty("柜号")
@Excel(name = "柜号")
private String containerNo;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportMethod;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionMethod;
@ApiModelProperty("海关是否查验货物")
@Excel(name = "海关是否查验货物")
private Integer customsInspection;
@ApiModelProperty("是否需要报关")
@Excel(name = "是否需要报关")
private Integer needCustomsDeclaration;
@ApiModelProperty("是否需要运输")
@Excel(name = "是否需要运输")
private Integer needTransport;
@ApiModelProperty("入仓日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "入仓日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date warehouseDate;
@ApiModelProperty("完成时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date completionTime;
@ApiModelProperty("下单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "下单日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date orderDate;
@ApiModelProperty("业务单号")
@Excel(name = "业务单号")
private String businessOrderNo;
@ApiModelProperty("业务类型")
@Excel(name = "业务类型")
private String businessType;
@ApiModelProperty("制单人")
@Excel(name = "制单人")
private String documentCreator;
@ApiModelProperty("制单人名称")
@Excel(name = "制单人名称")
private String documentCreatorName;
@ApiModelProperty("制单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date documentDate;
@ApiModelProperty("订单状态")
@Excel(name = "订单状态")
private String orderStatus;
@ApiModelProperty("oms入库单id")
@Excel(name = "oms入库单id")
private String omsStockInOrderId;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员名称")
private String salesmanName;
}
@@ -1,417 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 出库单对象 stock_out_order
*
* @author gen
* @date 2024-05-28
*/
@Data
public class StockOutOrder extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("出库单id")
@TableId(type = IdType.AUTO)
private Long outOrderId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("通知单号")
@Excel(name = "通知单号")
private String noticeNumber;
@ApiModelProperty("出库单号")
@Excel(name = "出库单号")
private String outOrderNumber;
@ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核 13-已交接")
@Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核 13-已交接")
private Integer status;
@ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
@Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
private Integer auditStatus;
@ApiModelProperty("出库单审核备注")
@Excel(name = "出库单审核备注")
private String auditRemark;
@ApiModelProperty("出库单审核人")
@Excel(name = "出库单审核人")
private Long auditBy;
@ApiModelProperty("出库单审核人姓名")
@Excel(name = "出库单审核人姓名")
private String auditByName;
@ApiModelProperty("出库单审核时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date auditTime;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("货主id")
@Excel(name = "货主id")
private Long shipperId;
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
private String shipperCode;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
private String shipperName;
@ApiModelProperty("出库单类型编码")
@Excel(name = "出库单类型编码")
private String orderTypeCode;
@ApiModelProperty("出库单类型名称")
@Excel(name = "出库单类型名称")
private String orderTypeName;
@ApiModelProperty("客户id")
@Excel(name = "客户id")
private Long customerId;
@ApiModelProperty("客户编码")
@Excel(name = "客户编码")
private String customerCode;
@ApiModelProperty("客户名称")
@Excel(name = "客户名称")
private String customerName;
@ApiModelProperty("预计出货时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expectTime;
@ApiModelProperty("供应链订单号")
@Excel(name = "供应链订单号")
private String supplyChainNumber;
@ApiModelProperty("优先级别编码")
@Excel(name = "优先级别编码")
private String priorityLevelCode;
@ApiModelProperty("优先级别名称")
@Excel(name = "优先级别名称")
private String priorityLevelName;
@ApiModelProperty("是否直接出库: 1-是 2-否")
@Excel(name = "是否直接出库: 1-是 2-否")
private Integer directWarehouse;
@ApiModelProperty("是否复核: 1-是 2-否")
@Excel(name = "是否复核: 1-是 2-否")
private Integer review;
@ApiModelProperty("附件url")
@Excel(name = "附件url")
private String annexUrl;
@ApiModelProperty("物料种数")
@Excel(name = "物料种数")
private Integer materialQuantity;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@ApiModelProperty("体积 单位:立方米")
@Excel(name = "体积 单位:立方米")
private BigDecimal volumeLimit;
@ApiModelProperty("分配数量")
@Excel(name = "分配数量")
private BigDecimal allocationQuantity;
@ApiModelProperty("已生成拣货单数量")
@Excel(name = "已生成拣货单分配数量")
private BigDecimal alreadyAllocationQuantity;
@ApiModelProperty("拣货数量")
@Excel(name = "拣货数量")
private BigDecimal pickingQuantity;
@ApiModelProperty("复核数量")
@Excel(name = "复核数量")
private BigDecimal checkQuantity;
@ApiModelProperty("是否取消订单: 1-是 2-否")
@Excel(name = "是否取消订单: 1-是 2-否")
private Integer cancelOrder;
@ApiModelProperty("取消订单备注")
@Excel(name = "取消订单备注")
private String cancelRemark;
@ApiModelProperty("取消订单人")
@Excel(name = "取消订单人")
private Long cancelBy;
@ApiModelProperty("取消订单人姓名")
@Excel(name = "取消订单人姓名")
private String cancelByName;
@ApiModelProperty("取消订单时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date cancelTime;
@ApiModelProperty("是否关闭订单: 1-是 2-否")
@Excel(name = "是否关闭订单: 1-是 2-否")
private Integer closeOrder;
@ApiModelProperty("关闭订单备注")
@Excel(name = "关闭订单备注")
private String closeRemark;
@ApiModelProperty("关闭订单人")
@Excel(name = "关闭订单人")
private Long closeBy;
@ApiModelProperty("关闭订单人姓名")
@Excel(name = "关闭订单人姓名")
private String closeByName;
@ApiModelProperty("关闭订单时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date closeTime;
@ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核")
@Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核")
private Integer checkStatus;
@ApiModelProperty("复核任务是否下发: 1-是 2-否")
@Excel(name = "复核任务是否下发: 1-是 2-否")
private Integer checkTaskDistribution;
@ApiModelProperty("复核任务下发时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date checkTaskDistributionTime;
@ApiModelProperty("复核作业人用户ID")
@Excel(name = "复核作业人用户ID")
private Long checkOperatorsBy;
@ApiModelProperty("复核作业人姓名")
@Excel(name = "复核作业人姓名")
private String checkOperatorsName;
@ApiModelProperty("调度单号")
@Excel(name = "调度单号")
private String mobilizeCode;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
@ApiModelProperty("to")
@Excel(name = "to")
@TableField(value = "\"TO\"")
private String to;
@ApiModelProperty("联系人")
@Excel(name = "联系人")
private String contactPerson;
@ApiModelProperty("车型及车牌")
@Excel(name = "车型及车牌")
private String vehicleModelPlate;
@ApiModelProperty("委托编号")
@Excel(name = "委托编号")
private String entrustNo;
@ApiModelProperty("Tel")
@Excel(name = "Tel")
private String tel;
@ApiModelProperty("司机签名")
@Excel(name = "司机签名")
private String driverSign;
@ApiModelProperty("Fax")
@Excel(name = "Fax")
private String fax;
@ApiModelProperty("申报地关区")
@Excel(name = "申报地关区")
private String declareCustoms;
@ApiModelProperty("生产商")
@Excel(name = "生产商")
private String manufacturer;
@ApiModelProperty("报关员姓名及联系方式")
@Excel(name = "报关员姓名及联系方式")
private String customsDeclarerInfo;
@ApiModelProperty("送货地址")
@Excel(name = "送货地址")
private String deliveryAddr;
@ApiModelProperty("进出境关别")
@Excel(name = "进出境关别")
private String entryExitCustoms;
@ApiModelProperty("起运/运抵国(地区)")
@Excel(name = "起运/运抵国(地区)")
private String departureArrivalCountry;
@ApiModelProperty("承运商")
@Excel(name = "承运商")
private String carrier;
@ApiModelProperty("承运商名称")
@Excel(name = "承运商名称")
private String carrierName;
@ApiModelProperty("柜号")
@Excel(name = "柜号")
private String containerNo;
@ApiModelProperty("")
@Excel(name = "")
private String containerNoName;
@ApiModelProperty("出仓日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "出仓日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date outboundDate;
@ApiModelProperty("完成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date completeTime;
@ApiModelProperty("orderDate")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "orderDate", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date orderDate;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeCode;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeName;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeCode;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeName;
@ApiModelProperty("海关是否查验货物")
@Excel(name = "海关是否查验货物")
private String customsInspectionFlag;
@ApiModelProperty("是否需要报关")
@Excel(name = "是否需要报关")
private String needDeclareFlag;
@ApiModelProperty("是否需要运输")
@Excel(name = "是否需要运输")
private String needTransportFlag;
@ApiModelProperty("app上传的图片")
private String pictureApp;
@ApiModelProperty("业务单号")
@Excel(name = "业务单号")
private String businessOrderNo;
@ApiModelProperty("业务类型")
@Excel(name = "业务类型")
private String businessType;
@ApiModelProperty("制单人")
@Excel(name = "制单人")
private String documentCreator;
@ApiModelProperty("制单人名称")
@Excel(name = "制单人名称")
private String documentCreatorName;
@ApiModelProperty("制单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date documentDate;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员名称")
private String salesmanName;
@ApiModelProperty("车次")
@Excel(name = "车次")
private Integer trainNo;
@ApiModelProperty("线路编码(取自WMS线路管理)")
private String lineCode;
@ApiModelProperty("线路名称(冗余存储)")
private String lineName;
@ApiModelProperty("车次序号(显示: 线路编码-车次, 如31-4)")
private String shuttleNo;
}
@@ -1,486 +0,0 @@
package com.mhd.system.api.domain;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 出库单对象 stock_out_order
*
* @author gen
* @date 2024-05-28
*/
@Data
public class StockOutOrderDTO extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("出库单id")
private Long outOrderId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("通知单号")
@Excel(name = "通知单号")
private String noticeNumber;
@ApiModelProperty("出库单号")
@Excel(name = "出库单号")
private String outOrderNumber;
@ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭")
@Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭")
private Integer status;
@ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
@Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
private Integer auditStatus;
@ApiModelProperty("出库单审核备注")
@Excel(name = "出库单审核备注")
private String auditRemark;
@ApiModelProperty("出库单审核人")
@Excel(name = "出库单审核人")
private Long auditBy;
@ApiModelProperty("出库单审核人姓名")
@Excel(name = "出库单审核人姓名")
private String auditByName;
@ApiModelProperty("出库单审核时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date auditTime;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("货主id")
@Excel(name = "货主id")
private Long shipperId;
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
private String shipperCode;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
private String shipperName;
@ApiModelProperty("出库单类型编码")
@Excel(name = "出库单类型编码")
private String orderTypeCode;
@ApiModelProperty("出库单类型名称")
@Excel(name = "出库单类型名称")
private String orderTypeName;
@ApiModelProperty("客户id")
@Excel(name = "客户id")
private Long customerId;
@ApiModelProperty("客户编码")
@Excel(name = "客户编码")
private String customerCode;
@ApiModelProperty("客户名称")
@Excel(name = "客户名称")
private String customerName;
@ApiModelProperty("预计出货时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expectTime;
@ApiModelProperty("供应链订单号")
@Excel(name = "供应链订单号")
private String supplyChainNumber;
@ApiModelProperty("优先级别编码")
@Excel(name = "优先级别编码")
private String priorityLevelCode;
@ApiModelProperty("优先级别名称")
@Excel(name = "优先级别名称")
private String priorityLevelName;
@ApiModelProperty("是否直接出库: 1-是 2-否")
@Excel(name = "是否直接出库: 1-是 2-否")
private Integer directWarehouse;
@ApiModelProperty("是否复核: 1-是 2-否")
@Excel(name = "是否复核: 1-是 2-否")
private Integer review;
@ApiModelProperty("附件url")
@Excel(name = "附件url")
private String annexUrl;
@ApiModelProperty("物料种数")
@Excel(name = "物料种数")
private Integer materialQuantity;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@ApiModelProperty("体积 单位:立方米")
@Excel(name = "体积 单位:立方米")
private BigDecimal volumeLimit;
@ApiModelProperty("分配数量")
@Excel(name = "分配数量")
private BigDecimal allocationQuantity;
@ApiModelProperty("已生成拣货单数量")
@Excel(name = "已生成拣货单分配数量")
private BigDecimal alreadyAllocationQuantity;
@ApiModelProperty("拣货数量")
@Excel(name = "拣货数量")
private BigDecimal pickingQuantity;
@ApiModelProperty("复核数量")
@Excel(name = "复核数量")
private BigDecimal checkQuantity;
@ApiModelProperty("是否取消订单: 1-是 2-否")
@Excel(name = "是否取消订单: 1-是 2-否")
private Integer cancelOrder;
@ApiModelProperty("取消订单备注")
@Excel(name = "取消订单备注")
private String cancelRemark;
@ApiModelProperty("取消订单人")
@Excel(name = "取消订单人")
private Long cancelBy;
@ApiModelProperty("取消订单人姓名")
@Excel(name = "取消订单人姓名")
private String cancelByName;
@ApiModelProperty("取消订单时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date cancelTime;
@ApiModelProperty("是否关闭订单: 1-是 2-否")
@Excel(name = "是否关闭订单: 1-是 2-否")
private Integer closeOrder;
@ApiModelProperty("关闭订单备注")
@Excel(name = "关闭订单备注")
private String closeRemark;
@ApiModelProperty("关闭订单人")
@Excel(name = "关闭订单人")
private Long closeBy;
@ApiModelProperty("关闭订单人姓名")
@Excel(name = "关闭订单人姓名")
private String closeByName;
@ApiModelProperty("关闭订单时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date closeTime;
@ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核")
@Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核")
private Integer checkStatus;
@ApiModelProperty("复核任务是否下发: 1-是 2-否")
@Excel(name = "复核任务是否下发: 1-是 2-否")
private Integer checkTaskDistribution;
@ApiModelProperty("复核任务下发时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date checkTaskDistributionTime;
@ApiModelProperty("复核作业人用户ID")
@Excel(name = "复核作业人用户ID")
@JsonAlias({"checkOperatorId", "operatorId"})
private Long checkOperatorsBy;
@ApiModelProperty("复核作业人姓名")
@Excel(name = "复核作业人姓名")
private String checkOperatorsName;
@ApiModelProperty("调度单号")
@Excel(name = "调度单号")
private String mobilizeCode;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty(name = "组织ID集合")
private List<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
@ApiModelProperty("出库单id集合")
private List<Long> outOrderIds;
// @ApiModelProperty("物料明细")
// private List<OutMaterialDetailDTO> materialDetailList;
@ApiModelProperty("物料条形码")
@Excel(name = "物料条形码")
private String barCode;
@ApiModelProperty("物料审核数量")
@Excel(name = "物料审核数量")
private BigDecimal actualQuantity;
@ApiModelProperty("波次类型编码")
private String waveOrderTypeCode;
@ApiModelProperty("大于复核状态: 1-未复核 2-复核中 3-已复核")
private Integer gtCheckStatus;
@ApiModelProperty("小于复核状态: 1-未复核 2-复核中 3-已复核")
private Integer ltCheckStatus;
@ApiModelProperty("PDA复核查询tab: 1-列表(待复核) 2-历史记录(已复核)")
private Integer tabType;
@ApiModelProperty("to")
@Excel(name = "to")
private String to;
@ApiModelProperty("联系人")
@Excel(name = "联系人")
private String contactPerson;
@ApiModelProperty("车型及车牌")
@Excel(name = "车型及车牌")
private String vehicleModelPlate;
@ApiModelProperty("委托编号")
@Excel(name = "委托编号")
private String entrustNo;
@ApiModelProperty("Tel")
@Excel(name = "Tel")
private String tel;
@ApiModelProperty("司机签名")
@Excel(name = "司机签名")
private String driverSign;
@ApiModelProperty("Fax")
@Excel(name = "Fax")
private String fax;
@ApiModelProperty("申报地关区")
@Excel(name = "申报地关区")
private String declareCustoms;
@ApiModelProperty("生产商")
@Excel(name = "生产商")
private String manufacturer;
@ApiModelProperty("报关员姓名及联系方式")
@Excel(name = "报关员姓名及联系方式")
private String customsDeclarerInfo;
@ApiModelProperty("送货地址")
@Excel(name = "送货地址")
private String deliveryAddr;
@ApiModelProperty("进出境关别")
@Excel(name = "进出境关别")
private String entryExitCustoms;
@ApiModelProperty("起运/运抵国(地区)")
@Excel(name = "起运/运抵国(地区)")
private String departureArrivalCountry;
@ApiModelProperty("承运商")
@Excel(name = "承运商")
private String carrier;
@ApiModelProperty("柜号")
@Excel(name = "柜号")
private String containerNo;
@ApiModelProperty("")
@Excel(name = "")
private String containerNoName;
@ApiModelProperty("出仓日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "出仓日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date outboundDate;
@ApiModelProperty("完成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date completeTime;
@ApiModelProperty("orderDate")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "orderDate", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date orderDate;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeCode;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeName;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeCode;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeName;
@ApiModelProperty("海关是否查验货物")
@Excel(name = "海关是否查验货物")
private String customsInspectionFlag;
@ApiModelProperty("是否需要报关")
@Excel(name = "是否需要报关")
private String needDeclareFlag;
@ApiModelProperty("是否需要运输")
@Excel(name = "是否需要运输")
private String needTransportFlag;
@ApiModelProperty(name = "创建时间查询条件开始日期")
private String createTimeStart;
@ApiModelProperty(name = "创建时间查询条件结束日期")
private String createTimeEnd;
@ApiModelProperty(name = "审核时间查询条件开始日期")
private String auditTimeStart;
@ApiModelProperty(name = "审核时间查询条件结束日期")
private String auditTimeEnd;
@ApiModelProperty("出库明细-物料名称(商品名称),模糊匹配,与前端参数 materialName 一致")
private String materialName;
@ApiModelProperty("出库明细-物料编码,模糊匹配,与前端参数 materialCode 一致")
private String materialCode;
@ApiModelProperty("出库交接图片,PDA出库交接时上传的照片,多张图片以逗号隔开")
private String pictureApp;
@ApiModelProperty("业务单号")
@Excel(name = "业务单号")
private String businessOrderNo;
@ApiModelProperty("业务类型")
@Excel(name = "业务类型")
private String businessType;
@ApiModelProperty("制单人")
@Excel(name = "制单人")
private String documentCreator;
@ApiModelProperty("制单人名称")
@Excel(name = "制单人名称")
private String documentCreatorName;
@ApiModelProperty("制单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date documentDate;
@ApiModelProperty("承运商名称")
@Excel(name = "承运商名称")
private String carrierName;
@ApiModelProperty("计费信息")
private String billingJson;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员名称")
private String salesmanName;
// @ApiModelProperty("费用")
// List<ReceiptOrderAccount> receiptOrderAccountList;
@ApiModelProperty("退货数量")
@Excel(name = "退货数量")
private BigDecimal returnQuantity;
/**
* 提货单打印所选模版与图5单选项文案一致即可可传副标题如谷丰--营销部或整段提货单--谷丰--营销部不传则标题为提货单
*/
@ApiModelProperty("提货单打印模版名/弹窗选项全文;后端生成 printTitle(-- 会规范为 ——)")
private String noticePrintTemplateName;
@ApiModelProperty("车次")
@Excel(name = "车次")
private Integer trainNo;
@ApiModelProperty("推送状态:1-未推送,2-推送中,3-推送成功,4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("推送时间")
private Date pushTime;
@ApiModelProperty("推送人")
private Long pushBy;
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty(value = "推送时间起")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date pushTimeFrom;
@ApiModelProperty(value = "推送时间止")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date pushTimeTo;
@ApiModelProperty(value = "推送时间起")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeFrom;
@ApiModelProperty(value = "推送时间止")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
}
@@ -1,405 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 出库单对象 stock_out_order
*
* @author gen
* @date 2024-05-28
*/
@Data
public class StockOutOrderTZPD extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("出库单id")
@TableId(type = IdType.AUTO)
private Long outOrderId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("通知单号")
@Excel(name = "通知单号")
private String noticeNumber;
@ApiModelProperty("出库单号")
@Excel(name = "出库单号")
private String outOrderNumber;
@ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核")
@Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核")
private Integer status;
@ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
@Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过")
private Integer auditStatus;
@ApiModelProperty("出库单审核备注")
@Excel(name = "出库单审核备注")
private String auditRemark;
@ApiModelProperty("出库单审核人")
@Excel(name = "出库单审核人")
private Long auditBy;
@ApiModelProperty("出库单审核人姓名")
@Excel(name = "出库单审核人姓名")
private String auditByName;
@ApiModelProperty("出库单审核时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date auditTime;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("货主id")
@Excel(name = "货主id")
private Long shipperId;
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
private String shipperCode;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
private String shipperName;
@ApiModelProperty("出库单类型编码")
@Excel(name = "出库单类型编码")
private String orderTypeCode;
@ApiModelProperty("出库单类型名称")
@Excel(name = "出库单类型名称")
private String orderTypeName;
@ApiModelProperty("客户id")
@Excel(name = "客户id")
private Long customerId;
@ApiModelProperty("客户编码")
@Excel(name = "客户编码")
private String customerCode;
@ApiModelProperty("客户名称")
@Excel(name = "客户名称")
private String customerName;
@ApiModelProperty("预计出货时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date expectTime;
@ApiModelProperty("供应链订单号")
@Excel(name = "供应链订单号")
private String supplyChainNumber;
@ApiModelProperty("优先级别编码")
@Excel(name = "优先级别编码")
private String priorityLevelCode;
@ApiModelProperty("优先级别名称")
@Excel(name = "优先级别名称")
private String priorityLevelName;
@ApiModelProperty("是否直接出库: 1-是 2-否")
@Excel(name = "是否直接出库: 1-是 2-否")
private Integer directWarehouse;
@ApiModelProperty("是否复核: 1-是 2-否")
@Excel(name = "是否复核: 1-是 2-否")
private Integer review;
@ApiModelProperty("附件url")
@Excel(name = "附件url")
private String annexUrl;
@ApiModelProperty("物料种数")
@Excel(name = "物料种数")
private Integer materialQuantity;
@ApiModelProperty("计划数量")
@Excel(name = "计划数量")
private BigDecimal quantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@ApiModelProperty("体积 单位:立方米")
@Excel(name = "体积 单位:立方米")
private BigDecimal volumeLimit;
@ApiModelProperty("分配数量")
@Excel(name = "分配数量")
private BigDecimal allocationQuantity;
@ApiModelProperty("已生成拣货单数量")
@Excel(name = "已生成拣货单分配数量")
private BigDecimal alreadyAllocationQuantity;
@ApiModelProperty("拣货数量")
@Excel(name = "拣货数量")
private BigDecimal pickingQuantity;
@ApiModelProperty("复核数量")
@Excel(name = "复核数量")
private BigDecimal checkQuantity;
@ApiModelProperty("是否取消订单: 1-是 2-否")
@Excel(name = "是否取消订单: 1-是 2-否")
private Integer cancelOrder;
@ApiModelProperty("取消订单备注")
@Excel(name = "取消订单备注")
private String cancelRemark;
@ApiModelProperty("取消订单人")
@Excel(name = "取消订单人")
private Long cancelBy;
@ApiModelProperty("取消订单人姓名")
@Excel(name = "取消订单人姓名")
private String cancelByName;
@ApiModelProperty("取消订单时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date cancelTime;
@ApiModelProperty("是否关闭订单: 1-是 2-否")
@Excel(name = "是否关闭订单: 1-是 2-否")
private Integer closeOrder;
@ApiModelProperty("关闭订单备注")
@Excel(name = "关闭订单备注")
private String closeRemark;
@ApiModelProperty("关闭订单人")
@Excel(name = "关闭订单人")
private Long closeBy;
@ApiModelProperty("关闭订单人姓名")
@Excel(name = "关闭订单人姓名")
private String closeByName;
@ApiModelProperty("关闭订单时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date closeTime;
@ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核")
@Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核")
private Integer checkStatus;
@ApiModelProperty("复核任务是否下发: 1-是 2-否")
@Excel(name = "复核任务是否下发: 1-是 2-否")
private Integer checkTaskDistribution;
@ApiModelProperty("复核任务下发时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date checkTaskDistributionTime;
@ApiModelProperty("复核作业人用户ID")
@Excel(name = "复核作业人用户ID")
private Long checkOperatorsBy;
@ApiModelProperty("复核作业人姓名")
@Excel(name = "复核作业人姓名")
private String checkOperatorsName;
@ApiModelProperty("调度单号")
@Excel(name = "调度单号")
private String mobilizeCode;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty("越库单id")
private Long overStockId;
@ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成")
@Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成")
private Integer overStockStatus;
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType;
@ApiModelProperty("to")
@Excel(name = "to")
@TableField(value = "\"TO\"")
private String to;
@ApiModelProperty("联系人")
@Excel(name = "联系人")
private String contactPerson;
@ApiModelProperty("车型及车牌")
@Excel(name = "车型及车牌")
private String vehicleModelPlate;
@ApiModelProperty("委托编号")
@Excel(name = "委托编号")
private String entrustNo;
@ApiModelProperty("Tel")
@Excel(name = "Tel")
private String tel;
@ApiModelProperty("司机签名")
@Excel(name = "司机签名")
private String driverSign;
@ApiModelProperty("Fax")
@Excel(name = "Fax")
private String fax;
@ApiModelProperty("申报地关区")
@Excel(name = "申报地关区")
private String declareCustoms;
@ApiModelProperty("生产商")
@Excel(name = "生产商")
private String manufacturer;
@ApiModelProperty("报关员姓名及联系方式")
@Excel(name = "报关员姓名及联系方式")
private String customsDeclarerInfo;
@ApiModelProperty("送货地址")
@Excel(name = "送货地址")
private String deliveryAddr;
@ApiModelProperty("进出境关别")
@Excel(name = "进出境关别")
private String entryExitCustoms;
@ApiModelProperty("起运/运抵国(地区)")
@Excel(name = "起运/运抵国(地区)")
private String departureArrivalCountry;
@ApiModelProperty("承运商")
@Excel(name = "承运商")
private String carrier;
@ApiModelProperty("承运商名称")
@Excel(name = "承运商名称")
private String carrierName;
@ApiModelProperty("柜号")
@Excel(name = "柜号")
private String containerNo;
@ApiModelProperty("")
@Excel(name = "")
private String containerNoName;
@ApiModelProperty("出仓日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "出仓日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date outboundDate;
@ApiModelProperty("完成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date completeTime;
@ApiModelProperty("orderDate")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "orderDate", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date orderDate;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeCode;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeName;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeCode;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeName;
@ApiModelProperty("海关是否查验货物")
@Excel(name = "海关是否查验货物")
private String customsInspectionFlag;
@ApiModelProperty("是否需要报关")
@Excel(name = "是否需要报关")
private String needDeclareFlag;
@ApiModelProperty("是否需要运输")
@Excel(name = "是否需要运输")
private String needTransportFlag;
@ApiModelProperty("app上传的图片")
private String pictureApp;
@ApiModelProperty("业务单号")
@Excel(name = "业务单号")
private String businessOrderNo;
@ApiModelProperty("业务类型")
@Excel(name = "业务类型")
private String businessType;
@ApiModelProperty("制单人")
@Excel(name = "制单人")
private String documentCreator;
@ApiModelProperty("制单人名称")
@Excel(name = "制单人名称")
private String documentCreatorName;
@ApiModelProperty("制单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date documentDate;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员名称")
private String salesmanName;
}
@@ -34,45 +34,6 @@ public class SysDictType extends BaseEntity
@Excel(name = "状态", readConverterExp = "0=正常,1=停用") @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status; private String status;
/** 组织表ID */
private Long organizationId;
/** 组织名称 */
private String organizationName;
/** 一级组织表ID */
private Long topOrganizationId;
public Long getOrganizationId()
{
return organizationId;
}
public void setOrganizationId(Long organizationId)
{
this.organizationId = organizationId;
}
public String getOrganizationName()
{
return organizationName;
}
public void setOrganizationName(String organizationName)
{
this.organizationName = organizationName;
}
public Long getTopOrganizationId()
{
return topOrganizationId;
}
public void setTopOrganizationId(Long topOrganizationId)
{
this.topOrganizationId = topOrganizationId;
}
public Long getDictId() public Long getDictId()
{ {
return dictId; return dictId;
@@ -125,9 +86,6 @@ public class SysDictType extends BaseEntity
.append("dictName", getDictName()) .append("dictName", getDictName())
.append("dictType", getDictType()) .append("dictType", getDictType())
.append("status", getStatus()) .append("status", getStatus())
.append("organizationId", getOrganizationId())
.append("organizationName", getOrganizationName())
.append("topOrganizationId", getTopOrganizationId())
.append("createBy", getCreateBy()) .append("createBy", getCreateBy())
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
@@ -96,7 +96,7 @@ public class SysLogininfor {
/** /**
* 访问时间 * 访问时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date accessTime; private Date accessTime;
@@ -109,4 +109,4 @@ public class SysLogininfor {
* 响应时间ms * 响应时间ms
*/ */
private String responseTime; private String responseTime;
} }
@@ -156,7 +156,7 @@ public class SysOperLog {
/** /**
* 操作时间 * 操作时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date operTime; private Date operTime;
@@ -176,4 +176,4 @@ public class SysOperLog {
* 端口 * 端口
*/ */
private String port; private String port;
} }
@@ -127,12 +127,4 @@ public class TmsMakeOutInvoice implements Serializable {
private String actualInvoiceCustomerId; private String actualInvoiceCustomerId;
@ApiModelProperty(value = "实际开票客户名称") @ApiModelProperty(value = "实际开票客户名称")
private String actualInvoiceCustomerName; private String actualInvoiceCustomerName;
@ApiModelProperty(value = "无税费用") }
private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额")
private BigDecimal taxAmount;
@ApiModelProperty(value = "税率")
private Double taxRate;
@ApiModelProperty(value = "费用类别")
private String feeType;
}
@@ -1,77 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 销项发票表
* @Author: lfs
* @Date: 2020-02-19 08:50:47
* @Version: V1.0
*/
@Data
@TableName("tms_make_out_invoice_item")
public class TmsMakeOutInvoiceItem implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ID_WORKER_STR)
private String id;
/**makeId*/
@ApiModelProperty(value = "makeId")
private String makeId;
/**发票金额*/
@ApiModelProperty(value = "发票金额")
private BigDecimal invoiceValue;
/**发票备注*/
@ApiModelProperty(value = "发票备注")
@Excel(name = "发票备注", width = 15)
private String remark;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@ApiModelProperty(value = "创建日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@ApiModelProperty(value = "更新日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**是否删除(0-否,1-是)*/
@ApiModelProperty(value = "是否删除(0-否,1-是)")
private Integer isDelete;
@ApiModelProperty(value = "开票项目")
private String invoiceItem;
@ApiModelProperty(value = "开票项目名称")
private String invoiceItemName;
@ApiModelProperty(value = "实际开票客户id")
private String actualInvoiceCustomerId;
@ApiModelProperty(value = "实际开票客户名称")
private String actualInvoiceCustomerName;
@ApiModelProperty(value = "无税费用")
private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额")
private BigDecimal taxAmount;
@ApiModelProperty(value = "税率")
private Double taxRate;
@ApiModelProperty(value = "费用类别")
private String feeType;
}
@@ -1,510 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.domain.dto.wlhy.TmsAddressMultiDTO;
import com.mhd.common.core.domain.dto.wlhy.TmsCargoInfoDTO;
import com.mhd.common.core.domain.dto.wlhy.TmsOrderAccount;
import com.mhd.system.api.model.LoginUser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* @Description: 货源表
* @Author: lfs
* @Date: 2020-02-14 09:49:27
* @Version: V1.0
*/
@Data
public class
TmsOrderAddDTO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ID_WORKER_STR)
private String id;
// @ApiModelProperty(value = "线路名称ID")
// private java.lang.String lineNameId="";
// @ApiModelProperty(value = "线路名称")
// private java.lang.String lineName="";
//
// @ApiModelProperty(value = "运距(千米)")
// private BigDecimal haulDistance;
@ApiModelProperty(value = "装货地县区编码",required = true)
private String loadingAreaId="";
@ApiModelProperty(value = "装货地详细地址")
private String loadingAddress="";
@ApiModelProperty(value = "发货人姓名")
private String freighterName="";
@ApiModelProperty(value = "装货电话")
private String loadingPhone="";
@ApiModelProperty(value = "装货时间日期(年月日)",required = true)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date loadingDate;
// @ApiModelProperty(value = "装货时间(上午、下午、24小时)")
// private String loadingTime="";
@ApiModelProperty(value = "卸货地县区编码",required = true)
private String unloadAreaId="";
@ApiModelProperty(value = "卸货地详细地址")
private String unloadAddress="";
@ApiModelProperty(value = "收货人姓名")
private String dischargerName="";
@ApiModelProperty(value = "卸货电话")
private String unloadPhone="";
@ApiModelProperty(value = "卸货时间日期(年月日)",required = true)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private java.util.Date unloadingData;
// @ApiModelProperty(value = "装货时间id",required = true)
// private String loadingTimeId;
// @ApiModelProperty(value = "卸货时间id",required = true)
// private String unloadingTimeId;
// @ApiModelProperty(value = "卸货时间(上午、下午、24小时)")
// private java.lang.String unloadingTime;
@ApiModelProperty(value = "货物名称ID")
private String goodsNameId;
@ApiModelProperty(value = "货物名称")
private String goodsName;
@ApiModelProperty(value = "货物名称ID",required = true)
private String goodsTypeId;
@ApiModelProperty(value = "货物大类型")
private String goodsType="";
@ApiModelProperty(value = "重量小(吨)",required = true)
private BigDecimal weightMin;
@ApiModelProperty(value = "重量大(吨)",required = true)
private BigDecimal weightMax;
@ApiModelProperty(value = "货物数量单位(吨/方/件)id",required = true)
private String goodsUntisId;
@ApiModelProperty(value = "配载方式ID0-数量,1-车次)",required = true)
private Integer transportationModeId = 1;
@ApiModelProperty(value = "车型车长ID")
private String carType;
// @ApiModelProperty(value = "指定司机ID")
// private String appointDriverId;
// @ApiModelProperty(value = "司机姓名")
// private String appointDriver;
// @ApiModelProperty(value = "司机手机号")
// private String appointDriverPhone;
// @ApiModelProperty(value = "司机车牌号")
// private String appointDriverLicense;
@ApiModelProperty(value = "服务要求ID")
private String serviceRequireId;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty(value = "备注")
private String orderRemark;
// @ApiModelProperty(value = "运单类型(0-企业普货、1-企业批量货、2-撮合货(普通货源)、3-客服运单,4-线下运单)")
// private Integer waybillType ;
@ApiModelProperty(value = "运单类型:0-pc端发货,1-pc端导入,2-货主端app发货")
private Integer waybillFrom = 2 ;
// @ApiModelProperty(value = "期望运费")
// private java.math.BigDecimal freightHope;
// @ApiModelProperty(value = "占用车长")
// private String occupyConductor;
@ApiModelProperty(value = "运单模式(0-普通模式,1-竞价模式)")
private Integer waybillMode = 0;
@ApiModelProperty(value = "竞价截止时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date latestBiddingTime;
@ApiModelProperty(value = "发货运费")
private BigDecimal deliveryFreight;
@ApiModelProperty(value = "运费单价(元/吨)")
private BigDecimal transportationUnitPrice;
@ApiModelProperty(value = "结算方式,1-按趟结算,2-按数量结算")
private Integer radioValue;
@ApiModelProperty(value = "合同物流导入(0-默认,1-合同,2-普通导入)")
private Integer isContract = 0;
// @ApiModelProperty(value = "是否长期货源:0-否,1-是")
// private Integer isLongOrder=0;
// @ApiModelProperty(value = "卸货单位")
// private java.lang.String unloadUnit;
// @ApiModelProperty(value = "收货人身份证号")
// private String unloadIdentificationNumber;
// @ApiModelProperty(value = "代运营人员用户ID")
// private String orderAgentUserId;
@ApiModelProperty(value = "指定货主编号")
private String appointShipperId;
@ApiModelProperty(value = "指定货主")
private String appointShipper;
// @ApiModelProperty(value = "指定平台公司")
// private String appointCompanyId;
// @ApiModelProperty(value = "指定平台公司名称")
// private String appointCompanyName;
// @ApiModelProperty(value = "指定车辆ID")
// private String appointVehicleId;
// @ApiModelProperty(value = "指定车辆设备号")
// private String appointVehicleDevice;
/**是否开启路耗(0-否 1-是)*/
// @ApiModelProperty(value = "是否开启路耗(0-否 1-是)")
// @Excel(name = "是否开启路耗(0-否 1-是)", width = 15)
// private Integer isRoadLoss=0;
/**货物价值(元/吨)*/
// @ApiModelProperty(value = "货物价值(元/吨)")
// @Excel(name = "货物价值(元/吨)", width = 15)
// private BigDecimal goodsValue=BigDecimal.ZERO;
/**路耗模式( 0-按比例% 1-按数量(吨))*/
// @ApiModelProperty(value = "路耗模式( 0-按比例% 1-按数量(吨))")
// @Excel(name = "路耗模式( 0-按比例% 1-按数量(吨))", width = 15)
// private Integer roadLossMode;
// /**路耗结算方式( 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)*/
// @ApiModelProperty(value = "路耗结算方式(0-无 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)")
// @Excel(name = "路耗结算方式( 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)", width = 15)
// private Integer roadLossSettlementMethod;
/**允许货物亏损*/
// @ApiModelProperty(value = "允许货物亏损(吨或%)")
// @Excel(name = "允许货物亏损(吨或%)", width = 15)
// private BigDecimal allowableLoss=BigDecimal.ZERO;
/**超出亏损扣除金额(元/吨)*/
// @ApiModelProperty(value = "超出亏损扣除金额(元/吨)")
// @Excel(name = "超出亏损扣除金额(元/吨)", width = 15)
// private BigDecimal lossDeductionAmount=BigDecimal.ZERO;
// @ApiModelProperty(value = "上游客户id")
// @Excel(name = "上游客户id", width = 15)
// private String upClientId;
// @ApiModelProperty(value = "运费抹零 0-不抹零 ,1-抹零小数位,2-抹零个位,3-抹零十位")
// private Integer isFreightNullification ;
@ApiModelProperty(value = "加油宝计算模式 0-按比例 1-按数值")
private Integer oilValue ;
// @ApiModelProperty(value = "是否允许接多单:0否 1是")
// private Integer isMultipleOrdersAllowed;
@ApiModelProperty(value = "发货备注")
private String shippingNote;
// @ApiModelProperty(value = "涨吨是否计算费用 0-否 1-是 ")
// private Integer isTonnageIncreaseCharge;
@ApiModelProperty(value = "装货地经度")
private String loadingLongitude;
@ApiModelProperty(value = "装货地纬度")
private String loadingLatitude;
@ApiModelProperty(value = "卸货地经度")
private String unloadLongitude;
@ApiModelProperty(value = "卸货地纬度")
private String unloadLatitude;
@ApiModelProperty(value = "预设竞标价")
@Excel(name = "预设竞标价", width = 15)
private BigDecimal highestPrice;
@ApiModelProperty(value = "预设竞标价")
private BigDecimal presetPrice;
@ApiModelProperty(value = "竞价单位(元/车,元/吨)")
private String biddingUnit;
@ApiModelProperty(value = "竞价最高可输入价格")
@Excel(name = "竞价最高可输入价格", width = 15)
private BigDecimal maximumBidPrice;
@ApiModelProperty(value = "评标类型(0-自动评标,1-手动评标)")
private Integer bidEvaluationType = 1;
@ApiModelProperty("应收结算类型:1-月结,2-现结")
private Integer receivableType;
@ApiModelProperty(value = "货物数量")
private String goodsQuantity;
@ApiModelProperty(value = "货物数量单位code")
private String goodsQuantityUnitId;
@ApiModelProperty(value = "货物数量单位")
private String goodsQuantityUnit;
@ApiModelProperty("收款账户")
private String accountName;
@ApiModelProperty("收款账户信息")
private String accountInformation;
// @ApiModelProperty("项目表ID")
// private Long projectManagementId;
// @ApiModelProperty(value = "服务费率")
// private BigDecimal serviceRate;
@ApiModelProperty("是否自动生成协议 0-否 1-是")
@Excel(name = "是否自动生成协议 0-否 1-是")
private Integer isAutoGenerateProtocol;
// @ApiModelProperty(value = "单车总费用")
// @Excel(name = "单车总费用", width = 15)
// private BigDecimal freightGross = BigDecimal.ZERO;
// @ApiModelProperty(value = "协议费用:回单付金额")
// @Excel(name = "协议费用:回单付金额", width = 15)
// private BigDecimal receiptPaymentAmount = BigDecimal.ZERO;
//
// @ApiModelProperty(value = "协议费用:预付现金金额")
// @Excel(name = "协议费用:预付现金金额", width = 15)
// private BigDecimal cashAdvance = BigDecimal.ZERO;
//
// @ApiModelProperty(value = "协议费用:到付运费金额")
// @Excel(name = "协议费用:到付运费金额", width = 15)
// private BigDecimal freightAmount = BigDecimal.ZERO;
//
// @ApiModelProperty(value = "协议费用:预付平台油卡金额")
// @Excel(name = "协议费用:预付平台油卡金额", width = 15)
// private BigDecimal oilCardOnline = BigDecimal.ZERO;
// @ApiModelProperty(value = "单车重量", required = true)
// private BigDecimal singleVehicleWeight;
//=================批量货派单相关=============================
// @ApiModelProperty(value = "需求车次")
// private Integer demandTrainNumber;
// @ApiModelProperty(value = "承运车次默认0")
// private Integer carriageNumber;
// @ApiModelProperty(value = "剩余需求车次")
// private Integer remainingDemandTrainNumber;
/**货物重量*/
// @ApiModelProperty(value = "货物重量")
// private BigDecimal goodsWeight;
// @ApiModelProperty(value = "货源剩余货物数量")
// private BigDecimal residueGoodsWeight;
// @ApiModelProperty(value = "承运货物数量")
// private BigDecimal transportGoodsWeight;
@ApiModelProperty(value = "货物信息表")
private List<TmsCargoInfoDTO> cargoInfoList;
@ApiModelProperty(value = "装货地址集合")
private List<TmsAddressMultiDTO> loadingAddressList;
@ApiModelProperty(value = "卸货地址集合")
private List<TmsAddressMultiDTO> unloadAddressList;
@ApiModelProperty("费用科目明细")
private List<TmsOrderAccount> tmsOrderAccountList;
// @ApiModelProperty(value = "来源系统")
// private String orderSource;
//========================================新增字段==========================================
@ApiModelProperty(value = "付款方类型(0-委托方,1-收货方)")
@Excel(name = "付款方类型(0-委托方,1-收货方)", width = 15)
private Integer payerType;
@ApiModelProperty(value = "收货方编码")
private String recipientId;
@ApiModelProperty(value = "收货方")
private String recipientName;
@ApiModelProperty(value = "整机编号")
private String machineNumber;
@ApiModelProperty(value = "是否库存(0-是,1-否)")
@Excel(name = "是否库存(0-是,1-否)", width = 15)
private Integer stockFlag;
@ApiModelProperty(value = "信息费")
private BigDecimal infoFee;
@ApiModelProperty(value = "订单类型(1-普货运输,2-危化运输,3-罐车运输,4-济南专线,5-江西专线)")
private Integer orderShippingType;
@ApiModelProperty(value = "单号")
private String thirdPartyOrderNumber;
@ApiModelProperty(value = "车辆类型Id")
private String vehicleTypeId;
@ApiModelProperty(value = "车辆类型名称")
private String vehicleTypeName;
@ApiModelProperty(value = "承运人Id(订单为济南专线使用)")
private String carrier;
@ApiModelProperty(value = "承运人姓名(订单为济南专线使用)")
private String carrierName;
@ApiModelProperty("运费单价")
private BigDecimal freightUnitPrice;
@ApiModelProperty("数字物流平台用户id")
private Long szwlUserId;
@ApiModelProperty(value = "信息费收款方")
private String infoFeePayee;
@ApiModelProperty(value = "信息费收款方方式(0-委托方,1-收货方,2-第三方)")
private Integer infoFeePayeeType;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员ID")
private String salesmanName;
@ApiModelProperty("是否报关(0:否,1:是)")
private Integer isDeclare;
@ApiModelProperty("线路")
private String route;
@ApiModelProperty("柜类型")
private String containerType;
@ApiModelProperty("柜类型名称")
private String containerTypeName;
@ApiModelProperty("卡类型")
private String cardType;
@ApiModelProperty("卡类型名称")
private String cardTypeName;
@ApiModelProperty("外来柜号")
private String externalContainerNo;
@ApiModelProperty("中转地")
private String transitPlace;
@ApiModelProperty("托运人ID")
private String shipper;
@ApiModelProperty("托运人ID")
private String customsShipper;
@ApiModelProperty("托运人电话")
private String customsShipperTel;
@ApiModelProperty("卸货单位")
private String unloadingCompany;
@ApiModelProperty("合同编号")
private String contractNo;
@ApiModelProperty("运费")
private BigDecimal freightFee;
@ApiModelProperty("卸货费")
private BigDecimal unloadingFee;
@ApiModelProperty("报关费")
private BigDecimal customsFee;
@ApiModelProperty("差货费")
private BigDecimal shortageFee;
@ApiModelProperty("杂费")
private BigDecimal miscellaneousFee;
@ApiModelProperty("其他费用")
private BigDecimal otherFee;
@ApiModelProperty("滞车费")
private BigDecimal detentionFee;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("体积")
private BigDecimal volume;
@ApiModelProperty("内容详情")
private String detailContent;
@ApiModelProperty("报关线路")
private String customsRoute;
@ApiModelProperty("报关关口")
private String customsPort;
@ApiModelProperty("报关联系人")
private String customsContact;
@ApiModelProperty("报关联系人电话")
private String customsContactPhone;
@ApiModelProperty("报关备注")
private String customsRemark;
@ApiModelProperty(value = "组织ID")
private String orgId;
@ApiModelProperty(value = "所属组织")
@Excel(name = "所属组织", width = 15)
private String orgName;
@ApiModelProperty(value = "组织ID")
private Long organizationId;
@ApiModelProperty(value = "组织名称")
private String organizationName;
@ApiModelProperty(value = "上级组织ID")
private Long topOrganizationId;
@ApiModelProperty("客户编码nc")
private String customerCodeNc;
@ApiModelProperty("制单人编码nc")
private String makerCodeNc;
@ApiModelProperty("业务员编码nc")
private String salesmanCodeNc;
@ApiModelProperty(value = "单据日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date documentDate;
@ApiModelProperty("收款账户id")
private String paymentAccountId;
@ApiModelProperty("执行单id")
private String executeOrderId;
@ApiModelProperty("执行单号")
private String executeOrderNumber;
@ApiModelProperty("订单来源 0oms 1tms")
private String orderSource;
@ApiModelProperty("当前登录用户")
private LoginUser loginUser;
@ApiModelProperty("发票编号")
@Excel(name = "发票编号")
private String invoiceNumber;
@ApiModelProperty("订单号")
@Excel(name = "订单号")
private String goodsNumber;
@ApiModelProperty("业务主单")
@Excel(name = "业务主单")
private String businessMainOrder;
}
@@ -40,17 +40,4 @@ public class UserDTO extends BaseVOEntity {
@ApiModelProperty(name = "用户角色") @ApiModelProperty(name = "用户角色")
private String userRole; private String userRole;
@ApiModelProperty("路线id")
private String lineManagementId;
@ApiModelProperty("路线编码")
private String routeCode;
@ApiModelProperty("路线名称")
private String routeName;
@ApiModelProperty("配送顺序")
private String deliveryOrder;
} }
@@ -1,293 +0,0 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class UserShipperEntityFeign extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
@ApiModelProperty(name = "用户主表ID")
private Long shipperId;
@ApiModelProperty(name = "用户主表ID")
private Long userId;
@ApiModelProperty(name = "上级货主表ID")
private Long parentShipperId;
@ApiModelProperty(name = "货主类型:0-无状态,1-个人,2-企业,3-个体工商户,4-企业员工")
private Integer shipperType;
@ApiModelProperty(name = "货主类别:1-普通客户 2-月结客户")
private Integer shipperCategory;
@ApiModelProperty(name = "企业名称")
private String shipperEnterpriseName;
@ApiModelProperty(name = "企业统一社会信用代码")
private String shipperEnterpriseSocialCreditCode;
@ApiModelProperty(name = "企业注册电话")
private String shipperEnterprisePhone;
@ApiModelProperty(name = "企业注册地址")
private String shipperEnterpriseAddress;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "企业营业期限起")
private Date shipperEnterpriseLicenseDateFrom;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "企业营业期限止")
private Date shipperEnterpriseLicenseDateTo;
@ApiModelProperty(name = "纳税人资质")
private String shipperEnterpriseTaxpayer;
@ApiModelProperty(name = "企业营业执照是否长期:0-无状态,1-是,2-否")
private Integer shipperEnterpriseLicenseLong;
@ApiModelProperty(name = "营业执照照片")
private String shipperEnterpriseLicenseFrontUrl;
@ApiModelProperty(name = "是否法人:0-无状态,1-是,2-否")
private Integer shipperCorp;
/**
* 法人姓名
*/
@ApiModelProperty(name = "法人姓名")
private String shipperCorpName;
/** 企业法人姓名 */
@ApiModelProperty("企业法人姓名")
@Excel(name = "企业法人姓名")
private String shipperCorpLegalName;
@ApiModelProperty(name = "法人身份证号")
private String shipperCorpIdcardNumber;
@ApiModelProperty(name = "法人身份证号加密")
private String shipperCorpIdcardNumberDes;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "法人身份证有效期自")
private Date shipperCorpIdcardDateFrom;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "法人身份证有效期止")
private Date shipperCorpIdcardDateTo;
@ApiModelProperty(name = "法人身份证是否长期:0-无状态,1-是,2-否")
private Integer shipperCorpIdcardLong;
@ApiModelProperty(name = "法人身份证正面照片")
private String shipperCorpIdcardFrontUrl;
@ApiModelProperty(name = "法人身份证反面照片")
private String shipperCorpIdcardBackUrl;
@ApiModelProperty(name = "法人身份证手持照片")
private String shipperCorpIdcardInhandUrl;
@ApiModelProperty(name = "托运人个体货主认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效")
private Integer shipperFill;
@ApiModelProperty(name = "托运人个人认证时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date shipperFillTime;
@ApiModelProperty(name = "托运人个体货主审核人员id")
private Long shipperFillAuthId;
@ApiModelProperty(name = "托运人个体货主审核人员")
private String shipperFillAuthName;
@ApiModelProperty(name = "托运人个体货主审核原因")
private String shipperFillRemark;
@ApiModelProperty(name = "托运人发货企业认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效")
private Integer shipperEnterpriseFill;
@ApiModelProperty(name = "托运人发货企业认证时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date shipperEnterpriseFillTime;
@ApiModelProperty(name = "托运人发货企业审核人员id")
private Long shipperEnterpriselAuthId;
@ApiModelProperty(name = "托运人发货企业审核人员")
private String shipperEnterpriselAuthName;
@ApiModelProperty(name = "托运人发货企业审核原因")
private String shipperEnterpriseFillRemark;
@ApiModelProperty(name = "纳税人识别号")
private String taxpayerNumber;
@ApiModelProperty(name = "托运人发货企业审核原因")
private String taxpayerQualification;
@ApiModelProperty(name = "营业执照过期日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date businessLicenseDate;
@ApiModelProperty(value = "所在地区省市县名称")
private String area;
@ApiModelProperty(name = "所在地区县区编码")
private String areaId;
@ApiModelProperty(name = "详细地址")
private String detailAddress;
@ApiModelProperty(name = "行业")
private String trade;
@ApiModelProperty(name = "经营范围")
private String businessScope;
@ApiModelProperty(name = "营业期限")
private String businessTerm;
@ApiModelProperty(name = "注册地址")
private String regAddress;
@ApiModelProperty(name = "注册资本")
private String capital;
@ApiModelProperty(name = "成立日期")
private String establishDate;
@ApiModelProperty(name = "账号标识,创建后账号在e签宝平台中的唯一标识(认证授权ID-保留最新)")
private String companyAccountId ;
@ApiModelProperty(name = "用户电子签章(机构认证授权长连接)")
private String companyTemplateSeal;
@ApiModelProperty(name = "月结标识 1-是 2-否")
private Integer monthlySettlementFlag;
@ApiModelProperty(name = "货源单自动审核(1-是 2-否)")
private Integer isAutoAuditOrder;
@ApiModelProperty(name = "回单原件标记(1-需要,2-不需要)")
private Integer originalReceiptFlag;
@ApiModelProperty(name = "运费节点(0-无要求,1-确认回单,2-纸质回单)")
private Integer freightNode;
@ApiModelProperty(name = "e签宝授权认证状态(0-未授权,1-授权中,2-授权完成,3-授权失败)")
private Integer esignAuthStatus;
@ApiModelProperty(name = "e签宝跨企业授权状态(0-未授权,1-授权中,2-授权完成,3-授权失败)")
private Integer esignEnterpriseStatus;
@ApiModelProperty(name = "e签宝跨企业授权业务流程编号")
private String esignSealAuthId;
@ApiModelProperty(value = "授权额度")
private BigDecimal authorizedQuota;
@ApiModelProperty(value = "结算天数")
private Integer settlementDay;
@ApiModelProperty(value = "已使用额度")
private BigDecimal authorizedUsedAmount;
private String remark;
@ApiModelProperty(name = "数据来源:1-接口同步 2-人工新增")
private Integer dataSource;
@ApiModelProperty(name = "客户nc编码")
private String customerNcCode;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("职务/角色权限字符,控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)")
private String roleCode;
@ApiModelProperty("货主/供应商/客户编码")
private String userMemberCode;
@ApiModelProperty("货主/供应商/客户名称")
private String userNameShipper;
@ApiModelProperty("联系人")
private String emergencyContactName;
@ApiModelProperty("联系电话")
private String emergencyContactPhone;
@ApiModelProperty("省市区编码,6位")
private Long userAreaCountyId;
@ApiModelProperty("省事区名称")
private String userAreaName;
@ApiModelProperty("详细地址")
private String userAreaAddress;
@ApiModelProperty("法人代表")
private String legalRepresentative;
@ApiModelProperty("统一编码")
private String unifiedCode;
@ApiModelProperty("注册电话")
private String registeredPhone;
@ApiModelProperty("注册地址")
private String registeredAddress;
@ApiModelProperty("传真")
private String fax;
@ApiModelProperty("付款银行")
private String paymentBank;
@ApiModelProperty("付款账户")
private String paymentAccount;
@ApiModelProperty("发票抬头")
private String invoiceTitle;
@ApiModelProperty("税号")
private String taxNumber;
@ApiModelProperty(name = "邮箱")
private String userEmail;
@ApiModelProperty(name = "备注")
private String userRemark;
@ApiModelProperty(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty(name = "组织表ID")
private Long organizationId;
@ApiModelProperty(name = "组织名称")
private String organizationName;
@ApiModelProperty(name = "推送状态 1-未推送 2-推送中 3-推送成功 4-推送失败")
private Integer pushStatus;
@ApiModelProperty(name = "推送时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date pushTime;
@ApiModelProperty(name = "推送人")
private Long pushBy;
@ApiModelProperty(name = "推送人姓名")
private String pushByName;
@ApiModelProperty(name = "额度同步时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date limitTime;
@ApiModelProperty(name = "信用余额")
private BigDecimal creditAmount;
@ApiModelProperty("协议数量")
private Integer agreementCount;
@ApiModelProperty(name = "是否校验信用")
private String isCheckCredit;
}
@@ -1,270 +0,0 @@
package com.mhd.system.api.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.annotation.fieldsetvalue.NeedSetValue;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class UserShipperFeignDTO extends UserDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty(name = "角色表ID集合")
private List<Long> roleIds;
@ApiModelProperty(name = "货主表ID")
private Long shipperId;
@ApiModelProperty(name = "用户主表ID")
private Long userId;
@ApiModelProperty(name = "上级货主表ID")
private Long parentShipperId;
@ApiModelProperty(name = "货主类型:0-无状态,1-个人,2-企业")
private Integer shipperType;
@ApiModelProperty(name = "货主类别:1-普通客户 2-月结客户")
private Integer shipperCategory;
@ApiModelProperty(name = "企业名称")
private String shipperEnterpriseName;
@ApiModelProperty(name = "企业统一社会信用代码")
private String shipperEnterpriseSocialCreditCode;
@ApiModelProperty(name = "企业注册电话")
private String shipperEnterprisePhone;
@ApiModelProperty(name = "企业注册地址")
private String shipperEnterpriseAddress;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "企业营业期限起")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date shipperEnterpriseLicenseDateFrom;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "企业营业期限止")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date shipperEnterpriseLicenseDateTo;
@ApiModelProperty(name = "企业营业执照是否长期:0-无状态,1-是,2-否")
private Integer shipperEnterpriseLicenseLong;
@ApiModelProperty(name = "纳税人资质")
private String shipperEnterpriseTaxpayer;
@ApiModelProperty(name = "营业执照照片")
@NeedSetValue
private String shipperEnterpriseLicenseFrontUrl;
@ApiModelProperty(name = "是否法人:0-无状态,1-是,2-否")
private Integer shipperCorp;
/**
* 法人姓名
*/
@ApiModelProperty(name = "法人姓名")
private String shipperCorpName;
/** 企业法人姓名 */
@ApiModelProperty("企业法人姓名")
@Excel(name = "企业法人姓名")
private String shipperCorpLegalName;
@ApiModelProperty(name = "法人身份证号")
private String shipperCorpIdcardNumber;
@ApiModelProperty(name = "法人身份证号加密")
private String shipperCorpIdcardNumberDes;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "法人身份证有效期自")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date shipperCorpIdcardDateFrom;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty(name = "法人身份证有效期止")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date shipperCorpIdcardDateTo;
@ApiModelProperty(name = "法人身份证是否长期:0-无状态,1-是,2-否")
private Integer shipperCorpIdcardLong;
@ApiModelProperty(name = "法人身份证正面照片")
@NeedSetValue
private String shipperCorpIdcardFrontUrl;
@ApiModelProperty(name = "法人身份证反面照片")
@NeedSetValue
private String shipperCorpIdcardBackUrl;
@ApiModelProperty(name = "法人身份证手持照片")
@NeedSetValue
private String shipperCorpIdcardInhandUrl;
@ApiModelProperty(name = "货主审核状态:0-无状态,1-未认证,2-待审核,3-已通过,4-已驳回")
private Integer shipperAuthStatus;
@ApiModelProperty(name = "货主审核人用户姓名")
private String shipperAuthByUsername;
@ApiModelProperty(name = "货主审核时间")
private Date shipperAuthTime;
@ApiModelProperty(name = "货主审核原因")
private String shipperStatusRemark;
@ApiModelProperty(value = "创建时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeFrom;
@ApiModelProperty(value = "创建时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
@ApiModelProperty(name = "审核角色:1-个人托运人,2-企业托运人")
private Integer authType;
@ApiModelProperty(name = "新增托运人步骤(1-用户注册,2-提交认证资料,3-认证结果)")
private Integer stepFlag;
@ApiModelProperty(name = "纳税人识别号")
private String taxpayerNumber;
@ApiModelProperty(name = "托运人发货企业审核原因")
private String taxpayerQualification;
@ApiModelProperty(name = "营业执照过期日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date businessLicenseDate;
@ApiModelProperty(value = "所在地区省市县名称")
private String area;
@ApiModelProperty(name = "所在地区县区编码")
private String areaId;
@ApiModelProperty(name = "详细地址")
private String detailAddress;
@ApiModelProperty(name = "行业")
private String trade;
@ApiModelProperty(name = "经营范围")
private String businessScope;
@ApiModelProperty(name = "营业期限")
private String businessTerm;
@ApiModelProperty(name = "注册地址")
private String regAddress;
@ApiModelProperty(name = "注册资本")
private String capital;
@ApiModelProperty(name = "成立日期")
private String establishDate;
@ApiModelProperty(name = "账号标识,创建后账号在e签宝平台中的唯一标识")
private String companyAccountId ;
@ApiModelProperty(name = "用户电子签章")
private String companyTemplateSeal;
@ApiModelProperty(name = "月结标识 1-是 2-否")
private Integer monthlySettlementFlag;
@ApiModelProperty(name = "总授信额度")
private BigDecimal totalLimit;
@ApiModelProperty(name = "货源单自动审核(1-是 2-否)")
private Integer isAutoAuditOrder;
@ApiModelProperty(name = "托运人个体货主认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效")
private Integer shipperFill;
@ApiModelProperty(name = "托运人发货企业认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效")
private Integer shipperEnterpriseFill;
@ApiModelProperty(name = "回单原件标记(1-需要,2-不需要)")
private Integer originalReceiptFlag;
@ApiModelProperty(name = "运费节点(0-无要求,1-确认回单,2-纸质回单)")
private Integer freightNode;
@ApiModelProperty(name = "用户主表ID集合")
private List<Long> userIdList;
@ApiModelProperty(name = "备注信息")
private String remark;
@ApiModelProperty(name = "数据来源:1-接口同步 2-人工新增")
private Integer dataSource;
@ApiModelProperty("客户nc编码")
private String customerNcCode;
@ApiModelProperty("客户nc编码列表")
private List<UserShipperEntityFeign> customerNcCodeList;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("货主/供应商/客户编码")
private String userMemberCode;
@ApiModelProperty("货主/供应商/客户名称")
private String userNameShipper;
@ApiModelProperty("法人代表")
private String legalRepresentative;
@ApiModelProperty("统一编码")
private String unifiedCode;
@ApiModelProperty("注册电话")
private String registeredPhone;
@ApiModelProperty("注册地址")
private String registeredAddress;
@ApiModelProperty(name = "邮箱")
private String userEmail;
@ApiModelProperty("传真")
private String fax;
@ApiModelProperty("付款银行")
private String paymentBank;
@ApiModelProperty("付款账户")
private String paymentAccount;
@ApiModelProperty("发票抬头")
private String invoiceTitle;
@ApiModelProperty("税号")
private String taxNumber;
@ApiModelProperty(value = "更新时间起")
private String updateTimeFrom;
@ApiModelProperty(value = "更新时间止")
private String updateTimeTo;
@ApiModelProperty(value = "推送时间起")
private String pushTimeFrom;
@ApiModelProperty(value = "推送时间止")
private String pushTimeTo;
@ApiModelProperty(value = "推送状态")
private Integer pushStatus;
@ApiModelProperty(name = "登录账号(2-20位)")
private String userAccount;
@ApiModelProperty(name = "登录密码(6-20位)")
private String userPassword;
@ApiModelProperty(name = "是否校验信用")
private String isCheckCredit;
}
@@ -1,52 +0,0 @@
package com.mhd.system.api.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserShipperQueryDTO {
@ApiModelProperty(value = "页码")
private Integer pageNum = 1;
@ApiModelProperty(value = "每页数量")
private Integer pageSize = 10;
@ApiModelProperty(value = "登录账号")
private String userAccount;
@ApiModelProperty(value = "企业名称")
private String shipperEnterpriseName;
@ApiModelProperty(value = "组织ID")
private String organizationId;
@ApiModelProperty(value = "组织名称")
private String organizationName;
@ApiModelProperty(value = "创建时间起")
private String createTimeFrom;
@ApiModelProperty(value = "创建时间止")
private String createTimeTo;
@ApiModelProperty(value = "更新时间起")
private String updateTimeFrom;
@ApiModelProperty(value = "更新时间止")
private String updateTimeTo;
@ApiModelProperty(value = "货主类型")
private String shipperType;
@ApiModelProperty(value = "推送状态")
private Integer pushStatus;
@ApiModelProperty(value = "推送时间起")
private String pushTimeFrom;
@ApiModelProperty(value = "推送时间止")
private String pushTimeTo;
}
@@ -42,10 +42,10 @@ public class UserUpdateDTO extends BaseVOEntity {
private String userIdcardNumber; private String userIdcardNumber;
@ApiModelProperty(name = "身份证号加密") @ApiModelProperty(name = "身份证号加密")
private String userIdcardNumberDes; private String userIdcardNumberDes;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "身份证有效期自") @ApiModelProperty(name = "身份证有效期自")
private Date userIdcardDateFrom; private Date userIdcardDateFrom;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "身份证有效期至") @ApiModelProperty(name = "身份证有效期至")
private Date userIdcardDateTo; private Date userIdcardDateTo;
@ApiModelProperty(name = "身份证是否长期:0-无状态,1-是,2-否") @ApiModelProperty(name = "身份证是否长期:0-无状态,1-是,2-否")
@@ -76,7 +76,7 @@ public class UserUpdateDTO extends BaseVOEntity {
private String userWechatSessionKey; private String userWechatSessionKey;
@ApiModelProperty(name = "密码登录错误次数") @ApiModelProperty(name = "密码登录错误次数")
private Integer passwordWrongTimes; private Integer passwordWrongTimes;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(name = "最近一次登录时间") @ApiModelProperty(name = "最近一次登录时间")
private Date lastLoginTime; private Date lastLoginTime;
@ApiModelProperty(name = "最近一次登录IP") @ApiModelProperty(name = "最近一次登录IP")
@@ -89,15 +89,15 @@ public class UserUpdateDTO extends BaseVOEntity {
private int userAuthStatus; private int userAuthStatus;
@ApiModelProperty(name = "用户审核人用户姓名") @ApiModelProperty(name = "用户审核人用户姓名")
private String userAuthByUsername; private String userAuthByUsername;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "用户审核时间") @ApiModelProperty(name = "用户审核时间")
private Date userAuthTime; private Date userAuthTime;
@ApiModelProperty(name = "加入黑名单备注(解除时需要清空)") @ApiModelProperty(name = "加入黑名单备注(解除时需要清空)")
private String userStatusRemark; private String userStatusRemark;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "用户状态更新时间") @ApiModelProperty(name = "用户状态更新时间")
private Date userStatusTime; private Date userStatusTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "用户生日") @ApiModelProperty(name = "用户生日")
private Date userBirthday; private Date userBirthday;
@ApiModelProperty(name = "用户住址信息") @ApiModelProperty(name = "用户住址信息")
@@ -122,4 +122,4 @@ public class UserUpdateDTO extends BaseVOEntity {
@ApiModelProperty(name = "请求域名") @ApiModelProperty(name = "请求域名")
private String tenantsDomainName; private String tenantsDomainName;
} }
@@ -116,28 +116,6 @@ public class WarehouseFeignPO extends BaseVOEntity{
@Excel(name = "是否作废: 1-否 2-是") @Excel(name = "是否作废: 1-否 2-是")
private Integer nullify; private Integer nullify;
@ApiModelProperty("任务模式")
@Excel(name = "任务模式")
private String taskMode;
@ApiModelProperty("作业模式")
@Excel(name = "作业模式")
private String workMode;
@ApiModelProperty("订单号生成规则(0-日期累加 1-历史累加)") }
@Excel(name = "单号生成规则")
private String orderNoGenerateRule;
@ApiModelProperty("入库单号首字母前缀")
@Excel(name = "入库单号首字母前缀")
private String inOrderNoPrefix;
@ApiModelProperty("出库单号首字母前缀")
@Excel(name = "出库单号首字母前缀")
private String outOrderNoPrefix;
@ApiModelProperty("样品出库单号首字母前缀")
@Excel(name = "样品出库单号首字母前缀")
private String sampleOutOrderNoPrefix;
}
@@ -1,30 +0,0 @@
package com.mhd.system.api.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 仓库联动树节点Feign侧
* 镜像system端WarehouseLinkagePO/StorageSectionLinkagePO/StorageLocationLinkagePO三级结构仓库库区库位
*
* @author rcx
* @date 2026-08-22
*/
@Data
public class WarehouseLinkageFeignPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 仓库id / 库区id(storageSectionId) / 库位id(storageLocationId) */
private Long id;
/** warehouseCode / storageCode / storageLocationCode */
private String code;
/** warehouseName / storageName / storageLocationName */
private String name;
/** 下级节点:仓库下为库区列表,库区下为库位列表,库位无children */
private List<WarehouseLinkageFeignPO> children;
}
@@ -1,63 +0,0 @@
package com.mhd.system.api.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* YMS登录用户信息
* @author AI
* @date 2026/05/13
*/
@Data
public class YmsLoginUser {
//登录人id
private Long id;
//登录人账号
private String username;
//登录人名字
private String nickName;
//登录人密码
private String password;
//当前登录部门code
private String orgCode;
//头像
private String avatar;
//性别0男 1女 2未知
private String sex;
//电子邮件
private String email;
//电话
private String phonenumber;
//状态(0正常 1停用
private String status;
//删除标志0代表存在 2代表删除
private String delFlag;
//最后登录IP
private String loginIp;
//最后登录时间
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date loginDate;
//创建时间
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//数字物流用户ID
private Long szwlUserId;
//一级组织表ID
private Long topOrganizationId;
//组织表ID
private Long organizationId;
//角色code集合
private String roleCodes;
//角色名称集合
private String roleNames;
//推广码
private String promoCode;
//账号类型 1.普通账号2.组织账号3.一级账号4.平台员工5.企业员工6.合作商
private Integer userAccountType;
}
@@ -6,7 +6,6 @@ import com.mhd.common.core.domain.po.OrganizationPo;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.BmsServiceFeign; import com.mhd.system.api.BmsServiceFeign;
import com.mhd.system.api.ProductServiceFeign; import com.mhd.system.api.ProductServiceFeign;
import com.mhd.system.api.domain.BusinessDocumentFeign;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
@@ -43,11 +42,6 @@ public class RemoteBmsFeignFallbackFactory implements FallbackFactory<BmsService
return AjaxResult.error(throwable.getMessage()); return AjaxResult.error(throwable.getMessage());
} }
@Override
public AjaxResult getCustomersInfoBySettlementEntityId(Long settlementEntityId, Long topOrganizationId) {
return AjaxResult.error(throwable.getMessage());
}
@Override @Override
public AjaxResult pushSyncData(BusinessDataPushDTO businessDataPushDTO) { public AjaxResult pushSyncData(BusinessDataPushDTO businessDataPushDTO) {
return AjaxResult.error(throwable.getMessage()); return AjaxResult.error(throwable.getMessage());
@@ -57,31 +51,6 @@ public class RemoteBmsFeignFallbackFactory implements FallbackFactory<BmsService
public AjaxResult getDocumentInfoByCodeSet(Set<String> documentTypeCodeSet) { public AjaxResult getDocumentInfoByCodeSet(Set<String> documentTypeCodeSet) {
return AjaxResult.error(throwable.getMessage()); return AjaxResult.error(throwable.getMessage());
} }
@Override
public AjaxResult businessDocumentApiSave(BusinessDataPushDTO businessDataPushDTO) {
return AjaxResult.error(throwable.getMessage());
}
@Override
public AjaxResult wholeRentSynchronizationZXF(BusinessDataPushDTO businessDataPushDTO) {
return null;
}
@Override
public AjaxResult feignSaveBusinessDocument(BusinessDocumentFeign businessDocumentFeign) {
return AjaxResult.error("保存业务单据失败");
}
@Override
public AjaxResult getListBySettlementCustomersId(Long settlementCustomersId) {
return AjaxResult.error(throwable.getMessage());
}
@Override
public AjaxResult updatePushContractManageJobId(Long settlementCustomersId, Integer jobId) {
return AjaxResult.error(throwable.getMessage());
}
}; };
} }
} }
@@ -1,105 +0,0 @@
package com.mhd.system.api.factory;
import com.mhd.common.core.domain.dto.BusinessDataPushDTO;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.BmsServiceFeign;
import com.mhd.system.api.OmsServiceFeign;
import com.mhd.system.api.domain.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
/**
* @Description
* @Author zg
* @Version 1.0
* @Date 2023/11/3 14:37
*/
@Component
public class RemoteOmsFeignFallbackFactory implements FallbackFactory<OmsServiceFeign> {
private static final Logger log = LoggerFactory.getLogger(RemoteOmsFeignFallbackFactory.class);
@Override
public OmsServiceFeign create(Throwable throwable) {
log.error("系统服务调用失败:{}", throwable.getMessage());
return new OmsServiceFeign() {
@Override
public AjaxResult pushInOrder(StockInOrderTZPD stockInOrder) {
return null;
}
@Override
public AjaxResult pushInOrderDetail(InMaterialDetailTZPD inMaterialDetail) {
return null;
}
@Override
public AjaxResult returnInResult(String orderNumber, Long status, String type) {
return null;
}
@Override
public AjaxResult pushOutOrder(StockOutOrderTZPD stockOutOrder) {
return null;
}
@Override
public AjaxResult pushOutOrderDetail(OutMaterialDetailTZPD outMaterialDetail) {
return null;
}
@Override
public CompletableFuture<Void> omsEdit(MaterialInventoryOmsParamDO materialInventoryOmsParamDO) {
return null;
}
// @Override
// public AjaxResult inventoryAdjustmentRecordInsert(InventoryAdjustmentRecord inventoryAdjustmentRecord) {
// return null;
// }
@Override
public AjaxResult getUnitList(ErpEnterpriseUnitDTO erpEnterpriseUnitDTO) {
return null;
}
@Override
public AjaxResult getCountryList(ErpCountryDTO erpCountryDTO) {
return null;
}
@Override
public AjaxResult insertGwLog(GwLogDTO gwLogDTO) {
return null;
}
@Override
public AjaxResult updateGwLog(GwLogDTO gwLogDTO) {
return null;
}
@Override
public AjaxResult batchPush(List<Long> idList) {
return null;
}
@Override
public AjaxResult batchPushByNumber(List<String> numberList) {
return null;
}
@Override
public AjaxResult saveSignature(ElectronicSignatureSyncDTO saveDTO) {
return null;
}
};
}
}
@@ -13,8 +13,6 @@ import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.AssociationWarehouseFeign; import com.mhd.system.api.AssociationWarehouseFeign;
import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.domain.ContainerFeignPO; import com.mhd.system.api.domain.ContainerFeignPO;
import com.mhd.system.api.domain.ContractManageFeignDTO;
import com.mhd.system.api.domain.ContractManageParametersFeign;
import com.mhd.system.api.domain.SysDictData; import com.mhd.system.api.domain.SysDictData;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -22,7 +20,6 @@ import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
@@ -157,11 +154,6 @@ public class RemoteSystemFeignFallbackFactory implements FallbackFactory<SystemS
return AjaxResult.error("根据批次ID获取批次信息失败"); return AjaxResult.error("根据批次ID获取批次信息失败");
} }
@Override
public Object getBatchListByName(String batchName, Long organizationId) {
return AjaxResult.error("根据批次名称查询批次列表失败");
}
@Override @Override
public AjaxResult getBatchDetailListByBatchId(Long batchId) { public AjaxResult getBatchDetailListByBatchId(Long batchId) {
return AjaxResult.error("根据batchId获取对应批次详情信息失败"); return AjaxResult.error("根据batchId获取对应批次详情信息失败");
@@ -177,21 +169,11 @@ public class RemoteSystemFeignFallbackFactory implements FallbackFactory<SystemS
return AjaxResult.error("获取用户当前设置的仓库失败"); return AjaxResult.error("获取用户当前设置的仓库失败");
} }
@Override
public AjaxResult getWarehouseInfoFromDb(Long correlationId) {
return AjaxResult.error("从数据库获取用户当前设置的仓库失败");
}
@Override @Override
public AjaxResult getWarehouseInfoByWarehouseId(@PathVariable("warehouseId") Long warehouseId) { public AjaxResult getWarehouseInfoByWarehouseId(@PathVariable("warehouseId") Long warehouseId) {
return AjaxResult.error("根据仓库ID获取仓库信息失败"); return AjaxResult.error("根据仓库ID获取仓库信息失败");
} }
@Override
public AjaxResult getWarehouseChildren(@RequestParam("warehouseId") Long warehouseId) {
return AjaxResult.error("根据仓库ID获取仓库及下库区及库位树失败");
}
@Override @Override
public AjaxResult getStorageSectionInfoByStorageSectionId(@PathVariable("storageSectionId") Long storageSectionId) { public AjaxResult getStorageSectionInfoByStorageSectionId(@PathVariable("storageSectionId") Long storageSectionId) {
return AjaxResult.error("根据库区ID获取库区信息失败"); return AjaxResult.error("根据库区ID获取库区信息失败");
@@ -212,11 +194,6 @@ public class RemoteSystemFeignFallbackFactory implements FallbackFactory<SystemS
return AjaxResult.error("根据包装ID和单位编码获取信息失败"); return AjaxResult.error("根据包装ID和单位编码获取信息失败");
} }
@Override
public Object getPackList(String packCode, String packName, Long organizationId) {
return AjaxResult.error("根据包装编码/名称查询包装列表失败");
}
@Override @Override
public AjaxResult getPlatformInfoByPlatformId(Long platformId) { public AjaxResult getPlatformInfoByPlatformId(Long platformId) {
return AjaxResult.error("根据platformId获取对应月台信息失败"); return AjaxResult.error("根据platformId获取对应月台信息失败");
@@ -252,11 +229,6 @@ public class RemoteSystemFeignFallbackFactory implements FallbackFactory<SystemS
return AjaxResult.error("获取科目信息失败" + throwable.getMessage()); return AjaxResult.error("获取科目信息失败" + throwable.getMessage());
} }
@Override
public AjaxResult getSubInfoByCode2(String subjectCode, Long topOrganizationId) {
return AjaxResult.error("获取科目信息失败" + throwable.getMessage());
}
@Override @Override
public AjaxResult getProjectByCode(String projectCode) { public AjaxResult getProjectByCode(String projectCode) {
return AjaxResult.error("获取项目信息失败" + throwable.getMessage()); return AjaxResult.error("获取项目信息失败" + throwable.getMessage());
@@ -282,54 +254,15 @@ public class RemoteSystemFeignFallbackFactory implements FallbackFactory<SystemS
return AjaxResult.error("查询失败"); return AjaxResult.error("查询失败");
} }
@Override
public AjaxResult getGeneralContract() {
return AjaxResult.error("查询失败");
}
@Override @Override
public AjaxResult getInfoByCustomer(String settlementCustomersCode, Integer contractType) { public AjaxResult getInfoByCustomer(String settlementCustomersCode, Integer contractType) {
return AjaxResult.error("查询失败"); return AjaxResult.error("查询失败");
} }
@Override
public AjaxResult getInfoByCustomerAndSecondSubjectCode(String settlementCustomersCode, Integer contractType, String firstSubjectCode, Long topOrganizationId, Long organizationId) {
return null;
}
@Override
public AjaxResult getInfoByCustomer2(String settlementCustomersCode, Integer contractType, Long topOrganizationId) {
return AjaxResult.error("查询失败");
}
@Override
public AjaxResult getInfoByCustomerAndOrganizationId(String settlementCustomersCode, Integer contractType, Long topOrganizationId, Long organizationId) {
return null;
}
@Override @Override
public AjaxResult queryList() { public AjaxResult queryList() {
return AjaxResult.error("查询失败"); return AjaxResult.error("查询失败");
} }
@Override
public AjaxResult wholeRentSynchronization() {
return AjaxResult.error("查询失败");
}
@Override
public AjaxResult matchForMaterialImport(String keyword, Long organizationId) {
return AjaxResult.error("物料分类匹配失败");
}
@Override
public AjaxResult feignSave(ContractManageFeignDTO contractManageFeignDTO) {
return AjaxResult.error("新增合同失败");
}
@Override
public AjaxResult feignSaveContractParameters(ContractManageParametersFeign contractManageParametersFeign) {
return AjaxResult.error("保存合同参数失败");
}
}; };
} }
} }
@@ -5,11 +5,8 @@ import com.mhd.common.core.domain.dto.StatisticalMattersDTO;
import com.mhd.common.core.domain.dto.UserDataPermissionQueryDTO; import com.mhd.common.core.domain.dto.UserDataPermissionQueryDTO;
import com.mhd.common.core.domain.dto.UserDriverDTO; import com.mhd.common.core.domain.dto.UserDriverDTO;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.system.api.UserServiceFeign; import com.mhd.system.api.UserServiceFeign;
import com.mhd.system.api.domain.UserDTO; import com.mhd.system.api.domain.UserDTO;
import com.mhd.system.api.domain.UserShipperFeignDTO;
import com.mhd.system.api.domain.UserShipperQueryDTO;
import com.mhd.system.api.domain.UserUpdateDTO; import com.mhd.system.api.domain.UserUpdateDTO;
import com.mhd.system.api.model.LoginUser; import com.mhd.system.api.model.LoginUser;
import com.mhd.common.core.domain.entity.R; import com.mhd.common.core.domain.entity.R;
@@ -22,8 +19,6 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -140,11 +135,6 @@ public class RemoteUserFeignFallbackFactory implements FallbackFactory<UserServi
return AjaxResult.error("获取租户托运人失败"); return AjaxResult.error("获取租户托运人失败");
} }
@Override
public AjaxResult<?> userShipperListAllByOrg(Long orgCode) {
return null;
}
@Override @Override
public AjaxResult<?> userDriverListAll() { public AjaxResult<?> userDriverListAll() {
return AjaxResult.error("获取租户承运人失败"); return AjaxResult.error("获取租户承运人失败");
@@ -175,11 +165,6 @@ public class RemoteUserFeignFallbackFactory implements FallbackFactory<UserServi
return R.fail("获取组织用户失败:" + throwable.getMessage()); return R.fail("获取组织用户失败:" + throwable.getMessage());
} }
@Override
public R<LoginUser> getUserByUserAccount(String userAccount) {
return R.fail("获取用户失败:" + throwable.getMessage());
}
@Override @Override
public R<LoginUser> getUserByTopOrganizationUserPhone(@RequestBody UserDTO userDTO, String source) { public R<LoginUser> getUserByTopOrganizationUserPhone(@RequestBody UserDTO userDTO, String source) {
return R.fail("获取组织用户失败:" + throwable.getMessage()); return R.fail("获取组织用户失败:" + throwable.getMessage());
@@ -196,37 +181,6 @@ public class RemoteUserFeignFallbackFactory implements FallbackFactory<UserServi
public AjaxResult<?> getShipperByUserId(Long userId) { public AjaxResult<?> getShipperByUserId(Long userId) {
return AjaxResult.error("查询失败" + throwable.getMessage()); return AjaxResult.error("查询失败" + throwable.getMessage());
} }
@Override
public AjaxResult updateLineManagement(UserDTO userDTO) {
return AjaxResult.error("失败" + throwable.getMessage());
}
@Override
public TableDataInfo userShipperList(UserShipperQueryDTO userShipperQueryDTO) {
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setData(new ArrayList<>());
tableDataInfo.setTotal(0);
tableDataInfo.setCode(500);
tableDataInfo.setMsg("查询失败:" + throwable.getMessage());
return tableDataInfo;
}
@Override
public AjaxResult<?> updatePushStatus(Long shipperId, Integer pushStatus, String pushTime, Long pushBy, String pushByName, Long organizationId) {
return AjaxResult.error("更新失败" + throwable.getMessage());
}
@Override
public AjaxResult getCustomerNcCodeBatch(List<Long> shipperIdList) {
return AjaxResult.error("更新失败" + throwable.getMessage());
}
@Override
public AjaxResult querySaleCreditLimitFeign(UserShipperFeignDTO userShipperDTO) {
return null;
}
}; };
} }
} }
@@ -16,7 +16,6 @@ import com.mhd.common.core.utils.sms.Result;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.WlhyServiceFeign; import com.mhd.system.api.WlhyServiceFeign;
import com.mhd.system.api.domain.*; import com.mhd.system.api.domain.*;
import com.mhd.system.api.domain.TmsOrderAddDTO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
@@ -520,22 +519,6 @@ public class RemoteWlhyFallbackFactory implements FallbackFactory<WlhyServiceFei
return res; return res;
} }
@Override
public R<List<TmsMakeOutInvoice>> selectMakeOutInvoiceListByReconciliation(ReconciliationDTO reconciliationDTO) {
R<List<TmsMakeOutInvoice>> res = new R<>();
res.setMsg("查询失败"+cause.getMessage());
res.setCode(R.FAIL);
return res;
}
@Override
public R<List<TmsMakeOutInvoiceItem>> selectMakeOutInvoiceItemList(TmsMakeOutInvoice tmsMakeOutInvoice) {
R<List<TmsMakeOutInvoiceItem>> res = new R<>();
res.setMsg("查询失败"+cause.getMessage());
res.setCode(R.FAIL);
return res;
}
@Override @Override
public Result<?> queryById(String id) { public Result<?> queryById(String id) {
return null; return null;
@@ -550,16 +533,6 @@ public class RemoteWlhyFallbackFactory implements FallbackFactory<WlhyServiceFei
public AjaxResult cancelIssueDocuments(String executeOrderId) { public AjaxResult cancelIssueDocuments(String executeOrderId) {
return AjaxResult.error(cause.getMessage()); return AjaxResult.error(cause.getMessage());
} }
@Override
public AjaxResult<?> queryList(Integer pageNo, Integer pageSize, String pushStatus, String organizationId) {
return AjaxResult.error(cause.getMessage());
}
@Override
public void updateExchangeRatePushStatus(String id, Integer pushStatus, String pushTime, Long pushBy, String pushByName, String organization) {
}
}; };
} }
} }
@@ -2,18 +2,17 @@ package com.mhd.system.api.factory;
import com.mhd.common.core.domain.entity.R; import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.system.api.WlhyServiceFeign; import com.mhd.system.api.WlhyServiceFeign;
import com.mhd.system.api.WmsServiceFeign; import com.mhd.system.api.WmsServiceFeign;
import com.mhd.system.api.domain.*; import com.mhd.system.api.domain.MaterialBaseInfoFeign;
import com.mhd.system.api.domain.MaterialInventoryDTO;
import com.mhd.system.api.domain.NoticeOrderDTO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -55,100 +54,6 @@ public class RemoteWmsFallbackFactory implements FallbackFactory<WmsServiceFeign
public AjaxResult materialInventoryApiListAll(MaterialInventoryDTO materialInventoryDTO) { public AjaxResult materialInventoryApiListAll(MaterialInventoryDTO materialInventoryDTO) {
return AjaxResult.error(cause.getMessage()); return AjaxResult.error(cause.getMessage());
} }
@Override
public void omsOutOrderAdd(StockOutOrder stockOutOrder) {
}
@Override
public void omsOutOrderAddDetail(List<OutMaterialDetail> outMaterialDetails) {
}
@Override
public void omsOutOrderAddDeliveryDetailsLink(List<DeliveryDetailsLink> deliveryDetailsLinks) {
}
@Override
public AjaxResult omsInOrderAdd(StockInOrder stockInOrder) {
//返回错误而非静默成功下发主单保存失败必须让OMS感知并回滚下发标记
//否则OMS显示已下发WMS无数据下游收货流程无从进行流程阻断
return AjaxResult.error("WMS入库单保存失败(服务降级):" + cause.getMessage());
}
@Override
public AjaxResult omsCancelExecutionOrder(StockOutOrder stockOutOrder) {
//返回错误而非静默成功让OMS侧补偿清理能感知失败并记录告警
return AjaxResult.error("WMS取消下发清理失败:" + cause.getMessage());
}
@Override
public void omsAutoAssign(StockOutOrderDTO stockOutOrderDTO) {
}
@Override
public AjaxResult execution(StockOutOrderDTO stockOutOrderDTO) {
return AjaxResult.error(cause.getMessage());
}
@Override
public AjaxResult checkOmsAssignInventory(List<OutMaterialDetail> outMaterialDetails) {
//校验接口本身不可用时返回错误OMS会阻止下发不能在WMS状态未知时盲目推送
return AjaxResult.error("WMS库存校验服务不可用:" + cause.getMessage());
}
@Override
public AjaxResult omsInOrderAddDetail(List<InMaterialDetail> inMaterialDetails) {
//返回错误而非静默成功明细保存含自动审核失败必须让OMS感知并回滚下发标记
return AjaxResult.error("WMS入库单明细保存失败(服务降级):" + cause.getMessage());
}
@Override
public AjaxResult omsCancelInOrder(StockInOrder stockInOrder) {
//返回错误而非静默成功让OMS侧取消下发能感知清理失败并整体回滚取消下发可重试WMS清理幂等
return AjaxResult.error("WMS取消下发清理失败:" + cause.getMessage());
}
@Override
public TableDataInfo getMaterialBaseInfoList(MaterialInfoDTO materialInfoDTO) {
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setData(new ArrayList<>());
tableDataInfo.setTotal(0);
tableDataInfo.setCode(500);
return tableDataInfo;
}
@Override
public AjaxResult<?> updateMaterialPushStatus(Long materialBaseInfoId, Integer pushStatus, String pushTime, Long pushBy, String pushByName) {
return AjaxResult.error(cause.getMessage());
}
@Override
public TableDataInfo getBatchByIds(List<Long> materialBaseInfoIds) {
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setData(new ArrayList<>());
tableDataInfo.setTotal(0);
tableDataInfo.setCode(500);
return tableDataInfo;
}
@Override
public AjaxResult genPickingOrderByOms(StockOutOrderDTO stockOutOrderDTO) {
return null;
}
@Override
public AjaxResult batchSignWms(SignatureBatchFeignDTO dto) {
log.error("WMS批量签名调用失败");
return AjaxResult.error("WMS批量签名调用失败:" + cause.getMessage());
}
@Override
public AjaxResult listLineManagement(String routeCode) {
log.error("OMS查询WMS线路管理失败, routeCode:{}", routeCode);
return AjaxResult.error("WMS线路管理查询失败:" + cause.getMessage());
}
}; };
} }
} }
@@ -1,44 +0,0 @@
package com.mhd.system.api.factory;
import com.mhd.common.core.domain.dto.BusinessDataPushDTO;
import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.po.OrganizationPo;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.BmsServiceFeign;
import com.mhd.system.api.ProductServiceFeign;
import com.mhd.system.api.XxlJobServiceFeign;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @Description
* @Author zg
* @Version 1.0
* @Date 2023/11/3 14:37
*/
@Component
public class RemoteXxlJobFeignFallbackFactory implements FallbackFactory<XxlJobServiceFeign> {
private static final Logger log = LoggerFactory.getLogger(RemoteXxlJobFeignFallbackFactory.class);
@Override
public XxlJobServiceFeign create(Throwable throwable) {
log.error("系统服务调用失败:{}", throwable.getMessage());
return new XxlJobServiceFeign() {
@Override
public R<Map<String, Object>> openFeignTest(String string) {
return null;
}
};
}
}
@@ -11,7 +11,6 @@ import com.mhd.system.api.domain.MallOAuthToken;
import com.mhd.system.api.domain.mall.BaseUser; import com.mhd.system.api.domain.mall.BaseUser;
import com.mhd.system.api.domain.SysUser; import com.mhd.system.api.domain.SysUser;
import com.mhd.system.api.domain.WlhyLoginUser; import com.mhd.system.api.domain.WlhyLoginUser;
import com.mhd.system.api.domain.YmsLoginUser;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@@ -88,11 +87,6 @@ public class LoginUser implements Serializable
*/ */
private WlhyLoginUser wlhyLoginUser; private WlhyLoginUser wlhyLoginUser;
/**
* YMS用户信息
*/
private YmsLoginUser ymsLoginUser;
/** /**
* websocket地址 * websocket地址
*/ */
@@ -168,16 +162,4 @@ public class LoginUser implements Serializable
@ApiModelProperty("仓库信息") @ApiModelProperty("仓库信息")
private WarehousePO warehousePO; private WarehousePO warehousePO;
@ApiModelProperty("路线id")
private String lineManagementId;
@ApiModelProperty("路线编码")
private String routeCode;
@ApiModelProperty("路线名称")
private String routeName;
@ApiModelProperty("配送顺序")
private String deliveryOrder;
} }
@@ -40,7 +40,6 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -108,14 +107,11 @@ public class TokenLoginApplicationService {
//租户一级组织ID //租户一级组织ID
SysTenantsPo sysTenantsPo = JSON.parseObject(JSON.toJSONString(topOrganizationIdR.get("data")), SysTenantsPo.class); SysTenantsPo sysTenantsPo = JSON.parseObject(JSON.toJSONString(topOrganizationIdR.get("data")), SysTenantsPo.class);
Long topOrganizationId = sysTenantsPo.getOrganizationId(); Long topOrganizationId = sysTenantsPo.getOrganizationId();
// 获取用户选择的组织ID未选则使用一级组织ID
Long selectedOrgId = loginDTO.getOrganizationId();
Long organizationId = (selectedOrgId != null) ? selectedOrgId : topOrganizationId;
//获取用户信息组装dto //获取用户信息组装dto
UserDTO userDTO = new UserDTO(); UserDTO userDTO = new UserDTO();
userDTO.setUserPhone(userPhone); userDTO.setUserPhone(userPhone);
userDTO.setTopOrganizationId(topOrganizationId); userDTO.setTopOrganizationId(topOrganizationId);
userDTO.setOrganizationId(organizationId); userDTO.setOrganizationId(topOrganizationId);
// 查询用户信息查询组织下用户是否存在 // 查询用户信息查询组织下用户是否存在
R<LoginUser> userResult = userServiceFeign.getUserByTopOrganizationUserPhone(userDTO, SecurityConstants.INNER); R<LoginUser> userResult = userServiceFeign.getUserByTopOrganizationUserPhone(userDTO, SecurityConstants.INNER);
if (R.FAIL == userResult.getCode()) { if (R.FAIL == userResult.getCode()) {
@@ -130,11 +126,9 @@ public class TokenLoginApplicationService {
//验证码登录校验验证码 //验证码登录校验验证码
String key = CacheConstants.SMS_LOGIN + userPhone; String key = CacheConstants.SMS_LOGIN + userPhone;
Object object = redisService.getCacheObject(key) == null ? "":redisService.getCacheObject(key); Object object = redisService.getCacheObject(key) == null ? "":redisService.getCacheObject(key);
if (loginDTO.getWechatFlag() != 1) { if(!ObjectUtil.equal(String.valueOf(object),verificationCode) && !ObjectUtil.equal(verificationCode, SmsConstants.universalCode)){
// if (!ObjectUtil.equal(String.valueOf(object), verificationCode) && !ObjectUtil.equal(verificationCode, SmsConstants.universalCode)) { recordLogininfor(userPhone, Constants.LOGIN_FAIL, "验证码错误", 1);
// recordLogininfor(userPhone, Constants.LOGIN_FAIL, "验证码错误", 1); throw new ServiceException("验证码错误");
throw new ServiceException("验证码错误");
// }
} }
//获取包名对应的业务(存在需要查询业务不存在保存为无业务模式) //获取包名对应的业务(存在需要查询业务不存在保存为无业务模式)
@@ -159,8 +153,7 @@ public class TokenLoginApplicationService {
}else { }else {
userDTO.setBusinessType(4); userDTO.setBusinessType(4);
} }
userDTO.setOrganizationName(StringUtils.isNotBlank(loginDTO.getOrganizationName()) userDTO.setOrganizationName(sysTenantsPo.getOrganizationName());
? loginDTO.getOrganizationName() : sysTenantsPo.getOrganizationName());
userResult = userServiceFeign.registerAddUser(userDTO, SecurityConstants.INNER); userResult = userServiceFeign.registerAddUser(userDTO, SecurityConstants.INNER);
userInfo = userResult.getData(); userInfo = userResult.getData();
} else { } else {
@@ -170,13 +163,7 @@ public class TokenLoginApplicationService {
throw new ServiceException("对不起,您的账号:" + userPhone + " 已停用"); throw new ServiceException("对不起,您的账号:" + userPhone + " 已停用");
} }
//校验验证码是否正确 //校验验证码是否正确
if (loginDTO.getWechatFlag() != 1) { sysPasswordService.validate(userPo, verificationCode, 1, null);
// if (!ObjectUtil.equal(String.valueOf(object), verificationCode) && !ObjectUtil.equal(verificationCode, SmsConstants.universalCode)) {
// recordLogininfor(userPhone, Constants.LOGIN_FAIL, "验证码错误", 1);
throw new ServiceException("验证码错误");
// }
}
// sysPasswordService.validate(userPo, verificationCode, 1, null);
} }
return userInfo; return userInfo;
} }
@@ -187,67 +174,34 @@ public class TokenLoginApplicationService {
} }
/** /**
* App注册手机号 + 注册短信验证码 + 密码 * 注册
*/ */
public void register(LoginDTO loginDTO) { public void register(String username, String password) {
String userPhone = loginDTO.getUserPhone(); // LoginDTO.java:27-28 // 用户名或密码为空 错误
String verificationCode = loginDTO.getVerificationCode(); // LoginDTO.java:30-31 if (StringUtils.isAnyBlank(username, password)) {
String password = loginDTO.getPassword(); throw new ServiceException("用户/密码必须填写");
// 1. 基础校验
if (StringUtils.isAnyBlank(userPhone, verificationCode, password)) {
throw new ServiceException("手机号、验证码、密码必须填写");
} }
if (!RegexUtil.isPhoneLegal(userPhone)) { if (username.length() < UserConstants.USERNAME_MIN_LENGTH
throw new DigitalLogisticsException(UserError.USER_PHONE_REG_ERROR); || username.length() > UserConstants.USERNAME_MAX_LENGTH) {
throw new ServiceException("账户长度必须在2到20个字符之间");
}
if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH) {
throw new ServiceException("密码长度必须在5到20个字符之间");
} }
// 2. 校验注册短信验证码发送时写入 redis SmsApplicationService.java:112, :165 // 注册用户信息
String key = CacheConstants.SMS_REGISTER + userPhone; // "sms_register:" CacheConstants.java:51 SysUser sysUser = new SysUser();
Object cache = redisService.getCacheObject(key); sysUser.setUserName(username);
if (cache == null || !ObjectUtil.equal(String.valueOf(cache), verificationCode)) { sysUser.setNickName(username);
recordLogininfor(userPhone, Constants.LOGIN_FAIL, "注册验证码错误", 1); sysUser.setPassword(SecurityUtils.encryptPassword(password));
throw new ServiceException("验证码错误或已过期"); //TODO app注册没写
} /*R<?> registerResult = userServiceFeign.registerUserInfo(sysUser, SecurityConstants.INNER);
// 3. 域名 一级组织 loginByVerificationCode :103-110 一致
String path = loginDTO.getPath();
AjaxResult topOrganizationIdR = organizationServiceFeign.getOrganizationByPath(path);
if (ObjectUtil.isNull(topOrganizationIdR) || ObjectUtil.isNull(topOrganizationIdR.get("data"))) {
throw new ServiceException("组织不存在,请检查登录域名");
}
SysTenantsPo sysTenantsPo = JSON.parseObject(JSON.toJSONString(topOrganizationIdR.get("data")), SysTenantsPo.class);
Long topOrganizationId = sysTenantsPo.getOrganizationId();
Long selectedOrgId = loginDTO.getOrganizationId(); // LoginDTO.java:37-38App 选择组织时传
Long organizationId = (selectedOrgId != null) ? selectedOrgId : topOrganizationId;
// 4. 手机号已注册则直接提示UserMapper.xml:199 user_phone+top_organization_id
UserDTO query = new UserDTO();
query.setUserPhone(userPhone);
query.setTopOrganizationId(topOrganizationId);
R<LoginUser> exist = userServiceFeign.getUserByTopOrganizationUserPhone(query, SecurityConstants.INNER);
if (exist != null && exist.getData() != null && exist.getData().getUserPo() != null) {
throw new ServiceException("该手机号已注册,请直接登录");
}
// 5. 创建用户复用验证码登录自动注册的同一链路
// auth feign UserServiceFeign.java:47-48 user-center UserAPI.java:332-336
// UserApplicationService.registerAddUser:1820-1927内部已处理默认角色/YMS同步
UserDTO userDTO = new UserDTO();
userDTO.setUserPhone(userPhone);
userDTO.setUserPassword(SecurityUtils.encryptPassword(password));
userDTO.setTopOrganizationId(topOrganizationId);
userDTO.setOrganizationId(organizationId);
userDTO.setOrganizationName(StringUtils.isNotBlank(loginDTO.getOrganizationName())
? loginDTO.getOrganizationName() : sysTenantsPo.getOrganizationName());
R<LoginUser> registerResult = userServiceFeign.registerAddUser(userDTO, SecurityConstants.INNER);
if (R.FAIL == registerResult.getCode()) { if (R.FAIL == registerResult.getCode()) {
throw new ServiceException(registerResult.getMsg()); throw new ServiceException(registerResult.getMsg());
} }*/
// recordLogininfor(username, Constants.REGISTER, "注册成功");
// 6. 注册成功后清掉验证码并记日志
redisService.deleteObject(key);
recordLogininfor(userPhone, Constants.REGISTER, "注册成功", 2);
} }
/** /**
@@ -425,10 +379,6 @@ public class TokenLoginApplicationService {
throw new ServiceException("用户不存在/密码错误"); throw new ServiceException("用户不存在/密码错误");
} }
} }
// 验证码登录时 userInfo.getUserPo() 可能为null加保护
if (userInfo == null || userInfo.getUserPo() == null || userInfo.getUserPo().getOrganizationId() == null) {
throw new ServiceException("登录用户组织信息不完整,请联系管理员");
}
R<OrganizationPo> organizationInfo = organizationServiceFeign.getInfoForIdList(userInfo.getUserPo().getOrganizationId()); R<OrganizationPo> organizationInfo = organizationServiceFeign.getInfoForIdList(userInfo.getUserPo().getOrganizationId());
if (ObjectUtil.isNull(organizationInfo) || ObjectUtil.isNull(organizationInfo.getData())) { if (ObjectUtil.isNull(organizationInfo) || ObjectUtil.isNull(organizationInfo.getData())) {
throw new ServiceException("登录用户组织不存在"); throw new ServiceException("登录用户组织不存在");
@@ -619,29 +569,4 @@ public class TokenLoginApplicationService {
sysPasswordService.validateByWms(userPo, verificationCode, 1); sysPasswordService.validateByWms(userPo, verificationCode, 1);
return userInfo; return userInfo;
} }
/**
* 根据域名获取组织信息免Token供司机APP注册时选择组织用
*/
public AjaxResult getOrganizationByPath(String path) {
if (StringUtils.isBlank(path)) {
return AjaxResult.error("域名不能为空");
}
try {
AjaxResult result = organizationServiceFeign.getOrganizationByPath(path);
if (ObjectUtil.isNull(result) || ObjectUtil.isNull(result.get("data"))) {
return AjaxResult.error("未找到对应组织");
}
SysTenantsPo sysTenantsPo = JSON.parseObject(JSON.toJSONString(result.get("data")), SysTenantsPo.class);
Long topOrganizationId = sysTenantsPo.getOrganizationId();
// 返回一级组织ID和名称前端可据此展示组织选择
Map<String, Object> data = new java.util.HashMap<>();
data.put("organizationId", topOrganizationId);
data.put("organizationName", sysTenantsPo.getOrganizationName());
return AjaxResult.success(data);
} catch (Exception e) {
log.error("获取组织信息失败, path={}", path, e);
return AjaxResult.error("获取组织信息失败:" + e.getMessage());
}
}
} }
@@ -34,13 +34,4 @@ public class LoginDTO {
@ApiModelProperty(name = "APP包名") @ApiModelProperty(name = "APP包名")
private String appMark; private String appMark;
@ApiModelProperty(name = "组织ID(司机选择组织,不传默认一级组织)")
private Long organizationId;
@ApiModelProperty(name = "组织名称(司机选择组织时传入)")
private String organizationName;
@ApiModelProperty(name = "微信标识")
private Integer wechatFlag;
} }
@@ -9,13 +9,11 @@ import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.utils.JwtUtils; import com.mhd.common.core.utils.JwtUtils;
import com.mhd.common.core.utils.StringUtils; import com.mhd.common.core.utils.StringUtils;
import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.annotation.RepeatSubmit; import com.mhd.common.security.annotation.RepeatSubmit;
import com.mhd.common.security.auth.AuthUtil; import com.mhd.common.security.auth.AuthUtil;
import com.mhd.common.security.utils.SecurityUtils; import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser; import com.mhd.system.api.model.LoginUser;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -72,18 +70,9 @@ public class AppTokenController extends BaseController {
@PostMapping("register") @PostMapping("register")
public R<?> register(@RequestBody LoginDTO loginDTO) { public R<?> register(@RequestBody LoginDTO loginDTO) {
// 用户注册手机号+短信验证码+密码 // 用户注册
tokenLoginApplicationService.register(loginDTO); tokenLoginApplicationService.register(loginDTO.getUsername(), loginDTO.getPassword());
return R.ok("注册成功"); return R.ok();
}
/**
* 根据域名获取组织信息免Token供司机APP注册时选择组织用
*/
@ApiOperation("根据域名获取组织信息")
@GetMapping("/getOrganizationByPath/{path}")
public AjaxResult getOrganizationByPath(@PathVariable("path") String path) {
return tokenLoginApplicationService.getOrganizationByPath(path);
} }
@@ -1,90 +0,0 @@
package com.mhd.auth.system.controller;
import com.mhd.auth.system.service.SsoAuthorizeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Map;
/**
* SSO单点登录控制器
* 子系统端实现接收中台传递的签名参数验签后自动登录并重定向
*
* @author mhd
*/
@Slf4j
@RestController
@RequestMapping("/auth")
@CrossOrigin
public class SsoAuthorizeController {
@Autowired
private SsoAuthorizeService ssoAuthorizeService;
/**
* SSO单点登录授权接口
* 中台点击子系统链接后将签名参数传递给此接口
* 验签通过后自动登录并重定向到前端页面携带token
*
* @param signature 签名信息Base64编码后再URL编码签名源数据格式appkey=xxx&account=xxx&timestamp=xxxxxx
* @param appkey 对方的应用key值固定为nanguang
* @param account 账号
* @param timestamp 当前时间戳毫秒用于防止签名被盗用超过24小时视为失效
*/
@GetMapping("/sso-authorize")
public void ssoAuthorize(@RequestParam("signature") String signature,
@RequestParam("appkey") String appkey,
@RequestParam("account") String account,
@RequestParam("timestamp") Long timestamp,
HttpServletResponse response) throws IOException {
log.info("SSO单点登录请求, appkey={}, account={}, timestamp={}", appkey, account, timestamp);
String redirectUrl = ssoAuthorizeService.getRedirectUrl();
try {
// 1. 校验时间戳是否超过24小时防止签名被盗用
long ONE_DAY_MILLIS = 24L * 60 * 60 * 1000;
long currentTime = System.currentTimeMillis();
if ((currentTime - timestamp) > ONE_DAY_MILLIS) {
log.warn("SSO签名已过期, appkey={}, account={}, timestamp={}, 距今{}小时",
appkey, account, timestamp, (currentTime - timestamp) / (60 * 60 * 1000));
response.sendRedirect(redirectUrl + "?msg=" + URLEncoder.encode("登录失败:签名已超过24小时,请重新发起", StandardCharsets.UTF_8.name()));
return;
}
// 2. 构造签名源数据包含timestamp
String sourceData = "appkey=" + appkey + "&account=" + account + "&timestamp=" + timestamp;
// 3. 验证签名
boolean verifyResult = ssoAuthorizeService.verifySignature(sourceData, signature);
if (!verifyResult) {
log.warn("SSO验签失败, appkey={}, account={}, timestamp={}", appkey, account, timestamp);
response.sendRedirect(redirectUrl + "?msg=" + URLEncoder.encode("登录失败:签名验证不通过", StandardCharsets.UTF_8.name()));
return;
}
// 4. 验签通过使用account进行登录获取token
Map<String, Object> loginResult = ssoAuthorizeService.ssoLogin(account);
String accessToken = (String) loginResult.get("access_token");
// 5. 重定向到前端页面token通过URL参数传递
// 前端页面需读取URL中的token参数并存入localStorage
log.info("SSO单点登录成功, account={}", account);
log.info("SSO单点登录成功, account={}, token={} , redirectUrl={}", account, accessToken, redirectUrl);
response.sendRedirect(redirectUrl + "?token=" + URLEncoder.encode(accessToken, StandardCharsets.UTF_8.name()));
} catch (Exception e) {
log.error("SSO单点登录异常, appkey={}, account={}, timestamp={}", appkey, account, timestamp, e);
response.sendRedirect(redirectUrl + "?msg=" + URLEncoder.encode("登录失败:" + e.getMessage(), StandardCharsets.UTF_8.name()));
}
}
}
@@ -1,200 +0,0 @@
package com.mhd.auth.system.service;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.mhd.common.core.constant.CacheConstants;
import com.mhd.common.core.constant.Constants;
import com.mhd.common.core.constant.SecurityConstants;
import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.po.OrganizationPo;
import com.mhd.common.core.domain.po.RolePO;
import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.enums.UserStatus;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.utils.ServletUtils;
import com.mhd.common.core.utils.ip.IpUtil;
import com.mhd.common.core.utils.ip.IpUtils;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.log.service.AsyncLogService;
import com.mhd.common.security.service.TokenService;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.UserServiceFeign;
import com.mhd.system.api.domain.UserDTO;
import com.mhd.system.api.domain.UserUpdateDTO;
import com.mhd.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.Signature;
import java.util.Base64;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* SSO单点登录服务
*
* @author mhd
*/
@Slf4j
@Service
public class SsoAuthorizeService {
@Value("${sso.public-key}")
private String publicKeyStr;
@Value("${sso.redirect-url}")
private String redirectUrl;
@Resource
private UserServiceFeign userServiceFeign;
@Resource
private TokenService tokenService;
@Autowired
private AsyncLogService asyncLogService;
@Autowired
private SystemServiceFeign systemServiceFeign;
@Resource
private com.mhd.auth.app.infrastructure.feign.OrganizationServiceFeign organizationServiceFeign;
/**
* 验证RSA签名
*
* @param sourceData 签名源数据格式appkey=xxx&account=xxx&timestamp=xxxxxx
* @param signatureStr Base64编码的签名可能经过URL编码
* @return 验签结果
*/
public boolean verifySignature(String sourceData, String signatureStr) {
try {
// Spring @RequestParam 已自动完成 URL 解码此处直接 Base64 解码即可
byte[] signatureBytes = Base64.getDecoder().decode(signatureStr);
PublicKey publicKey = generatePublicKey(publicKeyStr);
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initVerify(publicKey);
signature.update(sourceData.getBytes("UTF-8"));
return signature.verify(signatureBytes);
} catch (Exception e) {
log.error("SSO验签失败, sourceData={}, signature={}", sourceData, signatureStr, e);
return false;
}
}
/**
* 根据公钥字符串生成PublicKey对象
*/
private PublicKey generatePublicKey(String keyStr) throws Exception {
// 去除头尾标记和空白字符
String publicKeyContent = keyStr
.replace("-----BEGIN PUBLIC KEY-----", "")
.replace("-----END PUBLIC KEY-----", "")
.replaceAll("\\s+", "");
byte[] keyBytes = Base64.getDecoder().decode(publicKeyContent);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
java.security.spec.X509EncodedKeySpec keySpec = new java.security.spec.X509EncodedKeySpec(keyBytes);
return keyFactory.generatePublic(keySpec);
}
/**
* SSO登录根据account查找用户并创建token
*
* @param account 账号
* @return 包含token等信息的Map
*/
public Map<String, Object> ssoLogin(String account) {
// 根据账号查找用户SSO登录不区分组织仅通过userAccount查询
R<LoginUser> userResult = userServiceFeign.getUserByUserAccount(account);
if (R.FAIL == userResult.getCode()) {
throw new ServiceException(userResult.getMsg());
}
if (userResult.getData() == null) {
throw new ServiceException("SSO登录用户不存在:" + account);
}
LoginUser userInfo = userResult.getData();
UserPo userPo = userInfo.getUserPo();
// 校验用户状态
if (userPo == null) {
throw new ServiceException("SSO登录用户信息异常:" + account);
}
// 删除标记
if (UserStatus.DELETED.getCode().equals(String.valueOf(userPo.getDelFlag()))) {
throw new ServiceException("对不起,您的账号:" + account + " 已被删除");
}
// 用户状态
if (UserStatus.DELETED.getCode().equals(String.valueOf(userPo.getUserStatus()))) {
throw new ServiceException("对不起,您的账号:" + account + " 已停用");
}
// 获取组织信息
com.mhd.common.core.domain.entity.R<OrganizationPo> organizationInfo = organizationServiceFeign.getInfoForIdList(userPo.getOrganizationId());
if (ObjectUtil.isNull(organizationInfo) || ObjectUtil.isNull(organizationInfo.getData())) {
throw new ServiceException("登录用户组织不存在");
}
userInfo.setOrganizationPo(organizationInfo.getData());
// 查询用户角色
AjaxResult roleListAjaxResult = userServiceFeign.getRoleListByUserId(userPo.getUserId());
if ("200".equals(String.valueOf(roleListAjaxResult.get("code"))) && ObjectUtil.isNotNull(roleListAjaxResult.get("data"))) {
List<RolePO> rolePOS = JSONUtil.toList(JSONUtil.toJsonStr(roleListAjaxResult.get("data")), RolePO.class);
if (rolePOS != null && !rolePOS.isEmpty()) {
userInfo.setRoleList(rolePOS.stream().map(RolePO::getRoleName).collect(Collectors.toList()));
userInfo.setRoleIdList(rolePOS.stream().map(RolePO::getRoleId).collect(Collectors.toList()));
}
}
// 更新登录信息
UserUpdateDTO userUpdateDTO = new UserUpdateDTO();
userUpdateDTO.setLastLoginTime(new Date());
userUpdateDTO.setLastLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
userUpdateDTO.setUserName(account);
userServiceFeign.updateWhenLogin(userUpdateDTO, SecurityConstants.INNER);
// 创建token
Map<String, Object> result = tokenService.createTokenApi(userInfo);
// 记录登录日志
recordLogininfor(userPo, Constants.LOGIN_SUCCESS, "SSO单点登录成功", 1);
return result;
}
/**
* 记录登录信息
*/
private void recordLogininfor(UserPo userPo, String status, String message, Integer behaviorType) {
com.mhd.system.api.domain.SysLogininforPo logininfor = new com.mhd.system.api.domain.SysLogininforPo();
logininfor.setUserAccount(userPo.getUserAccount());
logininfor.setUserName(userPo.getUserName());
logininfor.setIpaddr(IpUtils.getIpAddr(ServletUtils.getRequest()));
logininfor.setLocation(StrUtil.isNotEmpty(logininfor.getIpaddr()) ? IpUtil.getLocationSplicing(logininfor.getIpaddr()) : "");
logininfor.setBehaviorType(behaviorType);
logininfor.setMsg(message);
logininfor.setOrganizationId(userPo.getOrganizationId());
logininfor.setOrganizationName(userPo.getOrganizationName());
logininfor.setTopOrganizationId(userPo.getTopOrganizationId());
logininfor.setAccessTime(cn.hutool.core.date.DateUtil.date());
if (org.apache.commons.lang3.StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS);
} else if (Constants.LOGIN_FAIL.equals(status)) {
logininfor.setStatus(Constants.LOGIN_FAIL_STATUS);
}
asyncLogService.saveLogininfor(logininfor);
}
public String getRedirectUrl() {
return redirectUrl;
}
}
@@ -26,7 +26,6 @@ import com.mhd.common.log.service.AsyncLogService;
import com.mhd.common.redis.service.RedisService; import com.mhd.common.redis.service.RedisService;
import com.mhd.system.api.*; import com.mhd.system.api.*;
import com.mhd.system.api.domain.*; import com.mhd.system.api.domain.*;
import com.mhd.system.api.domain.YmsLoginUser;
import com.mhd.system.api.domain.mall.SysTenant; import com.mhd.system.api.domain.mall.SysTenant;
import com.mhd.system.api.domain.mall.UserInfo; import com.mhd.system.api.domain.mall.UserInfo;
import com.mhd.system.api.domain.mall.UserInfoLoginDTO; import com.mhd.system.api.domain.mall.UserInfoLoginDTO;
@@ -71,8 +70,6 @@ public class SysLoginService {
private UserServiceFeign userServiceFeign; private UserServiceFeign userServiceFeign;
@Resource @Resource
private WlhyServiceFeign wlhyServiceFeign; private WlhyServiceFeign wlhyServiceFeign;
@Resource
private YmsServiceFeign ymsServiceFeign;
@Resource @Resource
private RedisService redisService; private RedisService redisService;
@@ -462,17 +459,6 @@ public class SysLoginService {
userInfo.setWlhyLoginUser(wlhyLoginUserR.getData()); userInfo.setWlhyLoginUser(wlhyLoginUserR.getData());
} }
} }
// 获取YMS登录用户基本信息
try {
R<YmsLoginUser> ymsLoginUserR = ymsServiceFeign.getYmsUserInfo(userInfo.getUserPo().getUserId());
if (ymsLoginUserR.getCode() == R.SUCCESS && ymsLoginUserR.getData() != null) {
userInfo.setYmsLoginUser(ymsLoginUserR.getData());
log.info("获取YMS用户信息成功,userId: {}", userInfo.getUserPo().getUserId());
}
} catch (Exception e) {
// 获取YMS用户信息失败时记录日志但不影响登录
log.warn("获取YMS用户信息失败,但不影响登录: {}", e.getMessage());
}
if(mallFlag == 1){ if(mallFlag == 1){
/*单点登录获取商城鉴权 /*单点登录获取商城鉴权
* 根据用户角色判断需要鉴权的服务 * 根据用户角色判断需要鉴权的服务
@@ -550,11 +536,11 @@ public class SysLoginService {
throw new ServiceException("请输入手机号和短信验证码"); throw new ServiceException("请输入手机号和短信验证码");
} }
// //调用工具类校验校验手机号格式错误 //调用工具类校验校验手机号格式错误
// if (!RegexUtil.isPhoneLegal(userPhone)) { if (!RegexUtil.isPhoneLegal(userPhone)) {
// recordLogininfor(userPhone, Constants.LOGIN_FAIL, UserError.USER_PHONE_REG_ERROR.errmsg(), 1); recordLogininfor(userPhone, Constants.LOGIN_FAIL, UserError.USER_PHONE_REG_ERROR.errmsg(), 1);
// throw new DigitalLogisticsException(UserError.USER_PHONE_REG_ERROR); throw new DigitalLogisticsException(UserError.USER_PHONE_REG_ERROR);
// } }
//根据域名获取一级组织ID //根据域名获取一级组织ID
AjaxResult topOrganizationIdR = organizationServiceFeign.getOrganizationByPath(path, SecurityConstants.INNER); AjaxResult topOrganizationIdR = organizationServiceFeign.getOrganizationByPath(path, SecurityConstants.INNER);
@@ -28,7 +28,6 @@ import com.mhd.common.redis.service.RedisService;
import com.mhd.common.security.utils.password.PasswordUtil; import com.mhd.common.security.utils.password.PasswordUtil;
import com.mhd.system.api.RemoteLogService; import com.mhd.system.api.RemoteLogService;
import com.mhd.system.api.domain.SysLogininforPo; import com.mhd.system.api.domain.SysLogininforPo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -40,7 +39,6 @@ import javax.annotation.Resource;
* @description: 登录密码方法 * @description: 登录密码方法
* @date 2023/12/26 15:33 * @date 2023/12/26 15:33
**/ **/
@Slf4j
@Component @Component
public class SysPasswordService public class SysPasswordService
{ {
@@ -78,31 +76,29 @@ public class SysPasswordService
if (retryCount == null) { if (retryCount == null) {
retryCount = 0; retryCount = 0;
} }
//TODO 从三方配置表中取值失败时用默认值保证登录错误提示可用 //TODO 从三方配置表中取值
int maxRetryCount = 5; // 默认密码错5次锁定 SysDepartInterfaceInfoDTO sysDepartInterfaceInfoDTO = new SysDepartInterfaceInfoDTO();
long lockTime = 30L; // 默认锁定30分钟 sysDepartInterfaceInfoDTO.setTopOrganizationId(userPo.getTopOrganizationId());
try { sysDepartInterfaceInfoDTO.setInterfaceType("login");
SysDepartInterfaceInfoDTO dto = new SysDepartInterfaceInfoDTO(); sysDepartInterfaceInfoDTO.setInterfaceTypeKey("maxRetryCount");
dto.setTopOrganizationId(userPo.getTopOrganizationId()); List<SysDepartInterfaceInfoPo> sysDepartInterfaceInfoPos = thirdPartyServiceFeign.queryListByFeign(sysDepartInterfaceInfoDTO);
dto.setInterfaceType("login"); if (sysDepartInterfaceInfoPos.isEmpty()){
dto.setInterfaceTypeKey("maxRetryCount"); String errMsg = "缺少登录信息配置,请联系管理员";
List<SysDepartInterfaceInfoPo> pos = thirdPartyServiceFeign.queryListByFeign(dto); recordLogininfor(userPo, Constants.LOGIN_FAIL, errMsg, 1);
if (pos != null && !pos.isEmpty()) { throw new ServiceException(errMsg);
maxRetryCount = Integer.parseInt(pos.get(0).getInterfaceTypeValue());
} else {
log.warn("组织[{}]缺少登录配置 login/maxRetryCount,使用默认值{}", userPo.getTopOrganizationId(), maxRetryCount);
}
dto.setInterfaceTypeKey("lockTime");
pos = thirdPartyServiceFeign.queryListByFeign(dto);
if (pos != null && !pos.isEmpty()) {
lockTime = Long.parseLong(pos.get(0).getInterfaceTypeValue());
} else {
log.warn("组织[{}]缺少登录配置 login/lockTime,使用默认值{}", userPo.getTopOrganizationId(), lockTime);
}
} catch (Exception e) {
log.warn("读取登录配置失败,使用默认重试策略", e);
} }
if (retryCount >= maxRetryCount) { SysDepartInterfaceInfoPo sysDepartInterfaceInfoPo = sysDepartInterfaceInfoPos.get(0);
Integer maxRetryCount = Integer.valueOf(sysDepartInterfaceInfoPo.getInterfaceTypeValue());
sysDepartInterfaceInfoDTO.setInterfaceTypeKey("lockTime");
sysDepartInterfaceInfoPos = thirdPartyServiceFeign.queryListByFeign(sysDepartInterfaceInfoDTO);
if (sysDepartInterfaceInfoPos.isEmpty()){
String errMsg = "缺少登录信息配置,请联系管理员";
recordLogininfor(userPo, Constants.LOGIN_FAIL, errMsg, 1);
throw new ServiceException(errMsg);
}
sysDepartInterfaceInfoPo = sysDepartInterfaceInfoPos.get(0);
Long lockTime = Long.valueOf(sysDepartInterfaceInfoPo.getInterfaceTypeValue());
if (retryCount >= maxRetryCount){
String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime); String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime);
recordLogininfor(userPo, Constants.LOGIN_FAIL, errMsg, 1); recordLogininfor(userPo, Constants.LOGIN_FAIL, errMsg, 1);
throw new ServiceException(errMsg); throw new ServiceException(errMsg);
+3 -33
View File
@@ -12,44 +12,14 @@ spring:
cloud: cloud:
nacos: nacos:
discovery: discovery:
# server-addr: 127.0.0.1:8848 server-addr: 10.33.0.129:6010
# 线上测试环境配置 容器名+端口号 # 线上测试环境配置 容器名+端口号
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.31:6848
username: nacos
password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.5:6848
# username: nacos
# password: manhuoda@2023
config: config:
# server-addr: 127.0.0.1:8848 server-addr: 10.33.0.129:6010
server-addr: 10.102.192.31:6848
# 测试环境配置 容器名+端口号
# server-addr: 10.33.0.129:6010
# 线上测试环境配置 容器名+端口号 # 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.5:6848
username: nacos
password: manhuoda@2023
#线上正式环境 #线上正式环境
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yml #默认properties file-extension: yml #默认properties
# 共享配置 # 共享配置
shared-configs: shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# SSO单点登录配置
sso:
# RSA公钥(由中台openssl私钥导出)
public-key: |
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA62dYkl2Nvy2wW9028dQ7
HdxFNhwEriFNzFMFq+m1jTvZWdU6e9a1iCGWTVV2fTo4PWSyhjWyzv2ZBEuanWBq
y/bfh/jOTjT/tlWvMeJZ1TV4suCbigHq5TGxDsY6ZC6if9ULhU3NWkgnPNn6HfO9
NVvBTfx9MgWtCtT33kq30KgxC6LqVdCe08+gD0KB3df0DK8OJorVFfxYVc7TjGEL
xqUuE7PcgZgDb8KvdgO66OxBqFIB0qfc73oALKGoq/8kvjrqE/amaIZPv3jE2Rc7
0rIhGHrFcoA3W01nNRGQKY/E/VKOGBn/uDNdi5iMXsFjKxiBbXB07bBxdhUH7698
AwIDAQAB
-----END PUBLIC KEY-----
# SSO登录成功后跳转的前端页面地址
redirect-url: "https://diglog.namkwong.com.mo/main_app/sso"
-17
View File
@@ -1,17 +0,0 @@
# 基础镜像
FROM arm64v8/openjdk:8
# author
MAINTAINER manhuoda
#指定东八区时区
ENV TZ Asia/Shanghai
#指定utf-8编码格
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
#将当前jar 复制到容器根目录下
ADD target/mhd-bi.jar mhd-bi.jar
#暴露容器端口 Docker镜像告知Docker宿主机应用监听了端口
EXPOSE 9200
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xms1000m", "-Xmx1500m","-jar","/mhd-bi.jar"]
-180
View File
@@ -1,180 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mhd</artifactId>
<groupId>com.mhd</groupId>
<version>3.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mhd-bi</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!--添加web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加feign依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
<!--nacos 服务注册客户端依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Sentinel⽀持采⽤ Nacos 作为规则配置数据源,引⼊该适配依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<!--sentinel 核⼼环境 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!--链路追踪-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- Alibaba Fastjson -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
</dependency>
<!--spring cloud stream 依赖(rabbit-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
<!-- Mhd Common Core-->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-core</artifactId>
</dependency>
<!-- Mhd Common Redis-->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-redis</artifactId>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.1.193</version>
</dependency>
<!--import mybatis plus 它会自动引入mybatis及mybatis spring切勿重复引用以免冲突-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--添加druid连接池 依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
<!--链路追踪-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>2.2.8.RELEASE</version>
</dependency>
<!-- Mhd Common Security-->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-security</artifactId>
</dependency>
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-api-system</artifactId>
</dependency>
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-log</artifactId>
</dependency>
<!-- net.sf.json -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-datasource</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.1.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>mhd-bi</id>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
-44
View File
@@ -1,44 +0,0 @@
-- =============================================================================
-- 达梦 DM8:综合态势(单表,可重复执行)
-- 接口:GET /biReport/comprehensive
-- 执行顺序:删除历史多表/旧快照 → 建 BI_COMPREHENSIVE_SNAPSHOT → 示例 INSERT
-- PAYLOAD_JSON 与 ComprehensiveSituationVO 字段名一致;接口取 DEL_FLAG=1 且 CREATE_TIME 最新一条。
-- =============================================================================
-- 子表优先
DROP TABLE IF EXISTS
BI_COMPREHENSIVE_INCOME_TREND;
DROP TABLE IF EXISTS
BI_COMPREHENSIVE_METRIC;
DROP TABLE IF EXISTS
BI_COMPREHENSIVE_SNAPSHOT;
CREATE TABLE
BI_COMPREHENSIVE_SNAPSHOT (
ID BIGINT IDENTITY(1,1) NOT NULL,
PAYLOAD_JSON CLOB NOT NULL,
CREATE_TIME DATETIME DEFAULT NULL,
UPDATE_TIME DATETIME DEFAULT NULL,
REMARK VARCHAR(500) DEFAULT NULL,
DEL_FLAG NUMBER(1) DEFAULT 1 NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IDX_BI_COMP_SNAP_DEL_CR ON
BI_COMPREHENSIVE_SNAPSHOT(DEL_FLAG, CREATE_TIME);
CREATE INDEX IDX_BI_COMP_SNAP_UPD ON
BI_COMPREHENSIVE_SNAPSHOT(UPDATE_TIME);
COMMENT ON TABLE
BI_COMPREHENSIVE_SNAPSHOT IS '综合态势-整包 JSON 快照';
COMMENT ON COLUMN
BI_COMPREHENSIVE_SNAPSHOT.DEL_FLAG IS '0无状态 1正常 2已删除';
INSERT INTO
BI_COMPREHENSIVE_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME, DEL_FLAG)
VALUES (
'{"valueAddedServiceIncome":5330000,"inventoryTurnover":25,"orderCount":42300,"vehicleUtilizationRate":97.4,"fuelConsumptionPerHundredKm":15,"incomeTrend":[280,210,260,310,470,390]}',
SYSDATE,
SYSDATE,
1
);
COMMIT;
@@ -1,53 +0,0 @@
-- =============================================================================
-- 达梦 DM8:月台监测(单表,可重复执行)
-- 接口:GET /biReport/platformSurveillance
-- 执行顺序:删除历史多表/旧快照 → 建 BI_PLATFORM_SURVEILLANCE_SNAPSHOT → 示例 INSERT
-- PAYLOAD_JSON 与 PlatformSurveillanceVO 一致;接口取 DEL_FLAG=1 且 CREATE_TIME 最新一条。
-- =============================================================================
DROP TABLE IF EXISTS
BI_PS_ALARM_DIST;
DROP TABLE IF EXISTS
BI_PS_TASK_TYPE;
DROP TABLE IF EXISTS
BI_PS_ALARM_TREND;
DROP TABLE IF EXISTS
BI_PS_TASK_LOAD;
DROP TABLE IF EXISTS
BI_PS_AVG_DURATION_TREND;
DROP TABLE IF EXISTS
BI_PS_VEHICLE;
DROP TABLE IF EXISTS
BI_PLATFORM_SURVEILLANCE_METRIC;
DROP TABLE IF EXISTS
BI_PLATFORM_SURVEILLANCE_SNAPSHOT;
CREATE TABLE
BI_PLATFORM_SURVEILLANCE_SNAPSHOT (
ID BIGINT IDENTITY(1,1) NOT NULL,
PAYLOAD_JSON CLOB NOT NULL,
CREATE_TIME DATETIME DEFAULT NULL,
UPDATE_TIME DATETIME DEFAULT NULL,
REMARK VARCHAR(500) DEFAULT NULL,
DEL_FLAG NUMBER(1) DEFAULT 1 NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IDX_BI_PS_SNAP_DEL_CR ON
BI_PLATFORM_SURVEILLANCE_SNAPSHOT(DEL_FLAG, CREATE_TIME);
CREATE INDEX IDX_BI_PS_SNAP_UPD ON
BI_PLATFORM_SURVEILLANCE_SNAPSHOT(UPDATE_TIME);
COMMENT ON TABLE
BI_PLATFORM_SURVEILLANCE_SNAPSHOT IS '月台监测-整包 JSON 快照';
COMMENT ON COLUMN
BI_PLATFORM_SURVEILLANCE_SNAPSHOT.DEL_FLAG IS '0无状态 1正常 2已删除';
INSERT INTO
BI_PLATFORM_SURVEILLANCE_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME, DEL_FLAG)
VALUES (
'{"vehicles":[{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"已离园","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265}],"efficiencyStatistics":{"entryOvertimeRate":60,"overtimeCount":45,"platformOnTimeRate":92,"avgPlatformDuration":4.5,"yardOnTimeRate":88,"avgYardDuration":4.5},"platformOverview":{"totalPlatforms":43,"currentOccupancyRate":50,"operatingPlatforms":23,"todayTasks":324},"vehicleStatus":{"todayReservedVehicles":3000,"notCheckedIn":1500,"operatingVehicles":1000,"completedVehicles":1000},"avgOperationDurationTrend":[{"month":"11月","yardDuration":10,"platformDuration":23},{"month":"12月","yardDuration":14,"platformDuration":15},{"month":"1月","yardDuration":23.5,"platformDuration":20},{"month":"2月","yardDuration":22,"platformDuration":17},{"month":"3月","yardDuration":13,"platformDuration":14},{"month":"4月","yardDuration":17,"platformDuration":10}],"monthlyTaskStatistics":{"taskTotal":1455,"taskTotalYoY":5,"avgTaskDuration":4.5,"avgDurationYoY":-5,"taskCompletionRate":95,"completionRateYoY":5},"taskLoadStatistics":[{"time":"15时","taskCount":100},{"time":"16时","taskCount":110},{"time":"17时","taskCount":115},{"time":"18时","taskCount":80},{"time":"19时","taskCount":60},{"time":"20时","taskCount":40},{"time":"21时","taskCount":40},{"time":"22时","taskCount":40},{"time":"23时","taskCount":30},{"time":"0时","taskCount":10},{"time":"1时","taskCount":10},{"time":"2时","taskCount":10},{"time":"3时","taskCount":10},{"time":"4时","taskCount":10},{"time":"5时","taskCount":10},{"time":"6时","taskCount":20},{"time":"7时","taskCount":30},{"time":"8时","taskCount":70},{"time":"9时","taskCount":95},{"time":"10时","taskCount":110},{"time":"11时","taskCount":120},{"time":"12时","taskCount":130},{"time":"13时","taskCount":130}],"platformAlarmTrend":[{"date":"11日","alarmCount":10},{"date":"12日","alarmCount":14},{"date":"13日","alarmCount":23},{"date":"14日","alarmCount":22},{"date":"15日","alarmCount":13},{"date":"16日","alarmCount":17},{"date":"17日","alarmCount":8}],"taskTypeStatistics":{"totalTasks":4325,"taskTypes":[{"type":"类型1","count":2400},{"type":"类型2","count":2300},{"type":"类型3","count":2300},{"type":"类型4","count":2300}]},"platformAlarmStatistics":{"todayAlarmTotal":13,"handled":12,"unhandled":1},"platformAlarmDistribution":[{"type":"类型1","count":300},{"type":"类型2","count":245},{"type":"类型3","count":280},{"type":"类型4","count":340},{"type":"类型5","count":455},{"type":"类型6","count":400},{"type":"类型7","count":300}]}',
SYSDATE,
SYSDATE,
1
);
COMMIT;
@@ -1,45 +0,0 @@
-- =============================================================================
-- 达梦 DM8:仓储运输(单表,可重复执行)
-- 接口:GET /biReport/warehouseTransport
-- 执行顺序:删除历史多表/旧快照 → 建 BI_WAREHOUSE_TRANSPORT_SNAPSHOT → 示例 INSERT
-- PAYLOAD_JSON 与 WarehouseTransportSituationVO 字段名一致;接口取 DEL_FLAG=1 且 CREATE_TIME 最新一条。
-- =============================================================================
DROP TABLE IF EXISTS
BI_WTS_CUSTOMER_RANK;
DROP TABLE IF EXISTS
BI_WTS_TIME_SERIES;
DROP TABLE IF EXISTS
BI_WAREHOUSE_TRANSPORT_METRIC;
DROP TABLE IF EXISTS
BI_WAREHOUSE_TRANSPORT_SNAPSHOT;
CREATE TABLE
BI_WAREHOUSE_TRANSPORT_SNAPSHOT (
ID BIGINT IDENTITY(1,1) NOT NULL,
PAYLOAD_JSON CLOB NOT NULL,
CREATE_TIME DATETIME DEFAULT NULL,
UPDATE_TIME DATETIME DEFAULT NULL,
REMARK VARCHAR(500) DEFAULT NULL,
DEL_FLAG NUMBER(1) DEFAULT 1 NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IDX_BI_WTS_SNAP_DEL_CR ON
BI_WAREHOUSE_TRANSPORT_SNAPSHOT(DEL_FLAG, CREATE_TIME);
CREATE INDEX IDX_BI_WTS_SNAP_UPD ON
BI_WAREHOUSE_TRANSPORT_SNAPSHOT(UPDATE_TIME);
COMMENT ON TABLE
BI_WAREHOUSE_TRANSPORT_SNAPSHOT IS '仓储运输-整包 JSON 快照';
COMMENT ON COLUMN
BI_WAREHOUSE_TRANSPORT_SNAPSHOT.DEL_FLAG IS '0无状态 1正常 2已删除';
INSERT INTO
BI_WAREHOUSE_TRANSPORT_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME, DEL_FLAG)
VALUES (
'{"warehouseDistributionOnTimeRate":99.2,"currentYearOrders":525440,"currentQuarterOrders":225120,"currentMonthOrders":23560,"warehouseOrderTrend":[100,93,85,70,98,88],"throughput":[10,14,23,10,13,19],"currentMonthTurnoverRate":3,"currentYearTurnoverRate":4,"inventoryTurnoverTrend":[10,14,23,22,13,17],"totalTransportIncome":5850,"orderCount":856,"transportTrips":533,"annualTransportVolume":15,"transportOrderTotal":4325,"crossBorderTransportOrder":2400,"domesticTransportOrder":2300,"transportTripsTrend":[100,140,230,100,130,192],"vehicleUtilizationRate":[600,460,350,470,450,620],"warehouseDockSyncRate":[100,98,87,78,97,86],"customerContributionRank":{"customerName":["客户A","客户B","客户C","客户D","客户E"],"customerAmount":[147,150,170,160,180]}}',
SYSDATE,
SYSDATE,
1
);
COMMIT;
-15
View File
@@ -1,15 +0,0 @@
ALTER TABLE BI_COMPREHENSIVE_SNAPSHOT
ADD (DEL_FLAG TINYINT DEFAULT 1);
COMMENT ON COLUMN BI_COMPREHENSIVE_SNAPSHOT.DEL_FLAG IS '删除标志:0-无状态, 1-正常, 2-已删除';
ALTER TABLE BI_PLATFORM_SURVEILLANCE_SNAPSHOT
ADD (DEL_FLAG TINYINT DEFAULT 1);
COMMENT ON COLUMN BI_PLATFORM_SURVEILLANCE_SNAPSHOT.DEL_FLAG IS '删除标志:0-无状态, 1-正常, 2-已删除';
ALTER TABLE BI_WAREHOUSE_TRANSPORT_SNAPSHOT
ADD (DEL_FLAG TINYINT DEFAULT 1);
COMMENT ON COLUMN BI_WAREHOUSE_TRANSPORT_SNAPSHOT.DEL_FLAG IS '删除标志:0-无状态, 1-正常, 2-已删除';
@@ -1,236 +0,0 @@
package com.mhd.bi;
import com.mhd.common.core.annotation.fieldsetvalue.CommonService;
import com.mhd.common.core.annotation.fieldsetvalue.SetFeildValueAspect;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Import;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = {"com.mhd", "com.mhd.bi"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.mhd","com.mhd.bi.infrastructure.feign"})
@MapperScan("com.mhd.bi.domain.**.mapper")
@Import({SetFeildValueAspect.class, CommonService.class})
@EnableAsync
@EnableScheduling
public class BiApplication {
public static void main(String[] args) {
SpringApplication.run(BiApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 可视化页面模块启动成功 ლ(´ڡ`ლ)゙ " +
"# _oo0oo_\n" +
"# o8888888o\n" +
"# 88\" . \"88\n" +
"# (| -_- |)\n" +
"# 0\\ = /0\n" +
"# ___/`---'\\___\n" +
"# .' \\\\| |// '.\n" +
"# / \\\\||| : |||// \\\n" +
"# / _||||| -:- |||||- \\\n" +
"# | | \\\\\\ - /// | |\n" +
"# | \\_| ''\\---/'' |_/ |\n" +
"# \\ .-\\__ '-' ___/-. /\n" +
"# ___'. .' /--.--\\ `. .'___\n" +
"# .\"\" '< `.___\\_<|>_/___.' >' \"\".\n" +
"# | | : `- \\`.;`\\ _ /`;.`/ - ` : | |\n" +
"# \\ \\ `_. \\_ __\\ /__ _/ .-` / /\n" +
"# =====`-.____`.___ \\_____/___.-`___.-'=====\n" +
"# `=---='\n" +
"#\n" +
"#\n" +
"# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
"#\n" +
"# 佛祖保佑 永无BUG\n" +
"#\n" +
"#    ┏┓   ┏┓\n" +
"#   ┏┛┻━━━┛┻┓\n" +
"#   ┃       \n" +
"#   ┃   ━   \n" +
"#   ┃ ┳┛ ┗┳ ┃\n" +
"#   ┃       \n" +
"#   ┃   ┻   \n" +
"#   ┃       \n" +
"#   ┗━┓   ┏━┛Codes are far away from bugs with the animal protecting\n" +
"#     ┃   ┃ 神兽保佑,代码无bug\n" +
"#     ┃   ┃\n" +
"#     ┃   ┗━━━┓\n" +
"#     ┃      ┣┓\n" +
"#     ┃     ┏┛\n" +
"#     ┗┓┓┏━┳┓┏┛\n" +
"#      ┃┫┫ ┃┫┫\n" +
"#      ┗┻┛ ┗┻┛\n" +
"#\n" +
"#    ┏┓   ┏┓\n" +
"#   ┏┛┻━━━┛┻┓\n" +
"#   ┃        \n" +
"#   ┃   ━   \n" +
"#   ┃    <┃\n" +
"#   ┃       \n" +
"#   ┃ . ⌒ ..┃\n" +
"#   ┃       \n" +
"#   ┗━┓   ┏━┛\n" +
"#     ┃   ┃ Codes are far away from bugs with the animal protecting       \n" +
"#     ┃   ┃ 神兽保佑,代码无bug\n" +
"#     ┃   ┃           \n" +
"#     ┃   ┃       \n" +
"#     ┃   ┃\n" +
"#     ┃   ┃           \n" +
"#     ┃   ┗━━━┓\n" +
"#     ┃       ┣┓\n" +
"#     ┃       ┏┛\n" +
"#     ┗┓┓┏━┳┓┏┛\n" +
"#      ┃┫┫ ┃┫┫\n" +
"#      ┗┻┛ ┗┻┛\n" +
"# ┏┓   ┏┓+ +\n" +
"#   ┏┛┻━━━┛┻┓ + +\n" +
"#   ┃       ┃  \n" +
"#   ┃   ━   ┃ ++ + + +\n" +
"#   ████━████ ┃+\n" +
"#   ┃       ┃ +\n" +
"#   ┃   ┻   ┃\n" +
"#   ┃       ┃ + +\n" +
"#   ┗━┓   ┏━┛\n" +
"#     ┃   ┃           \n" +
"#     ┃   ┃ + + + +\n" +
"#     ┃   ┃    Codes are far away from bugs with the animal protecting   \n" +
"#     ┃   ┃ +     神兽保佑,代码无bug  \n" +
"#     ┃   ┃\n" +
"#     ┃   ┃  +         \n" +
"#     ┃    ┗━━━┓ + +\n" +
"#     ┃        ┣┓\n" +
"#     ┃        ┏┛\n" +
"#     ┗┓┓┏━┳┓┏┛ + + + +\n" +
"#      ┃┫┫ ┃┫┫\n" +
"#      ┗┻┛ ┗┻┛+ + + +\n" +
"# d*##$.\n" +
"# zP\"\"\"\"\"$e. $\" $o\n" +
"#4$ '$ $\" $\n" +
"#'$ '$ J$ $F\n" +
"# 'b $k $> $\n" +
"# $k $r J$ d$\n" +
"# '$ $ $\" $~\n" +
"# '$ \"$ '$E $\n" +
"# $ $L $\" $F ...\n" +
"# $. 4B $ $$$*\"\"\"*b\n" +
"# '$ $. $$ $$ $F\n" +
"# \"$ R$ $F $\" $\n" +
"# $k ?$ u* dF .$\n" +
"# ^$. $$\" z$ u$$$$e\n" +
"# #$b $E.dW@e$\" ?$\n" +
"# #$ .o$$# d$$$$c ?F\n" +
"# $ .d$$#\" . zo$> #$r .uF\n" +
"# $L .u$*\" $&$$$k .$$d$$F\n" +
"# $$\" \"\"^\"$$$P\"$P9$\n" +
"# JP .o$$$$u:$P $$\n" +
"# $ ..ue$\" \"\" $\"\n" +
"# d$ $F $\n" +
"# $$ ....udE 4B\n" +
"# #$ \"\"\"\"` $r @$\n" +
"# ^$L '$ $F\n" +
"# RN 4N $\n" +
"# *$b d$\n" +
"# $$k $F\n" +
"# $$b $F\n" +
"# $\"\" $F\n" +
"# '$ $\n" +
"# $L $\n" +
"# '$ $\n" +
"# $ $\n" +
"#\n" +
"#\n" +
"# ┌─┐ ┌─┐\n" +
"# ┌──┘ ┴───────┘ ┴──┐\n" +
"# │ │\n" +
"# │ ─── │\n" +
"# │ ─┬┘ └┬─ │\n" +
"# │ │\n" +
"# │ ─┴─ │\n" +
"# │ │\n" +
"# └───┐ ┌───┘\n" +
"# │ │\n" +
"# │ │\n" +
"# │ │\n" +
"# │ └──────────────┐\n" +
"# │ │\n" +
"# │ ├─┐\n" +
"# │ ┌─┘\n" +
"# │ │\n" +
"# └─┐ ┐ ┌───────┬──┐ ┌──┘\n" +
"# │ ─┤ ─┤ │ ─┤ ─┤\n" +
"# └──┴──┘ └──┴──┘\n" +
"# 神兽保佑\n" +
"# 代码无BUG!\n" +
"#\n" +
"# ___====-_ _-====___\n" +
"# _--^^^#####// \\\\#####^^^--_\n" +
"# _-^##########// ( ) \\\\##########^-_\n" +
"# -############// |\\^^/| \\\\############-\n" +
"# _/############// (@::@) \\\\############\\_\n" +
"# /#############(( \\\\// ))#############\\\n" +
"# -###############\\\\ (oo) //###############-\n" +
"# -#################\\\\ / VV \\ //#################-\n" +
"# -###################\\\\/ \\//###################-\n" +
"# _#/|##########/\\######( /\\ )######/\\##########|\\#_\n" +
"# |/ |#/\\#/\\#/\\/ \\#/\\##\\ | | /##/\\#/ \\/\\#/\\#/\\#| \\|\n" +
"# ` |/ V V ` V \\#\\| | | |/#/ V ' V V \\| '\n" +
"# ` ` ` ` / | | | | \\ ' ' ' '\n" +
"# ( | | | | )\n" +
"# __\\ | | | | /__\n" +
"# (vvv(VVV)(VVV)vvv)\n" +
"# 神兽保佑\n" +
"# 代码无BUG!\n" +
"# __----~~~~~~~~~~~------___\n" +
"# . . ~~//====...... __--~ ~~\n" +
"# -. \\_|// |||\\\\ ~~~~~~::::... /~\n" +
"# ___-==_ _-~o~ \\/ ||| \\\\ _/~~-\n" +
"# __---~~~.==~||\\=_ -_--~/_-~|- |\\\\ \\\\ _/~\n" +
"# _-~~ .=~ | \\\\-_ '-~7 /- / || \\ /\n" +
"# .~ .~ | \\\\ -_ / /- / || \\ /\n" +
"# / ____ / | \\\\ ~-_/ /|- _/ .|| \\ /\n" +
"# |~~ ~~|--~~~~--_ \\ ~==-/ | \\~--===~~ .\\\n" +
"# ' ~-| /| |-~\\~~ __--~~\n" +
"# |-~~-_/ | | ~\\_ _-~ /\\\n" +
"# / \\ \\__ \\/~ \\__\n" +
"# _--~ _/ | .-~~____--~-/ ~~==.\n" +
"# ((->/~ '.|||' -_| ~~-/ , . _||\n" +
"# -_ ~\\ ~~---l__i__i__i--~~_/\n" +
"# _-~-__ ~) \\--______________--~~\n" +
"# //.-~~~-~_--~- |-------~~~~~~~~\n" +
"# //.-~~~--\\\n" +
"# 神兽保佑\n" +
"# 代码无BUG!\n" +
"# ,----------------, ,---------,\n" +
"# ,-----------------------, ,\" ,\"|\n" +
"# ,\" ,\"| ,\" ,\" |\n" +
"# +-----------------------+ | ,\" ,\" |\n" +
"# | .-----------------. | | +---------+ |\n" +
"# | | | | | | -==----'| |\n" +
"# | | I LOVE DOS! | | | | | |\n" +
"# | | Bad command or | | |/----|`---= | |\n" +
"# | | C:\\>_ | | | ,/|==== ooo | ;\n" +
"# | | | | | // |(((( [33]| ,\"\n" +
"# | `-----------------' |,\" .;'| |(((( | ,\"\n" +
"# +-----------------------+ ;; | | |,\"\n" +
"# /_)______________(_/ //' | +---------+\n" +
"# ___________________________/___ `,\n" +
"# / oooooooooooooooo .o. oooo /, \\,\"-----------\n" +
"# / ==ooooooooooooooo==.o. ooo= // ,`\\--{)B ,\"\n" +
"# /_==__==========__==_ooo__ooo=_/' /___________,\"\n" +
"#\n" +
"# .-~~~~~~~~~-._ _.-~~~~~~~~~-.\n" +
"# __.' ~. .~ `.__\n" +
"# .'// \\./ \\\\`.\n" +
"# .'// | \\\\`.\n" +
"# .'// .-~\"\"\"\"\"\"\"~~~~-._ | _,-~~~~\"\"\"\"\"\"\"~-. \\\\`.\n" +
"# .'//.-\" `-. | .-' \"-.\\\\`.\n" +
"# .'//______.============-.. \\ | / ..-============.______\\\\`.\n" +
"# .'______________________________\\|/______________________________`.");
}
}
@@ -1,18 +0,0 @@
package com.mhd.bi.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* BI 开放接口访问控制请求头 {@code X-BI-Access-Token}
* <p>配置了 {@code accessToken} 时必须与请求头完全一致未配置时仅校验请求头非空</p>
*/
@Data
@ConfigurationProperties(prefix = "mhd.bi")
public class BiAccessProperties {
/**
* X-BI-Access-Token 比对的密钥为空则只要请求头非空即可
*/
private String accessToken = "";
}
@@ -1,25 +0,0 @@
package com.mhd.bi.config;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
/**
* 注册 /biReport 路径的访问令牌校验
*/
@Configuration
@EnableConfigurationProperties(BiAccessProperties.class)
public class BiReportAccessConfiguration {
@Bean
public FilterRegistrationBean<BiReportAccessTokenFilter> biReportAccessTokenFilter(BiAccessProperties properties) {
FilterRegistrationBean<BiReportAccessTokenFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new BiReportAccessTokenFilter(properties));
registration.addUrlPatterns("/biReport/*");
registration.setOrder(Ordered.HIGHEST_PRECEDENCE + 100);
registration.setName("biReportAccessTokenFilter");
return registration;
}
}
@@ -1,60 +0,0 @@
package com.mhd.bi.config;
import org.springframework.lang.NonNull;
import org.springframework.util.StringUtils;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/**
* 限制 /biReport 下接口必须携带 {@code X-BI-Access-Token}否则 401
*/
public class BiReportAccessTokenFilter extends OncePerRequestFilter {
private static final String UNAUTHORIZED_MSG = "未认证,请提供有效的访问Token";
public static final String HEADER_X_BI_ACCESS_TOKEN = "X-BI-Access-Token";
private final BiAccessProperties accessProperties;
public BiReportAccessTokenFilter(BiAccessProperties accessProperties) {
this.accessProperties = accessProperties;
}
@Override
protected void doFilterInternal(@NonNull HttpServletRequest request,
@NonNull HttpServletResponse response,
@NonNull FilterChain filterChain) throws ServletException, IOException {
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
filterChain.doFilter(request, response);
return;
}
String presented = request.getHeader(HEADER_X_BI_ACCESS_TOKEN);
if (!StringUtils.hasText(presented)) {
writeUnauthorized(response);
return;
}
String expected = accessProperties.getAccessToken();
if (StringUtils.hasText(expected) && !expected.equals(presented)) {
writeUnauthorized(response);
return;
}
filterChain.doFilter(request, response);
}
private static void writeUnauthorized(HttpServletResponse response) throws IOException {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setContentType("application/json;charset=UTF-8");
String body = "{\"code\":401,\"msg\":\"" + UNAUTHORIZED_MSG.replace("\"", "\\\"") + "\"}";
response.getOutputStream().write(body.getBytes(StandardCharsets.UTF_8));
}
}
@@ -1,23 +0,0 @@
package com.mhd.bi.domain.biComprehensive.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO;
/**
* 综合态势SQL BiComprehensiveReportMapper.xml取数与组装均在 Mapper 层完成
*/
public interface BiComprehensiveReportMapper {
String selectLatestPayloadJson();
/**
* 最新快照 VO内部调用 {@link #selectLatestPayloadJson()}
*/
default ComprehensiveSituationVO loadLatestComprehensive() {
return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(),
ComprehensiveSituationVO.class,
BiReportSnapshotMapperSupport::emptyComprehensiveSituation,
"综合态势");
}
}
@@ -1,21 +0,0 @@
package com.mhd.bi.domain.biComprehensive.service;
import com.mhd.bi.domain.biComprehensive.repository.mapper.BiComprehensiveReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 综合态势数据访问仅经 Mapper XML SQL Mapper 默认方法组装
*/
@Service
public class BiComprehensiveReportService {
@Resource
private BiComprehensiveReportMapper biComprehensiveReportMapper;
public ComprehensiveSituationVO loadLatestComprehensive() {
return biComprehensiveReportMapper.loadLatestComprehensive();
}
}
@@ -1,20 +0,0 @@
package com.mhd.bi.domain.biHkMacaoServiceZone.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone.HkMacaoServiceZoneVO;
/**
* 港澳服务专区 NGWL_TEST_BI.BI_HK_MACAO_SERVICE_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析
*/
public interface BiHkMacaoServiceZoneReportMapper {
String selectLatestPayloadJson();
default HkMacaoServiceZoneVO loadLatestHkMacaoServiceZone() {
return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(),
HkMacaoServiceZoneVO.class,
BiReportSnapshotMapperSupport::emptyHkMacaoServiceZone,
"港澳服务专区");
}
}
@@ -1,21 +0,0 @@
package com.mhd.bi.domain.biHkMacaoServiceZone.service;
import com.mhd.bi.domain.biHkMacaoServiceZone.repository.mapper.BiHkMacaoServiceZoneReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone.HkMacaoServiceZoneVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 港澳服务专区
*/
@Service
public class BiHkMacaoServiceZoneReportService {
@Resource
private BiHkMacaoServiceZoneReportMapper biHkMacaoServiceZoneReportMapper;
public HkMacaoServiceZoneVO loadLatestHkMacaoServiceZone() {
return biHkMacaoServiceZoneReportMapper.loadLatestHkMacaoServiceZone();
}
}
@@ -1,150 +0,0 @@
package com.mhd.bi.domain.biHkMacaoServiceZone.support;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone.*;
import java.util.Arrays;
import java.util.List;
/**
* 港澳服务专区快照演示数据对齐大屏示例 JSON后续可改为真实聚合
*/
public final class HkMacaoServiceZoneDemoData {
private HkMacaoServiceZoneDemoData() {
}
public static HkMacaoServiceZoneVO build() {
HkOrderStatsVO orderStats = HkOrderStatsVO.builder()
.totalOrders(4361L)
.unit("")
.momGrowth("+12.5%")
.trend("up")
.build();
List<HkPercentageDetailVO> goodsDetails = Arrays.asList(
HkPercentageDetailVO.builder().name("广东").percentage("25%").build(),
HkPercentageDetailVO.builder().name("澳门").percentage("25%").build(),
HkPercentageDetailVO.builder().name("广西").percentage("50%").build()
);
List<HkPercentageDetailVO> crossBorderDetails = Arrays.asList(
HkPercentageDetailVO.builder().name("出口订单").percentage("25.8%").build(),
HkPercentageDetailVO.builder().name("进口订单").percentage("16.8%").build()
);
List<HkOrderTrendMonthVO> warehouseOrderTrend = Arrays.asList(
HkOrderTrendMonthVO.builder().month("1月").orderRatio(150).orderCount(400).build(),
HkOrderTrendMonthVO.builder().month("2月").orderRatio(200).orderCount(250).build(),
HkOrderTrendMonthVO.builder().month("3月").orderRatio(250).orderCount(300).build(),
HkOrderTrendMonthVO.builder().month("4月").orderRatio(200).orderCount(280).build(),
HkOrderTrendMonthVO.builder().month("5月").orderRatio(280).orderCount(320).build(),
HkOrderTrendMonthVO.builder().month("6月").orderRatio(220).orderCount(310).build(),
HkOrderTrendMonthVO.builder().month("7月").orderRatio(260).orderCount(330).build()
);
List<HkMonthRatePointVO> turnoverData = Arrays.asList(
HkMonthRatePointVO.builder().month("11月").rate(10).build(),
HkMonthRatePointVO.builder().month("12月").rate(15).build(),
HkMonthRatePointVO.builder().month("1月").rate(22).build(),
HkMonthRatePointVO.builder().month("2月").rate(20).build(),
HkMonthRatePointVO.builder().month("3月").rate(12).build(),
HkMonthRatePointVO.builder().month("4月").rate(16).build()
);
List<HkMonthValuePointVO> cargoVolumeTrend = Arrays.asList(
HkMonthValuePointVO.builder().month("1月").value(80).build(),
HkMonthValuePointVO.builder().month("2月").value(85).build(),
HkMonthValuePointVO.builder().month("3月").value(90).build(),
HkMonthValuePointVO.builder().month("4月").value(70).build(),
HkMonthValuePointVO.builder().month("5月").value(95).build(),
HkMonthValuePointVO.builder().month("6月").value(88).build()
);
List<HkOrderTrendMonthVO> transportOrderTrend = Arrays.asList(
HkOrderTrendMonthVO.builder().month("1月").orderRatio(150).orderCount(400).build(),
HkOrderTrendMonthVO.builder().month("2月").orderRatio(200).orderCount(250).build(),
HkOrderTrendMonthVO.builder().month("3月").orderRatio(250).orderCount(300).build(),
HkOrderTrendMonthVO.builder().month("4月").orderRatio(200).orderCount(280).build(),
HkOrderTrendMonthVO.builder().month("5月").orderRatio(280).orderCount(320).build(),
HkOrderTrendMonthVO.builder().month("6月").orderRatio(220).orderCount(310).build(),
HkOrderTrendMonthVO.builder().month("7月").orderRatio(260).orderCount(330).build()
);
List<HkMonthRatePointVO> onTimeDeliveryRate = Arrays.asList(
HkMonthRatePointVO.builder().month("1月").rate(90).build(),
HkMonthRatePointVO.builder().month("2月").rate(92).build(),
HkMonthRatePointVO.builder().month("3月").rate(88).build(),
HkMonthRatePointVO.builder().month("4月").rate(85).build(),
HkMonthRatePointVO.builder().month("5月").rate(95).build(),
HkMonthRatePointVO.builder().month("6月").rate(93).build()
);
List<HkMapPointVO> mapPoints = Arrays.asList(
HkMapPointVO.builder()
.id("wh_001")
.type("warehouse")
.name("通宇保税仓")
.status("normal")
.location(HkMapLocationVO.builder().lat(22.2800).lng(113.5600).build())
.metrics(HkWarehouseMetricsVO.builder()
.inboundOperations(1)
.outboundOperations(1)
.build())
.build(),
HkMapPointVO.builder()
.id("vehicle_88888")
.type("vehicle")
.name("粤A88888")
.status("in_transit")
.location(HkMapLocationVO.builder().lat(22.2500).lng(113.5500).build())
.details(HkVehicleDetailsVO.builder()
.warehouseName("通宇")
.licensePlate("粤A88888")
.loadingAddress("珠海")
.destinationAddress("澳门")
.currentLocation("珠海市")
.updateTime("2026年4月15日 17:52")
.build())
.build()
);
return HkMacaoServiceZoneVO.builder()
.warehouseOrderStats(orderStats)
.clientServiceStats(HkClientServiceStatsVO.builder()
.hkMacaoClients(26)
.clientRatio("10.5%")
.warehouseUsageArea("1688m2")
.areaRatio("1.5%")
.build())
.goodsSourceStats(HkRingChartStatsVO.builder()
.totalOrders(1000)
.details(goodsDetails)
.build())
.crossBorderOrderStats(HkRingChartStatsVO.builder()
.totalOrders(400)
.details(crossBorderDetails)
.build())
.warehouseOrderTrend(warehouseOrderTrend)
.inventoryTurnoverTrend(HkInventoryTurnoverTrendVO.builder()
.currentMonthRate("3次")
.annualRate("4次")
.unit("")
.data(turnoverData)
.build())
.transportOrderStats(orderStats)
.doorToDoorEfficiency(HkDoorToDoorEfficiencyVO.builder()
.averageTime("28.6分")
.fastestTime("13.2分")
.momGrowth("+30%")
.build())
.crossBorderTransportStats(HkRingChartStatsVO.builder()
.totalOrders(400)
.details(crossBorderDetails)
.build())
.cargoVolumeTrend(cargoVolumeTrend)
.transportOrderTrend(transportOrderTrend)
.onTimeDeliveryRate(onTimeDeliveryRate)
.mapData(HkMapDataVO.builder().points(mapPoints).build())
.build();
}
}
@@ -1,23 +0,0 @@
package com.mhd.bi.domain.biOverallOperation.repository.mapper;
import com.mhd.bi.domain.biOverallOperation.support.OverallOperationPayloadNormalizer;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallOperationSituationVO;
/**
* 总体运营态势SQL BiOverallOperationReportMapper.xml取数与组装均在 Mapper 层完成
*/
public interface BiOverallOperationReportMapper {
String selectLatestPayloadJson();
default OverallOperationSituationVO loadLatestOverallOperation() {
String json = OverallOperationPayloadNormalizer.normalizeJson(selectLatestPayloadJson());
OverallOperationSituationVO vo = BiReportSnapshotMapperSupport.parsePayload(
json,
OverallOperationSituationVO.class,
BiReportSnapshotMapperSupport::emptyOverallOperationSituation,
"总体运营态势");
return OverallOperationPayloadNormalizer.ensureDefaults(vo);
}
}
@@ -1,21 +0,0 @@
package com.mhd.bi.domain.biOverallOperation.service;
import com.mhd.bi.domain.biOverallOperation.repository.mapper.BiOverallOperationReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallOperationSituationVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 南光物流业务经营分析 · 总体运营态势大图1
*/
@Service
public class BiOverallOperationReportService {
@Resource
private BiOverallOperationReportMapper biOverallOperationReportMapper;
public OverallOperationSituationVO loadLatestOverallOperation() {
return biOverallOperationReportMapper.loadLatestOverallOperation();
}
}
@@ -1,95 +0,0 @@
package com.mhd.bi.domain.biOverallOperation.support;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.mhd.bi.domain.biReport.support.BiInventoryTurnoverTrendSupport;
import com.mhd.bi.domain.biReport.support.BiOnTimeDeliveryRateChartSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallOperationSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallTransportOperationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallWarehouseOperationVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
/**
* 总体运营态势左侧 warehouse.turnover_rate_trend右下角 transport.on_time_rate
*/
@Slf4j
public final class OverallOperationPayloadNormalizer {
private static final ObjectMapper MAPPER = new ObjectMapper();
private OverallOperationPayloadNormalizer() {
}
public static String normalizeJson(String json) {
if (StringUtils.isBlank(json)) {
return json;
}
try {
JsonNode root = MAPPER.readTree(json.trim());
boolean changed = false;
ObjectNode rootObj = (ObjectNode) root;
JsonNode warehouse = root.path("warehouse");
if (warehouse.isObject()) {
ObjectNode warehouseObj = (ObjectNode) warehouse;
if (warehouseObj.has("map") && !rootObj.has("map")) {
rootObj.set("map", warehouseObj.remove("map"));
changed = true;
}
if (warehouseObj.has("transport") && !rootObj.has("transport")) {
rootObj.set("transport", warehouseObj.remove("transport"));
changed = true;
}
if (warehouseObj.has("capabilityRanking")) {
warehouseObj.remove("capabilityRanking");
changed = true;
}
if (warehouseObj.has("on_time_rate")) {
warehouseObj.remove("on_time_rate");
changed = true;
}
if (!warehouseObj.has("turnover_rate_trend")) {
warehouseObj.set("turnover_rate_trend",
MAPPER.valueToTree(BiInventoryTurnoverTrendSupport.defaultTrend()));
changed = true;
}
}
JsonNode transport = root.path("transport");
if (transport.isObject()) {
ObjectNode transportObj = (ObjectNode) transport;
if (transportObj.has("enterpriseRanking")) {
transportObj.remove("enterpriseRanking");
changed = true;
}
if (!transportObj.has("on_time_rate")) {
transportObj.set("on_time_rate",
MAPPER.valueToTree(BiOnTimeDeliveryRateChartSupport.defaultChart()));
changed = true;
}
}
return changed ? MAPPER.writeValueAsString(root) : json;
} catch (Exception e) {
log.warn("总体运营态势 PAYLOAD_JSON 规范化失败,按原 JSON 解析", e);
return json;
}
}
public static OverallOperationSituationVO ensureDefaults(OverallOperationSituationVO vo) {
if (vo == null) {
return null;
}
OverallWarehouseOperationVO warehouse = vo.getWarehouse();
if (warehouse != null && BiInventoryTurnoverTrendSupport.isEmpty(warehouse.getTurnoverRateTrend())) {
warehouse.setTurnoverRateTrend(BiInventoryTurnoverTrendSupport.defaultTrend());
}
OverallTransportOperationVO transport = vo.getTransport();
if (transport != null && BiOnTimeDeliveryRateChartSupport.isChartEmpty(transport.getOnTimeRate())) {
transport.setOnTimeRate(BiOnTimeDeliveryRateChartSupport.defaultChart());
}
return vo;
}
}
@@ -1,58 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.mapper;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformVehiclePO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformOverviewPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealVehicleStatusPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealTaskLoadPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealBusinessTypeStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformFloorStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformInfoPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealOnTimeStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealTaskTypeStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealMonthlyTaskDurationPO;
import java.util.List;
/**
* 月台监测-真实数据 Mapper
* 数据来源TEST_NGWL_YMS 达梦跨库访问
* 列名按达梦默认大写规则若实际库中小写请反馈调整
*/
public interface BiPlatformRealDataMapper {
/** 作业车辆状态列表 */
List<RealPlatformVehiclePO> queryVehicles();
/** 月台实时概览(总数 / 当前作业中) */
RealPlatformOverviewPO queryPlatformOverview();
/** 今日作业任务数 */
Long countTodayTasks();
/** 车辆状态统计(今日,含叫号状态合计 callStatusTotal = 已签到+已叫号+已过号) */
RealVehicleStatusPO queryVehicleStatusToday();
/** 本月任务量 */
Long countMonthTasks();
/** 本月任务平均时长 / 完成率统计 */
RealMonthlyTaskDurationPO queryMonthTaskStats();
/** 任务负荷(今日 24 小时) */
List<RealTaskLoadPO> queryTaskLoadToday();
/** 今日预约-业务类型统计(按 businessName 分组统计今日预约数量) */
List<RealBusinessTypeStatPO> queryTodayBusinessTypeStats();
/** 今日作业准时率统计(total 今日预约总数;onTimeCount 今日准时车辆数) */
RealOnTimeStatPO queryTodayOnTimeStats();
/** 任务类型统计(本月 YMS QMS_MAIN_BUSINESS 预约按业务类型 BUSINESS_NAME 分组) */
List<RealTaskTypeStatPO> queryMonthTransportOrderByType();
/** 月台监控-按楼层统计月台车辆(楼层、月台数量、今日预约车辆、当前作业车辆) */
List<RealPlatformFloorStatPO> queryPlatformFloorStats();
/** 月台管理列表(YMS qms_window_info,含机构/鹤位/状态/楼层/UUID 等完整信息) */
List<RealPlatformInfoPO> queryPlatformInfoList();
}
@@ -1,20 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 今日预约-业务类型统计真实数据来自 TEST_NGWL_YMS.QMS_MAIN_BUSINESS
* 按业务类型分组统计今日预约数量
*/
@Data
public class RealBusinessTypeStatPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 业务类型名称(qms_main_business.businessName */
private String businessName;
/** 今日预约数量 */
private Long count;
}
@@ -1,29 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 本月任务平均时长 / 完成率统计真实数据来自 TEST_NGWL_YMS.QMS_MAIN_BUSINESS
* avgDurationHours累计 (EXIT_TIME - ENTRY_TIME) 小时数 ENTRY_TIME/EXIT_TIME 都不为空时参与
* durationCount参与平均时长统计的有效条数
* completedCount已出场EXIT_TIME IS NOT NULL且预约日期在本月的数量
* totalCount本月TARGET_DATE预约总数量
*/
@Data
public class RealMonthlyTaskDurationPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 平均作业时长(小时) */
private Double avgDurationHours;
/** 参与平均时长统计的有效条数 */
private Long durationCount;
/** 本月已出场数量 */
private Long completedCount;
/** 本月预约总数量(按 TARGET_DATE 统计) */
private Long totalCount;
}
@@ -1,20 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 今日作业准时率统计真实数据来自 TEST_NGWL_YMS.QMS_MAIN_BUSINESS
* 准时率 = 今日实际进场时间在预约日期当天的车辆数 / 今日预约总车辆数 × 100%
*/
@Data
public class RealOnTimeStatPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 今日预约总车辆数 */
private Long total;
/** 今日准时车辆数(已进场且实际进场日期 = 预约日期) */
private Long onTimeCount;
}
@@ -1,26 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 月台监控-月台车辆统计按楼层分组
* 数据来源TEST_NGWL_YMS.QMS_WINDOW_INFO楼层+月台 QMS_MAIN_BUSINESS当日预约/作业
*/
@Data
public class RealPlatformFloorStatPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 楼层(从叫号月台 WINDOW_NAME 解析,如 S1-01 -> F1 */
private String floorNo;
/** 该楼层的月台数量 */
private Long platformCount;
/** 今日预约车辆数(按 WINDOW_NAME 关联楼层) */
private Long todayReservedVehicles;
/** 当前作业车辆数(FLOW_STATUS IN 5,6,7,8,9,10 */
private Long operatingVehicles;
}
@@ -1,59 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 月台管理列表真实数据来自 TEST_NGWL_YMS.QMS_WINDOW_INFO
* 对应 YMS qms_window_info 月台/鹤位窗口表
*/
@Data
public class RealPlatformInfoPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 机构代码(org_no */
private String orgNo;
/** 机构名称(dept_name */
private String deptName;
/** 鹤位号/月台号(window_number */
private String windowNumber;
/** 鹤位名称/月台名称(window_name */
private String windowName;
/** 优先级别(priority_set */
private String prioritySet;
/** 鹤位状态/月台状态(running_status */
private String runningStatus;
/** uuid */
private String uuid;
/** 鹤位屏名字集合/绑定月台屏(berr_names */
private String berrNames;
/** 最新业务状态(new_flow_status */
private String newFlowStatus;
/** 月台图片(guide_images */
private String guideImages;
/** 月台楼层(platform_floor */
private String platformFloor;
/** 作业状态 0-空闲 1-占用(job_status */
private Integer jobStatus;
/** 创建人(create_by */
private String createBy;
/** 创建时间(create_time */
private String createTime;
}
@@ -1,18 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 月台实时概览真实数据来自 TEST_NGWL_YMS.QMS_WINDOW_INFO
*/
@Data
public class RealPlatformOverviewPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 月台总数 */
private Long totalPlatforms;
/** 当前作业中(月台作业状态=占用) */
private Long operatingPlatforms;
}
@@ -1,30 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 月台监测-作业车辆真实数据来自 TEST_NGWL_YMS.QMS_MAIN_BUSINESS
*/
@Data
public class RealPlatformVehiclePO implements Serializable {
private static final long serialVersionUID = 1L;
/** 车牌号(qms_main_business.CARNO */
private String plateNumber;
/** 流程状态(qms_main_business.FLOWSTATUS */
private String status;
/** 叫号月台(qms_queue_list.WINDOWNAME */
private String platformId;
/** 月台作业时长,分钟(EXITTIME - ENTRYTIME */
private Long platformDuration;
/** 预约申请时间(qms_main_business.CREATE_TIME */
private String appointmentTime;
/** 作业楼层(qms_window_info.PLATFORMFLOOR */
private String workFloor;
}
@@ -1,18 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 任务负荷统计按小时来自 TEST_NGWL_YMS.QMS_MAIN_BUSINESS
*/
@Data
public class RealTaskLoadPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 0-23 小时 */
private Integer hourOfDay;
/** 该小时段任务数 */
private Long taskCount;
}
@@ -1,20 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 任务类型统计真实数据来自 NGWL_TEST_YMS.QMS_MAIN_BUSINESS 预约登记表
* 按本月预约车辆数TARGET_DATE 在当前月 BUSINESS_NAME 业务类型分组
*/
@Data
public class RealTaskTypeStatPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 业务类型名称(qms_main_business.BUSINESS_NAME */
private String businessName;
/** 该业务类型本月预约车辆数 */
private Long count;
}
@@ -1,30 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.repository.po;
import lombok.Data;
import java.io.Serializable;
/**
* 作业车辆状态统计真实数据来自 TEST_NGWL_YMS.QMS_MAIN_BUSINESS
*/
@Data
public class RealVehicleStatusPO implements Serializable {
private static final long serialVersionUID = 1L;
/** 今日预约车辆 */
private Long todayReservedVehicles;
/** 当前未签到 */
private Long notCheckedIn;
/** 当前等待作业(FLOW_STATUS IN '1','2','3' 已预约/已签到/已叫号) */
private Long waiting;
/** 叫号状态合计:已签到 + 已叫号 + 已过号(FLOW_STATUS IN '2','3','4',预约日期为今天) */
private Long callStatusTotal;
/** 当前作业中 */
private Long operatingVehicles;
/** 作业完成 */
private Long completedVehicles;
}
@@ -1,501 +0,0 @@
package com.mhd.bi.domain.biPlatformRealData.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mhd.bi.domain.biPlatformRealData.repository.mapper.BiPlatformRealDataMapper;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformVehiclePO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformOverviewPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealVehicleStatusPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealTaskLoadPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealBusinessTypeStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformFloorStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformInfoPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealOnTimeStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealTaskTypeStatPO;
import com.mhd.bi.domain.biPlatformRealData.repository.po.RealMonthlyTaskDurationPO;
import com.mhd.bi.domain.biPlatformSurveillance.repository.mapper.BiPlatformSurveillanceReportMapper;
import com.mhd.bi.domain.biSnapshotSync.repository.mapper.BiSnapshotWriteMapper;
import com.mhd.bi.domain.biSnapshotSync.support.BiSnapshotWeeklyRandomDataBuilder;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformVehicleItemVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.TaskLoadItemVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.TaskTypeStatisticsVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.TaskTypeCountItemVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
/**
* 月台监测-真实数据业务层封装 YMS 跨库查询
* 列名大小写字段类型需以实际库为准 YMS 库无数据/无权限相关方法应返回空/0不影响写死字段写入快照
*/
@Slf4j
@Service
public class BiPlatformRealDataService {
@Resource
private BiPlatformRealDataMapper biPlatformRealDataMapper;
@Resource
private BiSnapshotWriteMapper biSnapshotWriteMapper;
@Resource
private BiPlatformSurveillanceReportMapper biPlatformSurveillanceReportMapper;
@Resource
private ObjectMapper objectMapper;
private static final String REMARK_REALTIME = "realtime platform-surveillance";
/**
* 实时组装月台监测数据仅当真实业务数据YMS 库查出的字段发生变化时
* 才覆盖更新 BI_PLATFORM_SURVEILLANCE_SNAPSHOT 快照表最新一条后返回
* 写死字段变化不触发更新表中尚无记录时插入一条兜底
*/
public PlatformSurveillanceVO buildRealTimePlatformSurveillanceAndPersist() {
PlatformSurveillanceVO vo = buildRealTimePlatformSurveillance();
try {
String fullJson = objectMapper.writeValueAsString(vo);
String fingerprint = realDataFingerprint(vo);
String latestJson = biPlatformSurveillanceReportMapper.selectLatestPayloadJson();
if (StringUtils.isNotBlank(latestJson)) {
PlatformSurveillanceVO latestVo = objectMapper.readValue(latestJson.trim(), PlatformSurveillanceVO.class);
if (Objects.equals(fingerprint, realDataFingerprint(latestVo))) {
log.info("BI 月台监测真实业务数据未变化,跳过落库");
return vo;
}
}
int rows = biSnapshotWriteMapper.updateLatestPlatformSurveillanceSnapshot(fullJson, REMARK_REALTIME);
if (rows < 1) {
// 表中无最新记录可更新插入一条兜底
biSnapshotWriteMapper.insertPlatformSurveillanceSnapshot(fullJson, REMARK_REALTIME);
}
log.info("BI 月台监测实时数据已落库(覆盖最新, 数据变化), affectedRows={}", rows);
} catch (Exception e) {
log.error("BI 月台监测实时数据落库失败", e);
}
return vo;
}
/**
* 提取月台监测的真实业务数据指纹仅含 YMS 库查出的字段用于判断业务数据是否变化
* 写死/随机字段不纳入指纹故其变化不会触发更新
*/
private String realDataFingerprint(PlatformSurveillanceVO vo) throws Exception {
Map<String, Object> fp = new LinkedHashMap<>();
if (vo.getPlatformOverview() != null) {
fp.put("totalPlatforms", vo.getPlatformOverview().getTotalPlatforms());
fp.put("operatingPlatforms", vo.getPlatformOverview().getOperatingPlatforms());
fp.put("currentOccupancyRate", vo.getPlatformOverview().getCurrentOccupancyRate());
fp.put("todayTasks", vo.getPlatformOverview().getTodayTasks());
}
if (vo.getEfficiencyStatistics() != null) {
fp.put("platformOnTimeRate", vo.getEfficiencyStatistics().getPlatformOnTimeRate());
}
if (vo.getVehicleStatus() != null) {
fp.put("todayReservedVehicles", vo.getVehicleStatus().getTodayReservedVehicles());
fp.put("notCheckedIn", vo.getVehicleStatus().getNotCheckedIn());
fp.put("waiting", vo.getVehicleStatus().getWaiting());
fp.put("callStatusTotal", vo.getVehicleStatus().getCallStatusTotal());
fp.put("operatingVehicles", vo.getVehicleStatus().getOperatingVehicles());
fp.put("completedVehicles", vo.getVehicleStatus().getCompletedVehicles());
}
if (vo.getMonthlyTaskStatistics() != null) {
fp.put("taskTotal", vo.getMonthlyTaskStatistics().getTaskTotal());
fp.put("avgTaskDuration", vo.getMonthlyTaskStatistics().getAvgTaskDuration());
fp.put("taskCompletionRate", vo.getMonthlyTaskStatistics().getTaskCompletionRate());
}
if (vo.getVehicles() != null) {
List<Map<String, Object>> vehicles = new ArrayList<>();
for (PlatformVehicleItemVO v : vo.getVehicles()) {
Map<String, Object> m = new LinkedHashMap<>();
m.put("appointmentTime", v.getAppointmentTime());
m.put("workFloor", v.getWorkFloor());
m.put("plateNumber", v.getPlateNumber());
m.put("status", v.getStatus());
m.put("platformId", v.getPlatformId());
m.put("platformDuration", v.getPlatformDuration());
vehicles.add(m);
}
fp.put("vehicles", vehicles);
}
if (vo.getTaskLoadStatistics() != null) {
List<Map<String, Object>> loads = new ArrayList<>();
for (TaskLoadItemVO item : vo.getTaskLoadStatistics()) {
Map<String, Object> m = new LinkedHashMap<>();
m.put("time", item.getTime());
m.put("taskCount", item.getTaskCount());
loads.add(m);
}
fp.put("taskLoadStatistics", loads);
}
if (vo.getTaskTypeStatistics() != null) {
Map<String, Object> m = new LinkedHashMap<>();
m.put("totalTasks", vo.getTaskTypeStatistics().getTotalTasks());
if (vo.getTaskTypeStatistics().getTaskTypes() != null) {
List<Map<String, Object>> types = new ArrayList<>();
for (TaskTypeCountItemVO it : vo.getTaskTypeStatistics().getTaskTypes()) {
Map<String, Object> tm = new LinkedHashMap<>();
tm.put("type", it.getType());
tm.put("count", it.getCount());
types.add(tm);
}
m.put("taskTypes", types);
}
fp.put("taskTypeStatistics", m);
}
// 月台告警统计按业务要求恒为 0纳入指纹以确保旧快照可能含非0写死值能被覆盖更新为 0
if (vo.getPlatformAlarmStatistics() != null) {
fp.put("todayAlarmTotal", vo.getPlatformAlarmStatistics().getTodayAlarmTotal());
fp.put("handled", vo.getPlatformAlarmStatistics().getHandled());
fp.put("unhandled", vo.getPlatformAlarmStatistics().getUnhandled());
}
return objectMapper.writeValueAsString(fp);
}
public List<RealPlatformVehiclePO> queryVehicles() {
try {
return biPlatformRealDataMapper.queryVehicles();
} catch (Exception e) {
log.error("【YMS】查询作业车辆列表失败: {}", e.getMessage(), e);
return java.util.Collections.emptyList();
}
}
public RealPlatformOverviewPO queryPlatformOverview() {
try {
RealPlatformOverviewPO po = biPlatformRealDataMapper.queryPlatformOverview();
if (po == null) {
po = new RealPlatformOverviewPO();
}
if (po.getTotalPlatforms() == null) po.setTotalPlatforms(0L);
if (po.getOperatingPlatforms() == null) po.setOperatingPlatforms(0L);
return po;
} catch (Exception e) {
log.error("【YMS】查询月台概览失败: {}", e.getMessage(), e);
RealPlatformOverviewPO po = new RealPlatformOverviewPO();
po.setTotalPlatforms(0L);
po.setOperatingPlatforms(0L);
return po;
}
}
public long countTodayTasks() {
try {
Long n = biPlatformRealDataMapper.countTodayTasks();
return n == null ? 0L : n;
} catch (Exception e) {
log.error("【YMS】统计今日作业任务失败: {}", e.getMessage(), e);
return 0L;
}
}
/**
* 今日作业准时率 = 今日准时车辆数 / 今日有入场时间的车辆数 × 100%四舍五入取整
* 准时实际进入时间 < 预约日期(TARGET_DATE) + 预约结束时间(BOOKING_END_TIME)
* 分子分母都只统计有入场时间ENTRY_TIME 不为空的车辆分母为 0 时返回 0
*/
public int calcTodayOnTimeRate() {
try {
RealOnTimeStatPO po = biPlatformRealDataMapper.queryTodayOnTimeStats();
if (po == null) return 0;
long total = po.getTotal() == null ? 0L : po.getTotal();
long onTime = po.getOnTimeCount() == null ? 0L : po.getOnTimeCount();
if (total <= 0) return 0;
// 四舍五入到整数百分比取整
return (int) Math.round(((double) onTime / (double) total) * 100.0);
} catch (Exception e) {
log.error("【YMS】计算今日作业准时率失败: {}", e.getMessage(), e);
return 0;
}
}
public RealVehicleStatusPO queryVehicleStatusToday() {
try {
RealVehicleStatusPO po = biPlatformRealDataMapper.queryVehicleStatusToday();
if (po == null) po = new RealVehicleStatusPO();
if (po.getTodayReservedVehicles() == null) po.setTodayReservedVehicles(0L);
if (po.getNotCheckedIn() == null) po.setNotCheckedIn(0L);
if (po.getWaiting() == null) po.setWaiting(0L);
if (po.getCallStatusTotal() == null) po.setCallStatusTotal(0L);
if (po.getOperatingVehicles() == null) po.setOperatingVehicles(0L);
if (po.getCompletedVehicles() == null) po.setCompletedVehicles(0L);
return po;
} catch (Exception e) {
log.error("【YMS】统计车辆状态失败: {}", e.getMessage(), e);
RealVehicleStatusPO po = new RealVehicleStatusPO();
po.setTodayReservedVehicles(0L);
po.setNotCheckedIn(0L);
po.setWaiting(0L);
po.setCallStatusTotal(0L);
po.setOperatingVehicles(0L);
po.setCompletedVehicles(0L);
return po;
}
}
public long countMonthTasks() {
try {
Long n = biPlatformRealDataMapper.countMonthTasks();
return n == null ? 0L : n;
} catch (Exception e) {
log.error("【YMS】统计本月任务量失败: {}", e.getMessage(), e);
return 0L;
}
}
/**
* 本月任务平均时长 / 完成率统计
* - avgDurationHours累计(EXIT_TIME - ENTRY_TIME)小时数 / 参与数任一为空的行不参与
* - taskCompletionRate已完成EXIT_TIME 不为空 预约日期在本月/ 本月预约总数量 ×100
* 任一查询失败均返回 null由调用方决定是否覆盖模板值
*/
public RealMonthlyTaskDurationPO queryMonthTaskStats() {
try {
return biPlatformRealDataMapper.queryMonthTaskStats();
} catch (Exception e) {
log.error("【YMS】统计本月任务平均时长/完成率失败: {}", e.getMessage(), e);
return null;
}
}
public List<RealTaskLoadPO> queryTaskLoadToday() {
try {
return biPlatformRealDataMapper.queryTaskLoadToday();
} catch (Exception e) {
log.error("【YMS】统计任务负荷失败: {}", e.getMessage(), e);
return java.util.Collections.emptyList();
}
}
/**
* 任务类型统计本月YMS QMS_MAIN_BUSINESS预约车辆按业务类型 BUSINESS_NAME 分组
* 返回 {totalTasks: 当月总预约车辆数, taskTypes: [{type: 业务类型名称, count: 该类型预约数}]}
* 按真实 BUSINESS_NAME 分组输出不固定兜底类别当月无数据或查询失败时返回空列表
*/
public TaskTypeStatisticsVO queryMonthTransportOrderByType() {
List<TaskTypeCountItemVO> items = new ArrayList<>();
int total = 0;
try {
List<RealTaskTypeStatPO> rows = biPlatformRealDataMapper.queryMonthTransportOrderByType();
if (rows != null) {
for (RealTaskTypeStatPO r : rows) {
if (r == null || r.getBusinessName() == null || r.getCount() == null) {
continue;
}
int c = r.getCount().intValue();
items.add(TaskTypeCountItemVO.builder().type(r.getBusinessName()).count(c).build());
total += c;
}
}
} catch (Exception e) {
log.error("【YMS】统计当月预约业务类型失败: {}", e.getMessage(), e);
// 查询失败返回空列表前端会显示空
items = new ArrayList<>();
total = 0;
}
return TaskTypeStatisticsVO.builder().totalTasks(total).taskTypes(items).build();
}
/**
* 今日预约-业务类型统计按业务类型分组统计今日预约数量
* 今日预约航空打板 3 返回 {businessName:"航空打板", count:3}
*/
public List<RealBusinessTypeStatPO> queryTodayBusinessTypeStats() {
try {
return biPlatformRealDataMapper.queryTodayBusinessTypeStats();
} catch (Exception e) {
log.error("【YMS】统计今日业务类型失败: {}", e.getMessage(), e);
return java.util.Collections.emptyList();
}
}
/**
* 月台监控-按楼层统计月台车辆返回 {floorNo, platformCount, todayReservedVehicles, operatingVehicles}
* 实时查 YMS 不落库
*/
public List<RealPlatformFloorStatPO> queryPlatformFloorStats() {
try {
return biPlatformRealDataMapper.queryPlatformFloorStats();
} catch (Exception e) {
log.error("【YMS】月台监控按楼层统计失败: {}", e.getMessage(), e);
return java.util.Collections.emptyList();
}
}
/**
* 月台管理列表实时查 YMS qms_window_info返回月台/鹤位窗口完整信息不落库
*/
public List<RealPlatformInfoPO> queryPlatformInfoList() {
try {
return biPlatformRealDataMapper.queryPlatformInfoList();
} catch (Exception e) {
log.error("【YMS】查询月台管理列表失败: {}", e.getMessage(), e);
return java.util.Collections.emptyList();
}
}
/**
* 实时组装月台监测数据原则有真实数据源用真实无真实数据源用写死模拟
* 有真实数据源的字段vehicles / platformOverview / vehicleStatus / taskLoad / taskTotal
* 无条件用 YMS 真实查询覆盖真实为空即为空不用模板兜底
* 无真实数据源的字段效率统计趋势告警任务类型等保留模板写死值
* 每次调用实时查库不经过快照表
*/
public PlatformSurveillanceVO buildRealTimePlatformSurveillance() {
// 固定种子生成写死模板仅用于没有真实数据源的字段
Random r = new Random(20260825L);
PlatformSurveillanceVO template = BiSnapshotWeeklyRandomDataBuilder.platformSurveillance(r);
// 作业车辆列表真实数据源无条件覆盖真实为空则返回空列表不用模板模拟
List<RealPlatformVehiclePO> realVehicles = queryVehicles();
List<PlatformVehicleItemVO> vehicleVos = new ArrayList<>();
for (RealPlatformVehiclePO rv : realVehicles) {
PlatformVehicleItemVO v = new PlatformVehicleItemVO();
v.setAppointmentTime(rv.getAppointmentTime());
v.setWorkFloor(rv.getWorkFloor());
v.setPlateNumber(rv.getPlateNumber());
v.setStatus(translateFlowStatus(rv.getStatus()));
v.setPlatformId(rv.getPlatformId());
v.setPlatformDuration(rv.getPlatformDuration() == null ? 0 : rv.getPlatformDuration().intValue());
vehicleVos.add(v);
}
template.setVehicles(vehicleVos);
// 月台实时概览真实数据源无条件覆盖
// 总月台 / 占用月台 来源YMS 月台管理列表 QMS_WINDOW_INFOJOB_STATUS=1 表示占用
// 月台占用率 = 占用 / 全部月台
// 今日作业任务 来源QMS_MAIN_BUSINESS 按预约时间 TARGET_DATE = 今天 的全部数量
// 作业准时率 = 今日实际进场时间在预约日期当天的车辆数 / 今日预约车辆总数 × 100%
if (template.getPlatformOverview() != null) {
List<RealPlatformInfoPO> platformList = queryPlatformInfoList();
int total = platformList == null ? 0 : platformList.size();
int occ = 0;
if (platformList != null) {
for (RealPlatformInfoPO p : platformList) {
if (p != null && p.getJobStatus() != null && p.getJobStatus() == 1) {
occ++;
}
}
}
double rate = total > 0 ? Math.round(((double) occ / total) * 100.0 * 100.0) / 100.0 : 0d;
int todayTasks = (int) countTodayTasks();
template.getPlatformOverview().setTotalPlatforms(total);
template.getPlatformOverview().setOperatingPlatforms(occ);
template.getPlatformOverview().setCurrentOccupancyRate(rate);
template.getPlatformOverview().setTodayTasks(todayTasks);
// 作业准时率实际进入时间 < 预约日期+预约结束时间 的车辆 / 今日预约总数 × 100% 取整
if (template.getEfficiencyStatistics() != null) {
template.getEfficiencyStatistics().setPlatformOnTimeRate(calcTodayOnTimeRate());
}
}
// 作业车辆状态统计真实数据源无条件覆盖含等待作业 waiting = 今日预约且 已预约/已签到/已叫号
if (template.getVehicleStatus() != null) {
RealVehicleStatusPO vs = queryVehicleStatusToday();
template.getVehicleStatus().setTodayReservedVehicles(vs.getTodayReservedVehicles().intValue());
template.getVehicleStatus().setNotCheckedIn(vs.getNotCheckedIn().intValue());
template.getVehicleStatus().setWaiting(vs.getWaiting().intValue());
// 叫号状态合计已签到 + 已叫号 + 已过号一个字段表示三个状态的总数量
template.getVehicleStatus().setCallStatusTotal(vs.getCallStatusTotal().intValue());
template.getVehicleStatus().setOperatingVehicles(vs.getOperatingVehicles().intValue());
template.getVehicleStatus().setCompletedVehicles(vs.getCompletedVehicles().intValue());
}
// 本月任务统计taskTotal / avgTaskDuration / taskCompletionRate 均有真实数据源无条件覆盖YoY 保留模板写死值
if (template.getMonthlyTaskStatistics() != null) {
template.getMonthlyTaskStatistics().setTaskTotal((int) countMonthTasks());
RealMonthlyTaskDurationPO monthStats = queryMonthTaskStats();
if (monthStats != null) {
if (monthStats.getAvgDurationHours() != null) {
// 保留两位小数
double v = monthStats.getAvgDurationHours();
template.getMonthlyTaskStatistics().setAvgTaskDuration(Math.round(v * 100.0) / 100.0);
}
Long total = monthStats.getTotalCount();
Long completed = monthStats.getCompletedCount();
if (total != null && total > 0 && completed != null) {
int rate = (int) Math.round(((double) completed.longValue() / total.longValue()) * 100.0);
template.getMonthlyTaskStatistics().setTaskCompletionRate(rate);
} else {
template.getMonthlyTaskStatistics().setTaskCompletionRate(0);
}
}
}
// 任务负荷有真实数据源真实为空则清空不用模板模拟有数据则按真实小时覆盖
List<RealTaskLoadPO> loads = queryTaskLoadToday();
if (loads.isEmpty()) {
template.setTaskLoadStatistics(new ArrayList<>());
} else if (template.getTaskLoadStatistics() != null) {
Map<Integer, Long> hourMap = new HashMap<>();
for (RealTaskLoadPO l : loads) {
hourMap.put(l.getHourOfDay(), l.getTaskCount());
}
for (TaskLoadItemVO item : template.getTaskLoadStatistics()) {
Integer hour = parseHourFromLabel(item.getTime());
if (hour != null && hourMap.containsKey(hour)) {
item.setTaskCount(hourMap.get(hour).intValue());
}
}
}
// 任务类型统计本月 YMS QMS_MAIN_BUSINESS 按业务类型 BUSINESS_NAME 分组真实业务数据
template.setTaskTypeStatistics(queryMonthTransportOrderByType());
return template;
}
private static Integer parseHourFromLabel(String label) {
if (label == null) return null;
try {
String s = label.replace("", "").trim();
return Integer.parseInt(s);
} catch (Exception e) {
return null;
}
}
/**
* FLOW_STATUS 数字转中文1已预约 2已签到 3已叫号 4已过号 5已进场 6已称重 7已装车 8二次称重 9已结算 10已还卡 11已出场 12已取消
*/
private static String translateFlowStatus(String flowStatus) {
if (flowStatus == null) return null;
switch (flowStatus.trim()) {
case "1": return "已预约";
case "2": return "已签到";
case "3": return "已叫号";
case "4": return "已过号";
case "5": return "已进场";
case "6": return "已称重";
case "7": return "已装车";
case "8": return "二次称重";
case "9": return "已结算";
case "10": return "已还卡";
case "11": return "已出场";
case "12": return "已取消";
default: return flowStatus;
}
}
}
@@ -1,20 +0,0 @@
package com.mhd.bi.domain.biPlatformSurveillance.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO;
/**
* 月台监测SQL BiPlatformSurveillanceReportMapper.xml取数与组装均在 Mapper 层完成
*/
public interface BiPlatformSurveillanceReportMapper {
String selectLatestPayloadJson();
default PlatformSurveillanceVO loadLatestPlatformSurveillance() {
return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(),
PlatformSurveillanceVO.class,
BiReportSnapshotMapperSupport::emptyPlatformSurveillance,
"月台监测");
}
}
@@ -1,18 +0,0 @@
package com.mhd.bi.domain.biPlatformSurveillance.service;
import com.mhd.bi.domain.biPlatformSurveillance.repository.mapper.BiPlatformSurveillanceReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class BiPlatformSurveillanceReportService {
@Resource
private BiPlatformSurveillanceReportMapper biPlatformSurveillanceReportMapper;
public PlatformSurveillanceVO loadLatestPlatformSurveillance() {
return biPlatformSurveillanceReportMapper.loadLatestPlatformSurveillance();
}
}

Some files were not shown because too many files have changed in this diff Show More