订单管理相关

This commit is contained in:
潘荣晟
2025-10-22 17:29:29 +08:00
parent c5467b2c71
commit 4d85ea4ebd
38 changed files with 2667 additions and 61 deletions

View File

@@ -39,4 +39,19 @@ public class OnlyOfficeCallbackController {
response.put("error", 0);
return new ResponseEntity<>(response, HttpStatus.OK);
}
/**
* 处理OnlyOffice文档编辑服务发送的回调
*/
@PostMapping("/contract /callback/{id}")
@PermitAll
@TenantIgnore
public ResponseEntity<Map<String, Integer>> handleContractCallback(@RequestBody OnlyOfficeCallback callback, @PathVariable String id,@RequestParam("fileName") String fileName) {
// 处理回调逻辑
callbackService.processContractCallback(callback,id,fileName);
// 返回必须的响应否则OnlyOffice会显示错误
Map<String, Integer> response = new HashMap<>();
response.put("error", 0);
return new ResponseEntity<>(response, HttpStatus.OK);
}
}

View File

@@ -9,4 +9,11 @@ public interface OnlyOfficeCallbackService {
* @param callback 回调数据
*/
void processCallback(OnlyOfficeCallback callback,String id,String fileName);
/**
* 处理OnlyOffice回调
* @param callback 回调数据
*/
void processContractCallback(OnlyOfficeCallback callback,String id,String fileName);
}

View File

@@ -209,4 +209,159 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
}
@Override
public void processContractCallback(OnlyOfficeCallback callback, String id, String fileName) {
log.info("收到OnlyOffice文档回调: {}", callback.getKey());
log.info("回调状态: {}", callback.getStatus());
// 根据不同的状态处理回调
switch (callback.getStatus()) {
case 1:
handleContractEditingStatus(callback, id,fileName);
break;
case 2:
handleContractDocumentSaved(callback, id,fileName);
break;
case 3:
handleContractSaveError(callback, id,fileName);
break;
case 4:
handleContractDocumentClosedWithoutChanges(callback, id,fileName);
break;
case 6:
handleContractForcedSave(callback, id,fileName);
break;
case 7:
handleContractForcedSaveError(callback, id,fileName);
break;
default:
log.warn("收到未知的回调状态: {}", callback.getStatus());
}
}
/**
* 处理文档正在编辑的状态
*/
private void handleContractEditingStatus(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 正在被以下用户编辑: {}",
callback.getKey(), callback.getUsers());
// 处理用户操作(连接或断开连接)
if (callback.getActions() != null) {
for (Action action : callback.getActions()) {
String actionType = switch (action.getType()) {
case 0 -> "断开了连接";
case 1 -> "连接成功";
case 2 -> "在中点击了强制保存";
default -> "在中执行了未知操作";
};
log.info("用户 {} {}", action.getUserId(), actionType);
}
}
}
/**
* 处理文档已保存的状态
*/
private void handleContractDocumentSaved(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 已准备好保存", callback.getKey());
saveContractDocument(callback, id,fileName);
// 处理历史记录
// handleHistoryChanges(callback,id);
}
/**
* 处理保存错误的状态
*/
private void handleContractSaveError(OnlyOfficeCallback callback, String id,String fileName) {
log.error("保存文档 {} 时出错", callback.getKey());
// 可以在这里添加错误处理逻辑,如发送通知等
}
/**
* 处理文档关闭且无更改的状态
*/
private void handleContractDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 已关闭,未做任何更改", callback.getKey());
// 可以在这里添加清理资源等逻辑
}
/**
* 处理强制保存的状态
*/
private void handleContractForcedSave(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 执行强制保存。类型: {}",
callback.getKey(), callback.getForceSaveType());
saveContractDocument(callback, id,fileName);
// 处理历史记录
handleHistoryChanges(callback, id);
// 如果是表单提交,处理表单数据
if (callback.getForceSaveType() == 3 && callback.getFormsDataUrl() != null) {
handleFormSubmission(callback, id);
}
}
/**
* 处理强制保存错误的状态
*/
private void handleContractForcedSaveError(OnlyOfficeCallback callback, String id,String fileName) {
log.error("文档 {} 强制保存时出错", callback.getKey());
// 可以在这里添加错误处理逻辑
}
/**
* 保存文档到存储
*/
private void saveContractDocument(OnlyOfficeCallback callback, String id,String fileName) {
if (callback.getUrl() == null) {
log.error("文件路径为空");
return;
}
try {
MultipartFile file = downloadFileAsMultipart(callback.getUrl());
// 1. 验证文件是否为空
String directory = "模版实例";
FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO();
fileCreateReqDTO.setName(fileName);
fileCreateReqDTO.setContent(file.getBytes());
fileCreateReqDTO.setType(file.getContentType()); // 使用真实的MIME类型
fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录
if (file.getSize() <=0){
log.error("文件大小为0");
return;
}
// 7. 调用文件服务创建文件
CommonResult<FileRespDTO> result = fileApi.createFileWithReturn(fileCreateReqDTO);
if (result.isSuccess()) {
// 创建文件成功,处理结果
result.getData().setContent(null);
log.info("文件创建成功文件ID{}", result.getData());
// 创建文件成功,处理结果
FileRespDTO fileRespDTO = result.getData();
Map<String, Object> fileInfo = new HashMap<>();
fileInfo.put("id",String.valueOf(fileRespDTO.getId()));
fileInfo.put("name", fileRespDTO.getName());
fileInfo.put("directory", fileRespDTO.getDirectory());
templateInstanceService.updateTemplateInstanceFileUrlByInstanceId(id, JSONObject.toJSONString(fileInfo));
} else {
// 创建文件失败,处理错误
log.error("文件创建失败,错误信息:{}", result.getMsg());
}
log.info("文件创建结果:{}", result);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -68,4 +68,11 @@ public interface TmplInscBsnRelService {
* @param tmplInscBsnRelRespVO 类
*/
void getTmplInscBsnRelDetails(TmplInscBsnRelRespVO tmplInscBsnRelRespVO);
/**
* 跟新cntt
*
* @param bsnId ,params
*/
void updateCntt(Long bsnId,String params);
}

View File

@@ -145,6 +145,20 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService {
}
}
@Override
public void updateCntt(Long bsnId, String params) {
List<TmplInscBsnRelDO> tmplInscBsnRelDOS = tmplInscBsnRelMapper.selectList(new LambdaQueryWrapper<TmplInscBsnRelDO>()
.eq(TmplInscBsnRelDO::getBsnId, bsnId).orderByDesc(TmplInscBsnRelDO::getVer)
);
if (tmplInscBsnRelDOS.isEmpty()) {
throw exception(TEMPLATE_INSTANCE_FILE_NOT_EXISTS);
}
TmplInscBsnRelDO tmplInscBsnRelDO = tmplInscBsnRelDOS.get(0);
tmplInscBsnRelDO.setCntt( params);
tmplInscBsnRelMapper.updateById(tmplInscBsnRelDO);
log.info("更新业务实例cntt字段值成功");
}
//业务条款
private List<TmplInscItmBsnRespVO> setTmplInscItmBsnRespVOS(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) {
List<TmplInscItmBsnRespVO> tmplInscItmBsnRespVOS = BeanUtils.toBean(SpringUtil.getBean(TmplInscItmBsnMapper.class).selectList(new LambdaQueryWrapper<TmplInscItmBsnDO>()
@@ -152,7 +166,7 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService {
), TmplInscItmBsnRespVO.class);
tmplInscItmBsnRespVOS.forEach(tmplInscItmBsnRespVO -> {
tmplInscBsnRelRespVO.getInstanceItemRespVOS().forEach(instanceItemRespVO -> {
if (tmplInscItmBsnRespVO.getInscItmId().equals(instanceItemRespVO.getId())){
if (tmplInscItmBsnRespVO.getInscItmId().equals(instanceItemRespVO.getId())) {
tmplInscItmBsnRespVO.setItmName(instanceItemRespVO.getItmName());
}
});
@@ -273,4 +287,6 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService {
log.info("删除业务实例条款值【{}】", ids);
}
}
}

View File

@@ -0,0 +1,17 @@
package com.zt.plat.module.contractorder.enums.salesorder;
import com.zt.plat.framework.common.exception.ErrorCode;
/**
* contract-order 错误码枚举类
*
* contract-order 系统,使用 1-xxx-xxx-xxx 段
*
* @author ZT
*/
public interface ErrorCodeConstants {
// ========== 合同模块 1-027-000-000 ==========
ErrorCode SALES_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_008_00_600, "消费订单不存在");
}

View File

@@ -3,6 +3,7 @@ package com.zt.plat.module.contractorder.controller.admin.purchaseorder;
import com.zt.plat.module.contractorder.api.ContractApiImpl;
import com.zt.plat.module.contractorder.api.dto.PurchaseOrderWithDetailsDTO;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO;
import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -19,6 +20,7 @@ import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.constraints.*;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
@@ -27,11 +29,13 @@ import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*;
@@ -83,12 +87,12 @@ public class PurchaseOrderController implements BusinessControllerMarker {
@GetMapping("/get")
@Operation(summary = "获得采购订单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@Parameter(name = "id", description = "id是订单主键splyBsnTp是订单类型采购或者是消费", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('bse:purchase-order:query')")
public CommonResult<PurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id) {
PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id);
public CommonResult<PurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id, @RequestParam(value = "splyBsnTp", required = false) String splyBsnTp) {
PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id, splyBsnTp);
PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class);
if (purchaseOrderRespVO == null){
if (purchaseOrderRespVO == null) {
return success(null);
}
purchaseOrderService.setOrderDetails(purchaseOrderRespVO);
@@ -131,7 +135,7 @@ public class PurchaseOrderController implements BusinessControllerMarker {
@Operation(summary = "批量提交订单审核")
@PreAuthorize("@ss.hasPermission('bse:purchase-order:update')")
public CommonResult<Boolean> submitOrder(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List<String> ids) {
System.out.println("ids:"+ids);
System.out.println("ids:" + ids);
ids.forEach(id -> purchaseOrderService.submitOrder(Long.valueOf(id)));
return success(true);
}
@@ -141,25 +145,27 @@ public class PurchaseOrderController implements BusinessControllerMarker {
@Operation(summary = "推送ERP订单", description = "061')")
@PreAuthorize("@ss.hasPermission('bse:purchase-order:update')")
public CommonResult<?> submitErp061(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List<Long> ids) {
return success( purchaseOrderService.submitErp061(ids));
return success(purchaseOrderService.submitErp061(ids));
}
@PostMapping("/submit-erp062")
@Operation(summary = "推送ERP订单", description = "062当每次调更新接口后都需要调此接口")
@PreAuthorize("@ss.hasPermission('bse:purchase-order:update')")
public CommonResult<?> submitErp062(@RequestParam @Validated @NotNull(message = "采购订单id不能为空") Long id) {
return success( purchaseOrderService.submitErp062(id));
return success(purchaseOrderService.submitErp062(id));
}
//通过订单号查询订单信息
@PostMapping("/get-order-by-order-no")
@Operation(summary = "通过订单号查询订单信息", description = "通过订单号查询订单信息")
public CommonResult<List<PurchaseOrderDetailsRespVO>> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List<String> orderNos){
public CommonResult<List<PurchaseOrderDetailsRespVO>> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List<String> orderNos) {
return success(purchaseOrderService.getOrderByOrderNo(orderNos));
}
//根据订单id修改订单状态
@PutMapping("/update-order-status")
@Operation(summary = "批量修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS' 可以根据订单号和订单id修改")
public CommonResult<Boolean> updateOrderStatus(@RequestBody @Validated PurchaseOrderStsReqVO req){
public CommonResult<Boolean> updateOrderStatus(@RequestBody @Validated PurchaseOrderStsReqVO req) {
purchaseOrderService.updateOrderStatusByIdOrOrderNo(req);
return success(true);
}
@@ -171,23 +177,31 @@ public class PurchaseOrderController implements BusinessControllerMarker {
@Schema(description = "采购订单号")
@Validated
@NotEmpty(message = "采购订单号不能为空")
String orderNo){
String orderNo) {
return purchaseOrderService.getMaterial(orderNo);
}
//关联订单
@PostMapping("/link-order")
@Operation(summary = "关联订单")
public CommonResult<Boolean> linkOrder(@RequestBody @Validated LinkOrderReqVO req){
public CommonResult<Boolean> linkOrder(@RequestBody @Validated LinkOrderReqVO req) {
return success(purchaseOrderService.linkOrder(req));
}
@PostMapping("/order-pass-reject")
@Operation(summary = "订单审核")
public CommonResult<Boolean> orderPassReject(@RequestBody PurchaseorderReqVO reqVO){
public CommonResult<Boolean> orderPassReject(@RequestBody PurchaseorderReqVO reqVO) {
return success(purchaseOrderService.orderPassReject(reqVO));
}
//根据订单id和方式获取上或下游订单
@PostMapping("/order-by-order-id-and-type")
@Operation(summary = "根据订单id和方式获取上或下游订单")
public CommonResult<Map<String, Object>> getOrderByOrderIdAndType(@RequestBody DownOrUpOrderReqVO reqVO) {
Map<String, Object> map = new HashMap<>();
map.put("unBindOrder", purchaseOrderService.getOrderByOrderIdAndType(reqVO));
map.put("bindOrder", purchaseOrderService.getBindOrderByOrder(reqVO));
return success(map);
}
}

View File

@@ -0,0 +1,19 @@
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import org.springframework.validation.annotation.Validated;
@Data
@Schema(description = "上下级订单 请求 VO")
@Validated
public class DownOrUpOrderReqVO {
@Schema(description = "订单id")
private Long orderId;
@Schema(description = "订单类型")
@NotEmpty(message = "订单类型不能为空(上游 up ,下游 down)")
private String orderType;
@Schema(description = "订单号")
private String orderNo;
}

View File

@@ -0,0 +1,41 @@
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "上下游订单 响应 VO")
public class DownOrUpOrderRespVO {
/**
* 订单编号
*/
@Schema(description = "订单编号")
private String orderNo;
/**
* 订单ID
*/
@Schema(description = "订单ID")
private String orderId;
/**
* 订单类型
*/
@Schema(description = "订单类型")
private String orderType;
/**
* 合同名称
*/
@Schema(description = "合同名称")
private String contractName;
/**
* 合同id
*/
@Schema(description = "合同id")
private String contractId;
/**
* 合同号
*/
@Schema(description = "合同号")
private String contractNumber;
}

View File

@@ -156,4 +156,6 @@ public class PrchOrdDtlPageReqVO extends PageParam {
@Schema(description = "金属元素编码")
private String elemCdg;
@Schema(description = "订单类型")
private String splyBsnTp;
}

View File

@@ -163,5 +163,7 @@ public class PrchOrdDtlSaveReqVO {
@Schema(description = "金属元素编码")
private String elemCdg;
@Schema(description = "税点")
private String taxRte;
}

View File

@@ -0,0 +1,124 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder;
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
import com.zt.plat.framework.business.interceptor.BusinessControllerMarker;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.module.contractorder.api.ContractApiImpl;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService;
import com.zt.plat.module.contractorder.service.salesorder.SalesOrderService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 销售订单")
@RestController
@RequestMapping("/base/sales-order")
@Validated
public class SalesOrderController implements BusinessControllerMarker {
@Resource
private SalesOrderService salesOrderService;
@Resource
private ContractApiImpl contractApi;
@PostMapping("/create")
@Operation(summary = "创建采购订单")
@PreAuthorize("@ss.hasPermission('base:sales-order:create')")
public CommonResult<SalesOrderRespVO> createSalesOrder(@Valid @RequestBody SalesOrderSaveReqVO createReqVO) {
return success(salesOrderService.createSalesOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新采购订单")
@PreAuthorize("@ss.hasPermission('base:sales-order:update')")
public CommonResult<Boolean> updateSalesOrder(@Valid @RequestBody SalesOrderSaveReqVO updateReqVO) {
salesOrderService.updateSalesOrder(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购订单")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('base:sales-order:delete')")
public CommonResult<Boolean> deleteSalesOrder(@RequestParam("id") Long id) {
salesOrderService.deleteSalesOrder(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除采购订单")
@PreAuthorize("@ss.hasPermission('base:sales-order:delete')")
public CommonResult<Boolean> deleteSalesOrderList(@RequestBody BatchDeleteReqVO req) {
salesOrderService.deleteSalesOrderListByIds(req.getIds());
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得采购订单")
@Parameter(name = "id", description = "id是订单主键splyBsnTp是订单类型采购或者是消费", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('base:sales-order:query')")
public CommonResult<SalesOrderRespVO> getSalesOrder(@RequestParam("id") Long id,@RequestParam(value = "splyBsnTp",required = false) String splyBsnTp) {
SalesOrderDO purchaseOrder = salesOrderService.getSalesOrder(id, splyBsnTp);
SalesOrderRespVO salesOrderRespVO = BeanUtils.toBean(purchaseOrder, SalesOrderRespVO.class);
if (salesOrderRespVO == null){
return success(null);
}
//
return success(salesOrderRespVO);
}
@GetMapping("/page")
@Operation(summary = "获得采购订单分页")
@PreAuthorize("@ss.hasPermission('base:sales-order:query')")
public CommonResult<PageResult<SalesOrderRespVO>> getSalesOrderPage(@Valid SalesOrderPageReqVO pageReqVO) {
PageResult<SalesOrderDO> pageResult = salesOrderService.getSalesOrderPage(pageReqVO);
PageResult<SalesOrderRespVO> purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, SalesOrderRespVO.class);
// purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> salesOrderService.setOrderDetails(purchaseOrderRespVO));
return success(purchaseOrderRespVOPageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购订单 Excel")
@PreAuthorize("@ss.hasPermission('base:sales-order:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportSalesOrderExcel(@Valid SalesOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<SalesOrderDO> list = salesOrderService.getSalesOrderPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "采购订单.xls", "数据", PurchaseOrderRespVO.class,
BeanUtils.toBean(list, PurchaseOrderRespVO.class));
}
}

View File

@@ -0,0 +1,118 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailRespVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO;
import com.zt.plat.module.contractorder.service.salesorder.SalesOrderDetailService;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import com.zt.plat.framework.business.interceptor.BusinessControllerMarker;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.constraints.*;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO;
import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*;
@Tag(name = "管理后台 - 销售订单明细")
@RestController
@RequestMapping("/base/sales-order-detail")
@Validated
public class SalesOrderDetailController implements BusinessControllerMarker {
@Resource
private SalesOrderDetailService salesOrderDetailService;
@PostMapping("/create")
@Operation(summary = "创建销售订单明细")
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:create')")
public CommonResult<SalesOrderDetailRespVO> createSalesOrderDetail(@Valid @RequestBody SalesOrderDetailSaveReqVO createReqVO) {
return success(salesOrderDetailService.createSalesOrderDetail(createReqVO));
}
@PostMapping("/create-batch")
@Operation(summary = "批量创建销售订单明细")
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:create')")
public CommonResult<List<SalesOrderDetailRespVO>> createSalesOrderDetail(@Valid @NotEmpty(message = "需要保存的数据为空") @RequestBody List<SalesOrderDetailSaveReqVO> createReqVOS) {
return success(salesOrderDetailService.createSalesOrderDetail(createReqVOS));
}
@PutMapping("/update")
@Operation(summary = "更新销售订单明细")
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:update')")
public CommonResult<Boolean> updateSalesOrderDetail(@Valid @RequestBody SalesOrderDetailSaveReqVO updateReqVO) {
salesOrderDetailService.updateSalesOrderDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除销售订单明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:delete')")
public CommonResult<Boolean> deleteSalesOrderDetail(@RequestParam("id") Long id) {
salesOrderDetailService.deleteSalesOrderDetail(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除销售订单明细")
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:delete')")
public CommonResult<Boolean> deleteSalesOrderDetailList(@RequestBody BatchDeleteReqVO req) {
salesOrderDetailService.deleteSalesOrderDetailListByIds(req.getIds());
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得销售订单明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:query')")
public CommonResult<SalesOrderDetailRespVO> getSalesOrderDetail(@RequestParam("id") Long id) {
SalesOrderDetailDO salesOrderDetail = salesOrderDetailService.getSalesOrderDetail(id);
return success(BeanUtils.toBean(salesOrderDetail, SalesOrderDetailRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得销售订单明细分页")
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:query')")
public CommonResult<PageResult<SalesOrderDetailRespVO>> getSalesOrderDetailPage(@Valid SalesOrderDetailPageReqVO pageReqVO) {
PageResult<SalesOrderDetailDO> pageResult = salesOrderDetailService.getSalesOrderDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, SalesOrderDetailRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出销售订单明细 Excel")
@PreAuthorize("@ss.hasPermission('base:sales-order-detail:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportSalesOrderDetailExcel(@Valid SalesOrderDetailPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<SalesOrderDetailDO> list = salesOrderDetailService.getSalesOrderDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "销售订单明细.xls", "数据", SalesOrderDetailRespVO.class,
BeanUtils.toBean(list, SalesOrderDetailRespVO.class));
}
}

View File

@@ -0,0 +1,194 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class SaleOrderDetailsRespVO {
/**
* 主键
*/
private Long id;
/**
* ERP订单号
*/
private String orderSAPNumber;
/**
* 订单号
*/
private String systemOrderNumber;
/**
* 公司名称
*/
private String cpName;
/**
* 公司编码;推送ERP必须
*/
private String companyNumber;
/**
* 客商编码;推送ERP必须
*/
private String supplierNumber;
/**
* 客商名称
*/
private String supplierName;
/**
* 订单类型(字典:PRCH_ORD_TP);推送ERP必须
*/
private String type;
/**
* 凭证日期;推送ERP必须
*/
private LocalDateTime voucherDate;
/**
* 采购组织编码;推送ERP必须
*/
private String purchaseOrganizationCustomsDeclaration;
/**
* 收货工厂名称
*/
private String receiveFactoryName;
/**
* 收货工厂编码;推送ERP必须
*/
private String receiveFactoryNumber;
/**
* 收货库位名称
*/
private String receiveWarehouseName;
/**
* 收货库位编码;推送ERP
*/
private String receiveWarehouseNumber;
/**
* 采购组编码(字典:PRCH_GRP_TP);推送ERP必须
*/
private String purchaseGroup;
/**
* 货币码(字典:CUR);推送ERP必须
*/
private String currencyNumber;
/**
* 汇率;推送ERP
*/
private BigDecimal exchangeRate;
/**
* 合同纸质合同号;推送ERP必须
*/
private String paperContractNumber;
/**
* 小协议号;推送ERP
*/
private String agreementNumber;
/**
* 备注;推送ERP
*/
private String remark;
/**
* 代理方编码;推送ERP
*/
private String agentNumber;
/**
* 代理方名称
*/
private String agentName;
/**
* 订单编码
*/
private String orderNumber;
/**
* 系统合同编号
*/
private String contractNumber;
/**
* 物料编码
*/
private String materialNumber;
/**
* 物料名称
*/
private String materialName;
/**
* 合同名称
*/
private String contractName;
/**
* 小户头号
*/
private String tenantNumber;
/**
* ERP公司编号
*/
private String erpPurchaseCompanyNumber;
/**
* ERP公司名称
*/
private String erpPurchaseCompanyName;
/**
* ERP客商公司编码
*/
private String erpSalesCompanyNumber;
/**
* ERP客商公司名称
*/
private String erpSalesCompanyName;
/**
* 采购组织名称
*/
private String purchaseOrganizationName;
/**
* ERP状态(字典: ERP_REQ_STS)
*/
private String erpStatus;
/**
* 请求ERP失败原因
*/
private String cause;
/**
* 订单状态(字典:PRCH_ORD_STS)
*/
private String status;
/**
* 采购组名称
*/
private String purchaseGroupName;
/**
* 流程实例编号
*/
private String processInstanceId;
/**
* 流程当前任务节点id
*/
private String taskId;
/**
* 审批意见
*/
private String reviewOpinion;
/**
* 是否需要审批
*/
private int isPush;
/**
* 物料类型
*/
private String mtrlTp;
/**
* 消费订单行项目
*/
private List<SalesOrderDetailRespVO> orderDetails;
}

View File

@@ -0,0 +1,90 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.zt.plat.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 销售订单明细分页 Request VO")
@Data
public class SalesOrderDetailPageReqVO extends PageParam {
@Schema(description = "订单主键", example = "9072")
private Long orderId;
@Schema(description = "行项目;推送ERP(必须)")
private Long lineNumber;
@Schema(description = "物料名称", example = "芋艿")
private String materialName;
@Schema(description = "物料编码;推送ERP(必须)")
private String materialNumber;
@Schema(description = "工厂名称", example = "芋艿")
private String factoryName;
@Schema(description = "工厂编码;推送ERP(必须)")
private String factoryNumber;
@Schema(description = "库位名称", example = "赵六")
private String warehouseName;
@Schema(description = "库位编码;推送ERP(必须)")
private String warehouseNumber;
@Schema(description = "计量单位;推送ERP(必须)")
private String unit;
@Schema(description = "开票类型;推送ERP(必须)", example = "2")
private String invoiceType;
@Schema(description = "暂估数量;推送ERP(必须)")
private BigDecimal quantity;
@Schema(description = "稅分类(字典:SALE_TAX);推送ERP(必须)")
private String taxAcctasscat;
@Schema(description = "项目类别;推送ERP")
private String projectCategory;
@Schema(description = "装运地点;推送ERP")
private String shippingPlace;
@Schema(description = "物料科目分配组;推送ERP必须")
private String metalAcctasscatGroup;
@Schema(description = "小协议号")
private String agreementNumber;
@Schema(description = "总价")
private BigDecimal gross;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "金属元素名称", example = "张三")
private String elementName;
@Schema(description = "金属元素编码")
private String elementNumber;
@Schema(description = "是否启用;处理明细中多个相同物料,只能允许一种物料启用")
private String isEnable;
@Schema(description = "价格条件详情;推送ERP(必须):JSON")
private String priceConditionDetail;
@Schema(description = "来料加工原料详情;推送ERP:订单类型(JSON)")
private String originDetail;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@@ -0,0 +1,119 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 销售订单明细 Response VO")
@Data
@ExcelIgnoreUnannotated
public class SalesOrderDetailRespVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28517")
@ExcelProperty("主键")
private Long id;
@Schema(description = "订单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9072")
@ExcelProperty("订单主键")
private Long orderId;
@Schema(description = "行项目;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("行项目;推送ERP(必须)")
private Long lineNumber;
@Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("物料名称")
private String materialName;
@Schema(description = "物料编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料编码;推送ERP(必须)")
private String materialNumber;
@Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("工厂名称")
private String factoryName;
@Schema(description = "工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工厂编码;推送ERP(必须)")
private String factoryNumber;
@Schema(description = "库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("库位名称")
private String warehouseName;
@Schema(description = "库位编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("库位编码;推送ERP(必须)")
private String warehouseNumber;
@Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计量单位;推送ERP(必须)")
private String unit;
@Schema(description = "开票类型;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("开票类型;推送ERP(必须)")
private String invoiceType;
@Schema(description = "暂估数量;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("暂估数量;推送ERP(必须)")
private BigDecimal quantity;
@Schema(description = "稅分类(字典:SALE_TAX);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("稅分类(字典:SALE_TAX);推送ERP(必须)")
private String taxAcctasscat;
@Schema(description = "项目类别;推送ERP")
@ExcelProperty("项目类别;推送ERP")
private String projectCategory;
@Schema(description = "装运地点;推送ERP")
@ExcelProperty("装运地点;推送ERP")
private String shippingPlace;
@Schema(description = "物料科目分配组;推送ERP必须")
@ExcelProperty("物料科目分配组;推送ERP必须")
private String metalAcctasscatGroup;
@Schema(description = "小协议号")
@ExcelProperty("小协议号")
private String agreementNumber;
@Schema(description = "总价")
@ExcelProperty("总价")
private BigDecimal gross;
@Schema(description = "金属元素缩写")
@ExcelProperty("金属元素缩写")
private String elementAbbreviation;
@Schema(description = "金属元素名称", example = "张三")
@ExcelProperty("金属元素名称")
private String elementName;
@Schema(description = "金属元素编码")
@ExcelProperty("金属元素编码")
private String elementNumber;
@Schema(description = "是否启用;处理明细中多个相同物料,只能允许一种物料启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用;处理明细中多个相同物料,只能允许一种物料启用")
private String isEnable;
@Schema(description = "价格条件详情;推送ERP(必须):JSON", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("价格条件详情;推送ERP(必须):JSON")
private String priceConditionDetail;
@Schema(description = "来料加工原料详情;推送ERP:订单类型(JSON)")
@ExcelProperty("来料加工原料详情;推送ERP:订单类型(JSON)")
private String originDetail;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "税率", requiredMode = Schema.RequiredMode.REQUIRED)
private String taxRte;
}

View File

@@ -0,0 +1,102 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 销售订单明细新增/修改 Request VO")
@Data
public class SalesOrderDetailSaveReqVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28517")
private Long id;
@Schema(description = "订单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9072")
@NotNull(message = "订单主键不能为空")
private Long orderId;
@Schema(description = "行项目;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "行项目;推送ERP(必须)不能为空")
private Long lineNumber;
@Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "物料名称不能为空")
private String materialName;
@Schema(description = "物料编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "物料编码;推送ERP(必须)不能为空")
private String materialNumber;
@Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "工厂名称不能为空")
private String factoryName;
@Schema(description = "工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "工厂编码;推送ERP(必须)不能为空")
private String factoryNumber;
@Schema(description = "库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "库位名称不能为空")
private String warehouseName;
@Schema(description = "库位编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "库位编码;推送ERP(必须)不能为空")
private String warehouseNumber;
@Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "计量单位;推送ERP(必须)不能为空")
private String unit;
@Schema(description = "开票类型;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "开票类型;推送ERP(必须)不能为空")
private String invoiceType;
@Schema(description = "暂估数量;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "暂估数量;推送ERP(必须)不能为空")
private BigDecimal quantity;
@Schema(description = "稅分类(字典:SALE_TAX);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "稅分类(字典:SALE_TAX);推送ERP(必须)不能为空")
private String taxAcctasscat;
@Schema(description = "项目类别;推送ERP")
private String projectCategory;
@Schema(description = "装运地点;推送ERP")
private String shippingPlace;
@Schema(description = "物料科目分配组;推送ERP必须")
private String metalAcctasscatGroup;
@Schema(description = "小协议号")
private String agreementNumber;
@Schema(description = "总价")
private BigDecimal gross;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "金属元素名称", example = "张三")
private String elementName;
@Schema(description = "金属元素编码")
private String elementNumber;
@Schema(description = "是否启用;处理明细中多个相同物料,只能允许一种物料启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "是否启用;处理明细中多个相同物料,只能允许一种物料启用不能为空")
private String isEnable;
@Schema(description = "价格条件详情;推送ERP(必须):JSON", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "价格条件详情;推送ERP(必须):JSON不能为空")
private String priceConditionDetail;
@Schema(description = "来料加工原料详情;推送ERP:订单类型(JSON)")
private String originDetail;
@Schema(description = "税率")
private String taxRte;
}

View File

@@ -0,0 +1,137 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import com.zt.plat.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 采购订单分页 Request VO")
@Data
public class SalesOrderPageReqVO extends PageParam {
@Schema(description = "ERP订单号")
private String orderSAPNumber;
@Schema(description = "订单号")
private String systemOrderNumber;
@Schema(description = "公司编码;推送ERP必须")
private String companyNumber;
@Schema(description = "客商编码;推送ERP必须")
private String supplierNumber;
@Schema(description = "客商名称", example = "芋艿")
private String supplierName;
@Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP必须", example = "2")
private String type;
@Schema(description = "凭证日期;推送ERP必须")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] voucherDate;
@Schema(description = "采购组织编码;推送ERP必须")
private String purchaseOrganizationCustomsDeclaration;
@Schema(description = "收货工厂名称", example = "芋艿")
private String receiveFactoryName;
@Schema(description = "收货工厂编码;推送ERP必须")
private String receiveFactoryNumber;
@Schema(description = "收货库位名称", example = "王五")
private String receiveWarehouseName;
@Schema(description = "收货库位编码;推送ERP")
private String receiveWarehouseNumber;
@Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP必须")
private String purchaseGroup;
@Schema(description = "计量单位")
private String unt;
@Schema(description = "货币码(字典:CUR);推送ERP必须")
private String currencyNumber;
@Schema(description = "汇率;推送ERP")
private BigDecimal exchangeRate;
@Schema(description = "合同纸质合同号;推送ERP必须")
private String paperContractNumber;
@Schema(description = "小协议号;推送ERP")
private String agreementNumber;
@Schema(description = "备注;推送ERP")
private String remark;
@Schema(description = "代理方编码;推送ERP")
private String agentNumber;
@Schema(description = "代理方名称", example = "张三")
private String agentName;
@Schema(description = "订单编码")
private String orderNumber;
@Schema(description = "系统合同编号")
private String contractNumber;
@Schema(description = "物料编码")
private String materialNumber;
@Schema(description = "物料名称", example = "王五")
private String materialName;
@Schema(description = "合同名称", example = "赵六")
private String contractName;
@Schema(description = "小户头号")
private String tenantNumber;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "ERP公司编号")
private String erpPurchaseCompanyNumber;
@Schema(description = "ERP公司名称", example = "王五")
private String erpPurchaseCompanyName;
@Schema(description = "ERP客商公司编码")
private String erpSalesCompanyNumber;
@Schema(description = "ERP客商公司名称", example = "芋艿")
private String erpSalesCompanyName;
@Schema(description = "采购组织名称", example = "赵六")
private String purchaseOrganizationName;
@Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2")
private String erpStatus;
@Schema(description = "请求ERP失败原因")
private String cause;
@Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2")
private String status;
@Schema(description = "采购组名称", example = "张三")
private String purchaseGroupName;
@Schema(description = "物料类型(字典:MTRL_TP)", example = "2")
private String mtrlTp;
@Schema(description = "订单分类")
private String splyBsnTp;
}

View File

@@ -0,0 +1,23 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Schema(description = "管理后台 - 订单审核请求对象 Request VO")
@Data
public class SalesOrderReqVO {
@Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "合同主键ID不能为空")
private Long id;
@Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "审核意见不能为空")
private String reviewOpinion;
@Schema(description = "状态:待推送 WAIT_PUSH已驳回 REJECTED", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "审核状态不能为空")
private String status;
}

View File

@@ -0,0 +1,201 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 采购订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class SalesOrderRespVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074")
@ExcelProperty("主键")
private Long id;
@Schema(description = "ERP订单号")
@ExcelProperty("ERP订单号")
private String orderSAPNumber;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单号")
private String systemOrderNumber;
@Schema(description = "公司编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("公司编码;推送ERP必须")
private String companyNumber;
@Schema(description = "客商编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("客商编码;推送ERP必须")
private String supplierNumber;
@Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("客商名称")
private String supplierName;
@Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("订单类型(字典:PRCH_ORD_TP);推送ERP必须")
private String type;
@Schema(description = "凭证日期;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("凭证日期;推送ERP必须")
private LocalDateTime voucherDate;
@Schema(description = "采购组织编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("采购组织编码;推送ERP必须")
private String purchaseOrganizationCustomsDeclaration;
@Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("收货工厂名称")
private String receiveFactoryName;
@Schema(description = "收货工厂编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("收货工厂编码;推送ERP必须")
private String receiveFactoryNumber;
@Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@ExcelProperty("收货库位名称")
private String receiveWarehouseName;
@Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("收货库位编码;推送ERP")
private String receiveWarehouseNumber;
@Schema(description = "计量单位")
private String unt;
@Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("采购组编码(字典:PRCH_GRP_TP);推送ERP必须")
private String purchaseGroup;
@Schema(description = "货币码(字典:CUR);推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("货币码(字典:CUR);推送ERP必须")
private String currencyNumber;
@Schema(description = "汇率;推送ERP")
@ExcelProperty("汇率;推送ERP")
private BigDecimal exchangeRate;
@Schema(description = "合同纸质合同号;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("合同纸质合同号;推送ERP必须")
private String paperContractNumber;
@Schema(description = "小协议号;推送ERP")
@ExcelProperty("小协议号;推送ERP")
private String agreementNumber;
@Schema(description = "备注;推送ERP")
@ExcelProperty("备注;推送ERP")
private String remark;
@Schema(description = "代理方编码;推送ERP")
@ExcelProperty("代理方编码;推送ERP")
private String agentNumber;
@Schema(description = "代理方名称", example = "张三")
@ExcelProperty("代理方名称")
private String agentName;
@Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单编码")
private String orderNumber;
@Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("系统合同编号")
private String contractNumber;
@Schema(description = "物料编码")
@ExcelProperty("物料编码")
private String materialNumber;
@Schema(description = "物料名称", example = "王五")
@ExcelProperty("物料名称")
private String materialName;
@Schema(description = "合同名称", example = "赵六")
@ExcelProperty("合同名称")
private String contractName;
@Schema(description = "小户头号")
@ExcelProperty("小户头号")
private String tenantNumber;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("ERP公司编号")
private String erpPurchaseCompanyNumber;
@Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@ExcelProperty("ERP公司名称")
private String erpPurchaseCompanyName;
@Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("ERP客商公司编码")
private String erpSalesCompanyNumber;
@Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("ERP客商公司名称")
private String erpSalesCompanyName;
@Schema(description = "采购组织名称", example = "赵六")
@ExcelProperty("采购组织名称")
private String purchaseOrganizationName;
@Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2")
@ExcelProperty("ERP状态(字典: ERP_REQ_STS)")
private String erpStatus;
@Schema(description = "请求ERP失败原因")
@ExcelProperty("请求ERP失败原因")
private String cause;
@Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2")
@ExcelProperty("订单状态(字典:PRCH_ORD_STS)")
private String status;
@Schema(description = "采购组名称", example = "张三")
@ExcelProperty("采购组名称")
private String purchaseGroupName;
@Schema(description = "订单明细")
@ExcelProperty("订单明细")
private List<PrchOrdDtlRespVO> prchOrdDtlRespVOS;
@Schema(description = "物料类型(字典:MTRL_TP)", example = "2")
@ExcelProperty("物料类型(字典:MTRL_TP)")
private String mtrlTp;
@Schema(description = "订单分类", example = "2")
@ExcelProperty("订单分类")
private String splyBsnTp;
@Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("公司名称")
private String cpName;
@Schema(description = "是否提交审核value为0或1")
@ExcelProperty("是否提交审核")
private int isPush;
@Schema(description = "流程实例编号")
@ExcelProperty("流程实例编号")
private String processInstanceId;
@Schema(description = "流程当前任务节点id")
@ExcelProperty("流程当前任务节点id")
private String taskId;
@Schema(description = " 审批意见")
@ExcelProperty(" 审批意见")
private String reviewOpinion;
}

View File

@@ -0,0 +1,182 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 采购订单新增/修改 Request VO")
@Data
public class SalesOrderSaveReqVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074")
private Long id;
@Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "公司名称不能为空")
private String cpName;
@Schema(description = "ERP订单号")
private String orderSAPNumber;
// @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
// @NotEmpty(message = "订单号不能为空")
// private String systemOrderNumber;
@Schema(description = "公司编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "公司编码;推送ERP必须不能为空")
private String companyNumber;
@Schema(description = "客商编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "客商编码;推送ERP必须不能为空")
private String supplierNumber;
@Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "客商名称不能为空")
private String supplierName;
@Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "订单类型(字典:PRCH_ORD_TP);推送ERP必须不能为空")
private String type;
@Schema(description = "凭证日期;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "凭证日期;推送ERP必须不能为空")
private LocalDateTime voucherDate;
@Schema(description = "采购组织编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "采购组织编码;推送ERP必须不能为空")
private String purchaseOrganizationCustomsDeclaration;
@Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "收货工厂名称不能为空")
private String receiveFactoryName;
@Schema(description = "收货工厂编码;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "收货工厂编码;推送ERP必须不能为空")
private String receiveFactoryNumber;
@Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotEmpty(message = "收货库位名称不能为空")
private String receiveWarehouseName;
@Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "收货库位编码;推送ERP不能为空")
private String receiveWarehouseNumber;
@Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "采购组编码(字典:PRCH_GRP_TP);推送ERP必须不能为空")
private String purchaseGroup;
@Schema(description = "货币码(字典:CUR);推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "货币码(字典:CUR);推送ERP必须不能为空")
private String currencyNumber;
@Schema(description = "汇率;推送ERP")
private BigDecimal exchangeRate;
@Schema(description = "合同纸质合同号;推送ERP必须", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "合同纸质合同号;推送ERP必须不能为空")
private String paperContractNumber;
@Schema(description = "小协议号;推送ERP")
private String agreementNumber;
@Schema(description = "备注;推送ERP")
private String remark;
@Schema(description = "代理方编码;推送ERP")
private String agentNumber;
@Schema(description = "代理方名称", example = "张三")
private String agentName;
//
// @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
// @NotEmpty(message = "订单编码不能为空")
// private String orderNumber;
@Schema(description = "计量单位")
@NotEmpty(message = "计量单位(unt)不能为空")
private String unt;
@Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "系统合同编号不能为空")
private String contractNumber;
@Schema(description = "物料编码")
private String materialNumber;
@Schema(description = "物料名称", example = "王五")
private String materialName;
@Schema(description = "合同名称", example = "赵六")
private String contractName;
@Schema(description = "小户头号")
private String tenantNumber;
@Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "ERP公司编号不能为空")
private String erpPurchaseCompanyNumber;
@Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotEmpty(message = "ERP公司名称不能为空")
private String erpPurchaseCompanyName;
@Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "ERP客商公司编码不能为空")
private String erpSalesCompanyNumber;
@Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "ERP客商公司名称不能为空")
private String erpSalesCompanyName;
@Schema(description = "采购组织名称", example = "赵六")
private String purchaseOrganizationName;
@Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2")
private String erpStatus;
@Schema(description = "请求ERP失败原因")
private String cause;
@Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2")
private String status;
@Schema(description = "采购组名称", example = "张三")
private String purchaseGroupName;
@Schema(description = "订单明细")
@ExcelProperty("订单明细")
private List<SalesOrderDetailSaveReqVO> salesOrderDetailSaveReqVOS;
@Schema(description = "流程实例编号")
@ExcelProperty("流程实例编号")
private String processInstanceId;
@Schema(description = "流程当前任务节点id")
@ExcelProperty("流程当前任务节点id")
private String taskId;
@Schema(description = " 审批意见")
@ExcelProperty(" 审批意见")
private String reviewOpinion;
@Schema(description = "是否提交审核value为0或1")
@ExcelProperty("是否提交审核")
private int isPush;
@Schema(description = "物料类别(字典:MTRL_TP)", example = "1")
@ExcelProperty("物料类别")
private String mtrlTp;
@Schema(description = "订单分类", example = "2")
@ExcelProperty("订单分类")
private String splyBsnTp;
}

View File

@@ -0,0 +1,22 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 采购订单状态 Request VO")
@Data
@ExcelIgnoreUnannotated
public class SalesOrderStsReqVO {
@Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26419")
private List<Long> ids;
@Schema(description = "采购订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "采购订单状态不能为空")
private String sts;
@Schema(description = "采购订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private List<String> orderNos;
}

View File

@@ -270,5 +270,10 @@ public class PrchOrdDtlDO extends BusinessBaseDO {
*/
@TableField("ELEM_CDG")
private String elemCdg;
/**
* 税率
*/
@TableField("TAX_RTE")
private String taxRte;
}

View File

@@ -257,4 +257,25 @@ public class PurchaseOrderDO extends BusinessBaseDO {
*/
@TableField("SPLY_BSN_TP")
private String splyBsnTp;
/**
* 产品组编码
*/
@TableField("PDT_GRP_CDG")
private String pdtGrpCdg;
/**
* 产品组名称
*/
@TableField("PDT_GRP_NAME")
private String pdtGrpName;
/**
* 分销聚道编码
*/
@TableField("SALE_ACS_CDG")
private String saleAcsCdg;
/**
* 分销聚道名称
*/
@TableField("SALE_ACS_NAME")
private String saleAcsName;
}

View File

@@ -0,0 +1,268 @@
package com.zt.plat.module.contractorder.dal.dataobject.salesorder;
import com.baomidou.mybatisplus.annotation.*;
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 采购订单 DO
*
* @author 后台管理-1
*/
@TableName("bse_prch_ord")
@KeySequence("bse_prch_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
/**
* 支持业务基类继承isBusiness=true 时继承 BusinessBaseDO否则继承 BaseDO
*/
public class SalesOrderDO extends BusinessBaseDO {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* ERP订单号
*/
@TableField("ORD_SAP_NUM")
private String orderSAPNumber;
/**
* 订单号
*/
@TableField("SYS_ORD_NUM")
private String systemOrderNumber;
/**
* 公司名称
*/
@TableField("CPN_NAME")
private String cpName;
/**
* 公司编码;推送ERP必须
*/
@TableField("CPN_NUM")
private String companyNumber;
/**
* 客商编码;推送ERP必须
*/
@TableField("SPLR_NUM")
private String supplierNumber;
/**
* 客商名称
*/
@TableField("SPLR_NAME")
private String supplierName;
/**
* 订单类型(字典:PRCH_ORD_TP);推送ERP必须
*/
@TableField("TP")
private String type;
/**
* 凭证日期;推送ERP必须
*/
@TableField("VCHR_DT")
private LocalDateTime voucherDate;
/**
* 采购组织编码;推送ERP必须
*/
@TableField("PRCH_ORGZ_CD")
private String purchaseOrganizationCustomsDeclaration;
/**
* 收货工厂名称
*/
@TableField("RCV_FACT_NAME")
private String receiveFactoryName;
/**
* 收货工厂编码;推送ERP必须
*/
@TableField("RCV_FACT_NUM")
private String receiveFactoryNumber;
/**
* 收货库位名称
*/
@TableField("RCV_WRH_NAME")
private String receiveWarehouseName;
/**
* 收货库位编码;推送ERP
*/
@TableField("RCV_WRH_NUM")
private String receiveWarehouseNumber;
/**
* 采购组编码(字典:PRCH_GRP_TP);推送ERP必须
*/
@TableField("PRCH_GRP")
private String purchaseGroup;
/**
* 货币码(字典:CUR);推送ERP必须
*/
@TableField("CUR_NUM")
private String currencyNumber;
/**
* 汇率;推送ERP
*/
@TableField("EXCH_RTE")
private BigDecimal exchangeRate;
/**
* 合同纸质合同号;推送ERP必须
*/
@TableField("PPR_CTRT_NUM")
private String paperContractNumber;
/**
* 小协议号;推送ERP
*/
@TableField("AGR_NUM")
private String agreementNumber;
/**
* 备注;推送ERP
*/
@TableField("RMK")
private String remark;
/**
* 代理方编码;推送ERP
*/
@TableField("AGT_NUM")
private String agentNumber;
/**
* 代理方名称
*/
@TableField("AGT_NAME")
private String agentName;
/**
* 订单编码
*/
// @TableField("ORD_NUM")
// private String orderNumber;
/**
* 系统合同编号
*/
@TableField("CTRT_NUM")
private String contractNumber;
/**
* 物料编码
*/
@TableField("MTRL_NUM")
private String materialNumber;
/**
* 物料名称
*/
@TableField("MTRL_NAME")
private String materialName;
/**
* 合同名称
*/
@TableField("CTRT_NAME")
private String contractName;
/**
* 小户头号
*/
@TableField("TNT_NUM")
private String tenantNumber;
/**
* ERP公司编号
*/
@TableField("ERP_PRCH_CPN_NUM")
private String erpPurchaseCompanyNumber;
/**
* ERP公司名称
*/
@TableField("ERP_PRCH_CPN_NAME")
private String erpPurchaseCompanyName;
/**
* ERP客商公司编码
*/
@TableField("ERP_SALE_CPN_NUM")
private String erpSalesCompanyNumber;
/**
* ERP客商公司名称
*/
@TableField("ERP_SALE_CPN_NAME")
private String erpSalesCompanyName;
/**
* 采购组织名称
*/
@TableField("PRCH_ORGZ_NAME")
private String purchaseOrganizationName;
/**
* ERP状态(字典: ERP_REQ_STS)
*/
@TableField("ERP_STS")
private String erpStatus;
/**
* 请求ERP失败原因
*/
@TableField("CAUS")
private String cause;
/**
* 订单状态(字典:PRCH_ORD_STS)
*/
@TableField("STS")
private String status;
/**
* 采购组名称
*/
@TableField("PRCH_GRP_NAME")
private String purchaseGroupName;
/**
* 流程实例编号
*/
@TableField("PRCS_INSC_ID")
private String processInstanceId;
/**
* 流程当前任务节点id
*/
@TableField("TSK_NDE_ID")
private String taskId;
/**
* 审批意见
*/
@TableField("RVW_ONN")
private String reviewOpinion;
/**
* 是否需要审批
*/
@TableField("IS_PUSH")
private int isPush;
/**
* 计量单位
*/
@TableField("UNT")
private String unt;
/**
* 物料字典
*
*/
@TableField("MTRL_TP")
private String mtrlTp;
/**
* 订单分类
*
*/
@TableField("SPLY_BSN_TP")
private String splyBsnTp;
@TableField("PDT_GRP_CDG")
private String pdtGrpCdg;
@TableField("PDT_GRP_NAME")
private String pdtGrpName;
@TableField("SALE_ACS_CDG")
private String saleAcsCdg;
@TableField("SALE_ACS_NAME")
private String saleAcsName;
}

View File

@@ -0,0 +1,158 @@
package com.zt.plat.module.contractorder.dal.dataobject.salesorder;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
/**
* 销售订单明细 DO
*
* @author 后台管理-1
*/
@TableName("bse_sale_ord_dtl")
@KeySequence("bse_sale_ord_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
/**
* 支持业务基类继承isBusiness=true 时继承 BusinessBaseDO否则继承 BaseDO
*/
public class SalesOrderDetailDO extends BusinessBaseDO {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 订单主键
*/
@TableField("ORD_ID")
private Long orderId;
/**
* 行项目;推送ERP(必须)
*/
@TableField("LINE_NUM")
private Long lineNumber;
/**
* 物料名称
*/
@TableField("MTRL_NAME")
private String materialName;
/**
* 物料编码;推送ERP(必须)
*/
@TableField("MTRL_NUM")
private String materialNumber;
/**
* 工厂名称
*/
@TableField("FACT_NAME")
private String factoryName;
/**
* 工厂编码;推送ERP(必须)
*/
@TableField("FACT_NUM")
private String factoryNumber;
/**
* 库位名称
*/
@TableField("WRH_NAME")
private String warehouseName;
/**
* 库位编码;推送ERP(必须)
*/
@TableField("WRH_NUM")
private String warehouseNumber;
/**
* 计量单位;推送ERP(必须)
*/
@TableField("UNT")
private String unit;
/**
* 开票类型;推送ERP(必须)
*/
@TableField("INV_TP")
private String invoiceType;
/**
* 暂估数量;推送ERP(必须)
*/
@TableField("QTY")
private BigDecimal quantity;
/**
* 稅分类(字典:SALE_TAX);推送ERP(必须)
*/
@TableField("TAX_ACTS")
private String taxAcctasscat;
/**
* 项目类别;推送ERP
*/
@TableField("PRJ_CTGR")
private String projectCategory;
/**
* 装运地点;推送ERP
*/
@TableField("SHPP_PLCE")
private String shippingPlace;
/**
* 物料科目分配组;推送ERP必须
*/
@TableField("MTL_ACTS_GRP")
private String metalAcctasscatGroup;
/**
* 小协议号
*/
@TableField("AGR_NUM")
private String agreementNumber;
/**
* 总价
*/
@TableField("GRS")
private BigDecimal gross;
/**
* 金属元素缩写
*/
@TableField("ELEM_ABBR")
private String elementAbbreviation;
/**
* 金属元素名称
*/
@TableField("ELEM_NAME")
private String elementName;
/**
* 金属元素编码
*/
@TableField("ELEM_NUM")
private String elementNumber;
/**
* 是否启用;处理明细中多个相同物料,只能允许一种物料启用
*/
@TableField("IS_ENB")
private String isEnable;
/**
* 价格条件详情;推送ERP(必须):JSON
*/
@TableField("PRC_CND_DTL")
private String priceConditionDetail;
/**
* 来料加工原料详情;推送ERP:订单类型(JSON)
*/
@TableField("ORGN_DTL")
private String originDetail;
/**
* 税率
*/
@TableField("TAX_RTE")
private String taxRte;
}

View File

@@ -24,7 +24,7 @@ public interface PurchaseOrderMapper extends BaseMapperX<PurchaseOrderDO> {
default PageResult<PurchaseOrderDO> selectPage(PurchaseOrderPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PurchaseOrderDO>()
.eqIfPresent(PurchaseOrderDO::getOrderSAPNumber, reqVO.getOrderSAPNumber())
.eqIfPresent(PurchaseOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber())
.likeIfPresent(PurchaseOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber())
.eqIfPresent(PurchaseOrderDO::getCompanyNumber, reqVO.getCompanyNumber())
.eqIfPresent(PurchaseOrderDO::getSupplierNumber, reqVO.getSupplierNumber())
.likeIfPresent(PurchaseOrderDO::getSupplierName, reqVO.getSupplierName())

View File

@@ -0,0 +1,51 @@
package com.zt.plat.module.contractorder.dal.mysql.salesorder;
import java.util.*;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 销售订单明细 Mapper
*
* @author 后台管理-1
*/
@Mapper
public interface SalesOrderDetailMapper extends BaseMapperX<SalesOrderDetailDO> {
default PageResult<SalesOrderDetailDO> selectPage(SalesOrderDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SalesOrderDetailDO>()
.eqIfPresent(SalesOrderDetailDO::getOrderId, reqVO.getOrderId())
.eqIfPresent(SalesOrderDetailDO::getLineNumber, reqVO.getLineNumber())
.likeIfPresent(SalesOrderDetailDO::getMaterialName, reqVO.getMaterialName())
.eqIfPresent(SalesOrderDetailDO::getMaterialNumber, reqVO.getMaterialNumber())
.likeIfPresent(SalesOrderDetailDO::getFactoryName, reqVO.getFactoryName())
.eqIfPresent(SalesOrderDetailDO::getFactoryNumber, reqVO.getFactoryNumber())
.likeIfPresent(SalesOrderDetailDO::getWarehouseName, reqVO.getWarehouseName())
.eqIfPresent(SalesOrderDetailDO::getWarehouseNumber, reqVO.getWarehouseNumber())
.eqIfPresent(SalesOrderDetailDO::getUnit, reqVO.getUnit())
.eqIfPresent(SalesOrderDetailDO::getInvoiceType, reqVO.getInvoiceType())
.eqIfPresent(SalesOrderDetailDO::getQuantity, reqVO.getQuantity())
.eqIfPresent(SalesOrderDetailDO::getTaxAcctasscat, reqVO.getTaxAcctasscat())
.eqIfPresent(SalesOrderDetailDO::getProjectCategory, reqVO.getProjectCategory())
.eqIfPresent(SalesOrderDetailDO::getShippingPlace, reqVO.getShippingPlace())
.eqIfPresent(SalesOrderDetailDO::getMetalAcctasscatGroup, reqVO.getMetalAcctasscatGroup())
.eqIfPresent(SalesOrderDetailDO::getAgreementNumber, reqVO.getAgreementNumber())
.eqIfPresent(SalesOrderDetailDO::getGross, reqVO.getGross())
.eqIfPresent(SalesOrderDetailDO::getElementAbbreviation, reqVO.getElementAbbreviation())
.likeIfPresent(SalesOrderDetailDO::getElementName, reqVO.getElementName())
.eqIfPresent(SalesOrderDetailDO::getElementNumber, reqVO.getElementNumber())
.eqIfPresent(SalesOrderDetailDO::getIsEnable, reqVO.getIsEnable())
.eqIfPresent(SalesOrderDetailDO::getPriceConditionDetail, reqVO.getPriceConditionDetail())
.eqIfPresent(SalesOrderDetailDO::getOriginDetail, reqVO.getOriginDetail())
.betweenIfPresent(SalesOrderDetailDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(SalesOrderDetailDO::getId));
}
}

View File

@@ -0,0 +1,62 @@
package com.zt.plat.module.contractorder.dal.mysql.salesorder;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 采购订单 Mapper
*
* @author 后台管理-1
*/
@Mapper
public interface SalesOrderMapper extends BaseMapperX<SalesOrderDO> {
default PageResult<SalesOrderDO> selectPage(SalesOrderPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SalesOrderDO>()
.eqIfPresent(SalesOrderDO::getOrderSAPNumber, reqVO.getOrderSAPNumber())
.eqIfPresent(SalesOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber())
.eqIfPresent(SalesOrderDO::getCompanyNumber, reqVO.getCompanyNumber())
.eqIfPresent(SalesOrderDO::getSupplierNumber, reqVO.getSupplierNumber())
.likeIfPresent(SalesOrderDO::getSupplierName, reqVO.getSupplierName())
.eqIfPresent(SalesOrderDO::getType, reqVO.getType())
.betweenIfPresent(SalesOrderDO::getVoucherDate, reqVO.getVoucherDate())
.eqIfPresent(SalesOrderDO::getPurchaseOrganizationCustomsDeclaration, reqVO.getPurchaseOrganizationCustomsDeclaration())
.likeIfPresent(SalesOrderDO::getReceiveFactoryName, reqVO.getReceiveFactoryName())
.eqIfPresent(SalesOrderDO::getReceiveFactoryNumber, reqVO.getReceiveFactoryNumber())
.likeIfPresent(SalesOrderDO::getReceiveWarehouseName, reqVO.getReceiveWarehouseName())
.eqIfPresent(SalesOrderDO::getReceiveWarehouseNumber, reqVO.getReceiveWarehouseNumber())
.eqIfPresent(SalesOrderDO::getPurchaseGroup, reqVO.getPurchaseGroup())
.eqIfPresent(SalesOrderDO::getCurrencyNumber, reqVO.getCurrencyNumber())
.eqIfPresent(SalesOrderDO::getExchangeRate, reqVO.getExchangeRate())
.eqIfPresent(SalesOrderDO::getPaperContractNumber, reqVO.getPaperContractNumber())
.eqIfPresent(SalesOrderDO::getAgreementNumber, reqVO.getAgreementNumber())
.eqIfPresent(SalesOrderDO::getRemark, reqVO.getRemark())
.eqIfPresent(SalesOrderDO::getAgentNumber, reqVO.getAgentNumber())
.likeIfPresent(SalesOrderDO::getAgentName, reqVO.getAgentName())
// .eqIfPresent(SalesOrderDO::getOrderNumber, reqVO.getOrderNumber())
.eqIfPresent(SalesOrderDO::getContractNumber, reqVO.getContractNumber())
.eqIfPresent(SalesOrderDO::getMaterialNumber, reqVO.getMaterialNumber())
.likeIfPresent(SalesOrderDO::getMaterialName, reqVO.getMaterialName())
.likeIfPresent(SalesOrderDO::getContractName, reqVO.getContractName())
.eqIfPresent(SalesOrderDO::getTenantNumber, reqVO.getTenantNumber())
.betweenIfPresent(SalesOrderDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(SalesOrderDO::getErpPurchaseCompanyNumber, reqVO.getErpPurchaseCompanyNumber())
.likeIfPresent(SalesOrderDO::getErpPurchaseCompanyName, reqVO.getErpPurchaseCompanyName())
.eqIfPresent(SalesOrderDO::getErpSalesCompanyNumber, reqVO.getErpSalesCompanyNumber())
.likeIfPresent(SalesOrderDO::getErpSalesCompanyName, reqVO.getErpSalesCompanyName())
.likeIfPresent(SalesOrderDO::getPurchaseOrganizationName, reqVO.getPurchaseOrganizationName())
.eqIfPresent(SalesOrderDO::getErpStatus, reqVO.getErpStatus())
.eqIfPresent(SalesOrderDO::getSplyBsnTp, reqVO.getSplyBsnTp())
.eqIfPresent(SalesOrderDO::getCause, reqVO.getCause())
.eqIfPresent(SalesOrderDO::getStatus, reqVO.getStatus())
.likeIfPresent(SalesOrderDO::getPurchaseGroupName, reqVO.getPurchaseGroupName())
.orderByDesc(SalesOrderDO::getId));
}
}

View File

@@ -195,12 +195,6 @@ public interface ContractService {
*/
Boolean complete(List<Long> ids);
/**
* 关联订单;该接口仅供订单关联使用
*
* @param LinkOrderReqVO 订单信息
* @return 结果
*/
Boolean linkOrder(@Valid LinkOrderReqVO LinkOrderReqVO);
}

View File

@@ -1556,20 +1556,6 @@ public class ContractServiceImpl implements ContractService {
return true;
}
@Override
public Boolean linkOrder(LinkOrderReqVO LinkOrderReqVO) {
SystemRelativityDO saveDO = new SystemRelativityDO();
saveDO.setStatus(DictEnum.BSE_SYS_REL_TP_ORDER.getCode());
saveDO.setUpId(LinkOrderReqVO.getUpOrderId());
saveDO.setDownId(LinkOrderReqVO.getDownOrderId());
//判断订单有没有关联过
if (systemRelativityMapper.selectCount(new LambdaQueryWrapper<SystemRelativityDO>().eq(SystemRelativityDO::getUpId, saveDO.getUpId()).eq(SystemRelativityDO::getDownId, saveDO.getDownId()))>0){
throw exception(CONTRACT_ORDER_EXISTS);
}
return systemRelativityMapper.insert(saveDO)>0;
}
private ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO) {
ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO();

View File

@@ -4,6 +4,7 @@ import java.util.*;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO;
import jakarta.validation.*;
@@ -52,7 +53,7 @@ public interface PurchaseOrderService {
* @param id 编号
* @return 采购订单
*/
PurchaseOrderDO getPurchaseOrder(Long id);
PurchaseOrderDO getPurchaseOrder(Long id,String splyBsnTp);
/**
* 获得采购订单分页
@@ -103,13 +104,7 @@ public interface PurchaseOrderService {
*
*/
CommonResult<MaterialRespVO> getMaterial(String orderNo);
/**
* 关联订单
*
* @param reqVO 关联订单
*
*/
boolean linkOrder(LinkOrderReqVO reqVO);
/**
* 订单审核通过和不通过
*
@@ -117,4 +112,16 @@ public interface PurchaseOrderService {
*
*/
boolean orderPassReject(PurchaseorderReqVO purchaseorderReqVO);
List<DownOrUpOrderRespVO> getOrderByOrderIdAndType(DownOrUpOrderReqVO reqVO);
List<String> getBindOrderByOrder(DownOrUpOrderReqVO reqVO);
/**
* 关联订单;该接口仅供订单关联使用
*
* @param LinkOrderReqVO 订单信息
* @return 结果
*/
Boolean linkOrder(@Valid LinkOrderReqVO LinkOrderReqVO);
}

View File

@@ -11,9 +11,13 @@ import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.bpm.api.task.dto.*;
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractRespVO;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.contract.SystemRelativityDO;
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO;
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO;
import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper;
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper;
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper;
import com.zt.plat.module.contractorder.enums.contract.DictEnum;
@@ -44,6 +48,7 @@ import com.zt.plat.framework.common.util.object.BeanUtils;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.zt.plat.module.contractorder.enums.ErrorCodeConstants.CONTRACT_ORDER_EXISTS;
import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.*;
@@ -80,8 +85,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Resource
private ContractService contractService;
@Resource
private SystemRelativityMapper systemRelativityMapper;
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) {
// 插入
PurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, PurchaseOrderDO.class);
@@ -95,7 +104,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
purchaseOrder.setSystemOrderNumber(orderNumber);
purchaseOrderMapper.insert(purchaseOrder);
if (createReqVO.getPrchOrdDtlSaveReqVOS().isEmpty()){
if (createReqVO.getPrchOrdDtlSaveReqVOS().isEmpty()) {
return BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class);
}
//批量插入订单明细
@@ -107,7 +116,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
}
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public void updatePurchaseOrder(PurchaseOrderSaveReqVO updateReqVO) {
// 校验存在
validatePurchaseOrderExists(updateReqVO.getId());
@@ -164,8 +173,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
}
@Override
public PurchaseOrderDO getPurchaseOrder(Long id) {
return purchaseOrderMapper.selectById(id);
public PurchaseOrderDO getPurchaseOrder(Long id, String splyBsnTp) {
return purchaseOrderMapper.selectOne(new LambdaQueryWrapper<PurchaseOrderDO>().eq(PurchaseOrderDO::getId, id).eq(splyBsnTp != null && !splyBsnTp.isEmpty(), PurchaseOrderDO::getSplyBsnTp, splyBsnTp));
}
@Override
@@ -474,10 +483,18 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
}
@Override
public boolean linkOrder(LinkOrderReqVO reqVO) {
return contractService.linkOrder(reqVO);
}
public Boolean linkOrder(LinkOrderReqVO LinkOrderReqVO) {
SystemRelativityDO saveDO = new SystemRelativityDO();
saveDO.setStatus(DictEnum.BSE_SYS_REL_TP_ORDER.getCode());
saveDO.setUpId(LinkOrderReqVO.getUpOrderId());
saveDO.setDownId(LinkOrderReqVO.getDownOrderId());
//判断订单有没有关联过
if (systemRelativityMapper.selectCount(new LambdaQueryWrapper<SystemRelativityDO>().eq(SystemRelativityDO::getUpId, saveDO.getUpId()).eq(SystemRelativityDO::getDownId, saveDO.getDownId())) > 0) {
throw exception(CONTRACT_ORDER_EXISTS);
}
return systemRelativityMapper.insert(saveDO) > 0;
}
private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) {
//head
@@ -543,7 +560,6 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
if (ObjectUtils.isEmpty(purchaseOrderDO)) {
throw exception(PURCHASE_ORDER_NOT_EXISTS);
}
AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData();
// 获取当前流程正在审批的任务节点
List<BpmTaskRespDTO> taskList = bpmTaskApi.getTaskListByProcessInstanceId(purchaseOrderDO.getProcessInstanceId()).getData();
BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1);
@@ -585,4 +601,68 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
}
return false;
}
@Override
public List<DownOrUpOrderRespVO> getOrderByOrderIdAndType(DownOrUpOrderReqVO reqVO) {
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(reqVO.getOrderId());
if (purchaseOrderDO == null) {
throw exception(PURCHASE_ORDER_NOT_EXISTS);
}
String contractNumber = purchaseOrderDO.getContractNumber();// 合同号
ContractRespVO upRelation = null;
if ("up".equals(reqVO.getOrderType())) {
log.info("获取上游订单");
//上游
upRelation = contractService.getUpRelation(Long.valueOf(contractNumber));
} else {
//下游
log.info("获取下游订单");
upRelation = contractService.getDownRelation(Long.valueOf(contractNumber));
}
List<DownOrUpOrderRespVO> orderList = new ArrayList<>();
if (upRelation != null) {
String systemContractNumber = upRelation.getSystemContractNumber();
List<PurchaseOrderDO> purchaseOrderDOS = purchaseOrderMapper.selectList(new LambdaQueryWrapper<PurchaseOrderDO>().eq(PurchaseOrderDO::getContractNumber, systemContractNumber));
purchaseOrderDOS.forEach(p -> {
DownOrUpOrderRespVO downOrUpOrderRespVO = new DownOrUpOrderRespVO();
downOrUpOrderRespVO.setOrderId(String.valueOf(p.getId()));
downOrUpOrderRespVO.setOrderNo(p.getSystemOrderNumber());
downOrUpOrderRespVO.setOrderType(reqVO.getOrderType());
downOrUpOrderRespVO.setContractId(String.valueOf(p.getId()));
downOrUpOrderRespVO.setContractName(p.getContractName());
downOrUpOrderRespVO.setContractNumber(p.getContractNumber());
orderList.add(downOrUpOrderRespVO);
}
);
}
return orderList;
}
@Override
public List<String> getBindOrderByOrder(DownOrUpOrderReqVO reqVO) {
List<String> orderList = new ArrayList<>();
if ("up".equals(reqVO.getOrderType())) {
log.info("获取上游订单");
//上游
List<SystemRelativityDO> systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper<SystemRelativityDO>().eq(SystemRelativityDO::getDownId, reqVO.getOrderId()));
if (!systemRelativityDOS.isEmpty()) {
systemRelativityDOS.forEach(systemRelativityDO -> {
orderList.add(systemRelativityDO.getUpId().toString());
});
}
} else {
//下游
log.info("获取下游订单");
List<SystemRelativityDO> systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper<SystemRelativityDO>().eq(SystemRelativityDO::getUpId, reqVO.getOrderId()));
if (!systemRelativityDOS.isEmpty()) {
systemRelativityDOS.forEach(systemRelativityDO -> {
orderList.add(systemRelativityDO.getDownId().toString());
});
}
}
return orderList;
}
}

View File

@@ -0,0 +1,85 @@
package com.zt.plat.module.contractorder.service.salesorder;
import java.util.*;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailRespVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO;
import jakarta.validation.*;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.PageParam;
/**
* 销售订单明细 Service 接口
*
* @author 后台管理-1
*/
public interface SalesOrderDetailService {
/**
* 创建销售订单明细
*
* @param createReqVO 创建信息
* @return 编号
*/
SalesOrderDetailRespVO createSalesOrderDetail(@Valid SalesOrderDetailSaveReqVO createReqVO);
/**
* 批量创建销售订单明细
*
* @param createReqVOS 创建信息
* @return 编号
*/
List<SalesOrderDetailRespVO> createSalesOrderDetail(@Valid List<SalesOrderDetailSaveReqVO> createReqVOS);
/**
* 更新销售订单明细
*
* @param updateReqVO 更新信息
*/
void updateSalesOrderDetail(@Valid SalesOrderDetailSaveReqVO updateReqVO);
/**
* 删除销售订单明细
*
* @param id 编号
*/
void deleteSalesOrderDetail(Long id);
/**
* 批量删除销售订单明细
*
* @param ids 编号
*/
void deleteSalesOrderDetailListByIds(List<Long> ids);
/**
* 获得销售订单明细
*
* @param id 编号
* @return 销售订单明细
*/
SalesOrderDetailDO getSalesOrderDetail(Long id);
/**
* 获得销售订单明细分页
*
* @param pageReqVO 分页查询
* @return 销售订单明细分页
*/
PageResult<SalesOrderDetailDO> getSalesOrderDetailPage(SalesOrderDetailPageReqVO pageReqVO);
/**
* 根据订单主键删除订单明细
*
* @param orderIds 订单主键
*
*/
void deleteSalesOrderDetailByOrderIds(List<Long> orderIds);
}

View File

@@ -0,0 +1,111 @@
package com.zt.plat.module.contractorder.service.salesorder;
import cn.hutool.core.collection.CollUtil;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailRespVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO;
import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderDetailMapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.framework.common.util.object.BeanUtils;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.zt.plat.module.contractorder.enums.salesorder.ErrorCodeConstants.SALES_ORDER_DETAIL_NOT_EXISTS;
/**
* 销售订单明细 Service 实现类
*
* @author 后台管理-1
*/
@Service
@Validated
public class SalesOrderDetailServiceImpl implements SalesOrderDetailService {
@Resource
private SalesOrderDetailMapper salesOrderDetailMapper;
@Override
@Transactional
public SalesOrderDetailRespVO createSalesOrderDetail(SalesOrderDetailSaveReqVO createReqVO) {
// 插入
SalesOrderDetailDO salesOrderDetail = BeanUtils.toBean(createReqVO, SalesOrderDetailDO.class);
salesOrderDetailMapper.insert(salesOrderDetail);
// 返回
return BeanUtils.toBean(salesOrderDetail, SalesOrderDetailRespVO.class);
}
@Override
@Transactional
public List<SalesOrderDetailRespVO> createSalesOrderDetail(List<SalesOrderDetailSaveReqVO> createReqVOS) {
List<SalesOrderDetailDO> salesOrderDetailDOS = BeanUtils.toBean(createReqVOS, SalesOrderDetailDO.class);
salesOrderDetailMapper.insertBatch(salesOrderDetailDOS);
return BeanUtils.toBean(salesOrderDetailDOS, SalesOrderDetailRespVO.class);
}
@Override
public void updateSalesOrderDetail(SalesOrderDetailSaveReqVO updateReqVO) {
// 校验存在
validateSalesOrderDetailExists(updateReqVO.getId());
// 更新
SalesOrderDetailDO updateObj = BeanUtils.toBean(updateReqVO, SalesOrderDetailDO.class);
salesOrderDetailMapper.updateById(updateObj);
}
@Override
public void deleteSalesOrderDetail(Long id) {
// 校验存在
validateSalesOrderDetailExists(id);
// 删除
salesOrderDetailMapper.deleteById(id);
}
@Override
public void deleteSalesOrderDetailListByIds(List<Long> ids) {
// 校验存在
validateSalesOrderDetailExists(ids);
// 删除
salesOrderDetailMapper.deleteByIds(ids);
}
private void validateSalesOrderDetailExists(List<Long> ids) {
List<SalesOrderDetailDO> list = salesOrderDetailMapper.selectByIds(ids);
if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
throw exception(SALES_ORDER_DETAIL_NOT_EXISTS);
}
}
private void validateSalesOrderDetailExists(Long id) {
if (salesOrderDetailMapper.selectById(id) == null) {
throw exception(SALES_ORDER_DETAIL_NOT_EXISTS);
}
}
@Override
public SalesOrderDetailDO getSalesOrderDetail(Long id) {
return salesOrderDetailMapper.selectById(id);
}
@Override
public PageResult<SalesOrderDetailDO> getSalesOrderDetailPage(SalesOrderDetailPageReqVO pageReqVO) {
return salesOrderDetailMapper.selectPage(pageReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteSalesOrderDetailByOrderIds(List<Long> orderIds) {
salesOrderDetailMapper.deleteBatch(SalesOrderDetailDO::getOrderId, orderIds);
}
}

View File

@@ -0,0 +1,65 @@
package com.zt.plat.module.contractorder.service.salesorder;
import java.util.*;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
import jakarta.validation.*;
import com.zt.plat.framework.common.pojo.PageResult;
/**
* 采购订单 Service 接口
*
* @author 后台管理-1
*/
public interface SalesOrderService {
/**
* 创建采购订单
*
* @param createReqVO 创建信息
* @return 编号
*/
SalesOrderRespVO createSalesOrder(@Valid SalesOrderSaveReqVO createReqVO);
/**
* 更新采购订单
*
* @param updateReqVO 更新信息
*/
void updateSalesOrder(@Valid SalesOrderSaveReqVO updateReqVO);
/**
* 删除采购订单
*
* @param id 编号
*/
void deleteSalesOrder(Long id);
/**
* 批量删除采购订单
*
* @param ids 编号
*/
void deleteSalesOrderListByIds(List<Long> ids);
/**
* 获得采购订单
*
* @param id 编号
* @return 采购订单
*/
SalesOrderDO getSalesOrder(Long id, String splyBsnTp);
/**
* 获得采购订单分页
*
* @param pageReqVO 分页查询
* @return 采购订单分页
*/
PageResult<SalesOrderDO> getSalesOrderPage(SalesOrderPageReqVO pageReqVO);
}

View File

@@ -0,0 +1,99 @@
package com.zt.plat.module.contractorder.service.salesorder;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderMapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.PURCHASE_ORDER_NOT_EXISTS;
/**
* 采购订单 Service 实现类
*
* @author 后台管理-1
*/
@Service
@Validated
public class SalesOrderServiceImpl implements SalesOrderService {
@Resource
private SalesOrderMapper salesOrderMapper;
@Override
@Transactional
public SalesOrderRespVO createSalesOrder(SalesOrderSaveReqVO createReqVO) {
// 插入
SalesOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, SalesOrderDO.class);
salesOrderMapper.insert(purchaseOrder);
// 返回
return BeanUtils.toBean(purchaseOrder, SalesOrderRespVO.class);
}
@Override
@Transactional
public void updateSalesOrder(SalesOrderSaveReqVO updateReqVO) {
// 校验存在
validateSalesOrderExists(updateReqVO.getId());
// 更新
SalesOrderDO updateObj = BeanUtils.toBean(updateReqVO, SalesOrderDO.class);
salesOrderMapper.updateById(updateObj);
}
@Override
@Transactional
public void deleteSalesOrder(Long id) {
// 校验存在
validateSalesOrderExists(id);
// 删除
salesOrderMapper.deleteById(id);
}
@Override
@Transactional
public void deleteSalesOrderListByIds(List<Long> ids) {
// 校验存在
validateSalesOrderExists(ids);
// 删除
salesOrderMapper.deleteByIds(ids);
}
private void validateSalesOrderExists(List<Long> ids) {
List<SalesOrderDO> list = salesOrderMapper.selectByIds(ids);
if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
throw exception(PURCHASE_ORDER_NOT_EXISTS);
}
}
private void validateSalesOrderExists(Long id) {
if (salesOrderMapper.selectById(id) == null) {
throw exception(PURCHASE_ORDER_NOT_EXISTS);
}
}
@Override
public SalesOrderDO getSalesOrder(Long id, String splyBsnTp) {
return salesOrderMapper.selectOne(new LambdaQueryWrapper<SalesOrderDO>().eq(SalesOrderDO::getId, id).eq(splyBsnTp != null && !splyBsnTp.isEmpty(), SalesOrderDO::getSplyBsnTp, splyBsnTp));
}
@Override
public PageResult<SalesOrderDO> getSalesOrderPage(SalesOrderPageReqVO pageReqVO) {
return salesOrderMapper.selectPage(pageReqVO);
}
}

View File

@@ -166,6 +166,10 @@
po.CREATOR,
po.UPDATER,
po.DELETED,
po.pdtGrpCdg,
po.pdtGrpName,
po.saleAcsCdg,
po.saleAcsName,
pod.ID as pod_id,
pod.ORD_ID,
pod.LINE_NUM,
@@ -279,6 +283,10 @@
<result column="UNT" property="unt"/>
<result column="MTRL_TP" property="mtrlTp"/>
<result column="SPLY_BSN_TP" property="splyBsnTp"/>
<result column="PDT_GRP_CDG" property="pdtGrpCdg"/>
<result column="PDT_GRP_NAME" property="pdtGrpName"/>
<result column="SALE_ACS_CDG" property="saleAcsCdg"/>
<result column="SALE_ACS_NAME" property="saleAcsName"/>
</resultMap>
<resultMap id="PrchOrdDtlResultMap" type="com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO">
@@ -328,6 +336,5 @@
<result column="ENTT_DTL" property="enttDtl"/>
<result column="ELEM_ABBR" property="elemAbbr"/>
<result column="ELEM_NAME" property="elemName"/>
<result column="ELEM_CDG" property="elemCdg"/>
</resultMap>
</mapper>