订单管理相关
This commit is contained in:
@@ -127,7 +127,7 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
||||
@PostMapping("/submit-erp061")
|
||||
@Operation(summary = "推送ERP订单", description = "061')")
|
||||
@PreAuthorize("@ss.hasPermission('bse:purchase-order:update')")
|
||||
public CommonResult<?> submitErp061(@RequestBody @Validated @NotNull(message = "采购订单id不能为空") List<Long> ids) {
|
||||
public CommonResult<?> submitErp061(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List<Long> ids) {
|
||||
return success( purchaseOrderService.submitErp061(ids));
|
||||
}
|
||||
@PostMapping("/submit-erp062")
|
||||
@@ -145,9 +145,17 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
||||
}
|
||||
//根据订单id修改订单状态
|
||||
@PutMapping("/update-order-status")
|
||||
@Operation(summary = "根据订单id修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS'`")
|
||||
public CommonResult<Boolean> updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("sts") String sts){
|
||||
return success(purchaseOrderService.updateOrderStatus(orderId,sts));
|
||||
@Operation(summary = "批量修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS' 可以根据订单号和订单id修改")
|
||||
public CommonResult<Boolean> updateOrderStatus(@RequestBody @Validated PurchaseOrderStsReqVO req){
|
||||
purchaseOrderService.updateOrderStatusByIdOrOrderNo(req);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
//查询物料接口
|
||||
@GetMapping("/material")
|
||||
@Operation(summary = "查询物料接口")
|
||||
public CommonResult<MaterialRespVO> getMaterialList(@RequestParam @Validated @NotEmpty(message = "采购订单号不能为空") String orderNo){
|
||||
return purchaseOrderService.getMaterial(orderNo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Schema(description = "管理后台 - 物料响应 VO")
|
||||
public class MaterialRespVO {
|
||||
@Schema(description = "订单号")
|
||||
private String orderNo;
|
||||
@Schema(description = "订单id")
|
||||
private String id;
|
||||
@Schema(description = "物料类型")
|
||||
private String materialType;
|
||||
@Schema(description = "物料单位")
|
||||
private String materialUnit;
|
||||
@Schema(description = "物料明细")
|
||||
private List<MaterialDetails> materialDetails;
|
||||
|
||||
@Data
|
||||
public static class MaterialDetails {
|
||||
@Schema(description = "物料名称")
|
||||
private String materialName;
|
||||
@Schema(description = "物料编码")
|
||||
private String materialCode;
|
||||
@Schema(description = "物料类型")
|
||||
private String materialType;
|
||||
@Schema(description = "物料单位")
|
||||
private String materialUnit;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.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 PurchaseOrderStsReqVO {
|
||||
@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;
|
||||
}
|
||||
@@ -89,7 +89,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO {
|
||||
* 计量单位;推送ERP(必须)
|
||||
*/
|
||||
@TableField("UNT")
|
||||
private BigDecimal unt;
|
||||
private String unt;
|
||||
/**
|
||||
* 含税单价;推送ERP(必须)
|
||||
*/
|
||||
|
||||
@@ -238,6 +238,11 @@ public class PurchaseOrderDO extends BusinessBaseDO {
|
||||
@TableField("IS_PUSH")
|
||||
private int isPush;
|
||||
|
||||
/**
|
||||
* 计量单位
|
||||
*/
|
||||
@TableField("UNT")
|
||||
private String unt;
|
||||
|
||||
/**
|
||||
* 物料字典
|
||||
|
||||
@@ -75,4 +75,6 @@ public interface PrchOrdDtlService {
|
||||
* @param ordIds 编号
|
||||
*/
|
||||
void deletePrchOrdDtlListByOrdIds(List<Long> ordIds);
|
||||
|
||||
List<PrchOrdDtlDO> getDetailsByOrderId(Long ordId);
|
||||
}
|
||||
|
||||
@@ -113,4 +113,10 @@ public class PrchOrdDtlServiceImpl implements PrchOrdDtlService {
|
||||
deletePrchOrdDtlListByIds(convertList(prchOrdDtlDOS, PrchOrdDtlDO::getId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PrchOrdDtlDO> getDetailsByOrderId(Long ordId) {
|
||||
|
||||
return prchOrdDtlMapper.selectList(new LambdaQueryWrapper<>(PrchOrdDtlDO.class).eq(PrchOrdDtlDO::getOrdId, ordId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.zt.plat.module.contractorder.service.purchaseorder;
|
||||
|
||||
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.dal.dataobject.purchaseorder.PurchaseOrderDO;
|
||||
import jakarta.validation.*;
|
||||
@@ -83,4 +84,7 @@ public interface PurchaseOrderService {
|
||||
List<PurchaseOrderDetailsRespVO> getOrderByOrderNo(List<String> orderNo);
|
||||
|
||||
void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO);
|
||||
void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO);
|
||||
|
||||
CommonResult<MaterialRespVO> getMaterial(String orderNo);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
|
||||
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
|
||||
@@ -125,6 +127,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
prchOrdDtlService.deletePrchOrdDtlListByOrdIds(ids);
|
||||
|
||||
}
|
||||
private void validatePurchaseOrderNosExists(List<String> orderNos){
|
||||
List<PurchaseOrderDO> list = purchaseOrderMapper.selectList(new LambdaQueryWrapper<PurchaseOrderDO>().in(PurchaseOrderDO::getSystemOrderNumber, orderNos));
|
||||
if (CollUtil.isEmpty(list) || list.size() != orderNos.size()) {
|
||||
throw exception(PURCHASE_ORDER_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
private void validatePurchaseOrderExists(List<Long> ids) {
|
||||
List<PurchaseOrderDO> list = purchaseOrderMapper.selectByIds(ids);
|
||||
@@ -317,6 +325,62 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
purchaseOrderRespVO.setPrchOrdDtlRespVOS(BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO) {
|
||||
// 校验存在
|
||||
if (reqVO.getIds()!=null){
|
||||
validatePurchaseOrderExists(reqVO.getIds());
|
||||
}
|
||||
if (reqVO.getOrderNos()!=null){
|
||||
validatePurchaseOrderNosExists(reqVO.getOrderNos());
|
||||
}
|
||||
PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(reqVO.getSts());
|
||||
if (byCode == null) {
|
||||
throw exception(PURCHASE_ORDER_STATUS_ERROR);
|
||||
}
|
||||
purchaseOrderMapper.update(new LambdaUpdateWrapper<PurchaseOrderDO>().in(reqVO.getOrderNos()!=null,PurchaseOrderDO::getSystemOrderNumber, reqVO.getOrderNos()).in(reqVO.getIds()!=null,PurchaseOrderDO::getId, reqVO.getIds()).set(PurchaseOrderDO::getStatus, reqVO.getSts()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<MaterialRespVO> getMaterial(String orderNo) {
|
||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectOne(new LambdaQueryWrapper<PurchaseOrderDO>().eq(PurchaseOrderDO::getSystemOrderNumber, orderNo));
|
||||
if (purchaseOrderDO == null){
|
||||
throw exception(PURCHASE_ORDER_NOT_EXISTS);
|
||||
}
|
||||
String mtrlTp = purchaseOrderDO.getMtrlTp();
|
||||
if ("RAW".equals(mtrlTp)){
|
||||
//原料
|
||||
MaterialRespVO materialRespVO = new MaterialRespVO();
|
||||
materialRespVO.setMaterialType(mtrlTp);
|
||||
materialRespVO.setMaterialUnit(purchaseOrderDO.getUnt());
|
||||
materialRespVO.setOrderNo(purchaseOrderDO.getSystemOrderNumber());
|
||||
MaterialRespVO.MaterialDetails materialDetails = new MaterialRespVO.MaterialDetails();
|
||||
materialDetails.setMaterialCode(purchaseOrderDO.getMaterialNumber());
|
||||
materialDetails.setMaterialName(purchaseOrderDO.getMaterialName());
|
||||
materialDetails.setMaterialUnit(purchaseOrderDO.getUnt());
|
||||
materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp());
|
||||
materialRespVO.setMaterialDetails(List.of(materialDetails));
|
||||
return CommonResult.success(materialRespVO);
|
||||
}else {
|
||||
List<PrchOrdDtlDO> detailsByOrderIds = prchOrdDtlService.getDetailsByOrderId(purchaseOrderDO.getId());
|
||||
MaterialRespVO materialRespVO = new MaterialRespVO();
|
||||
materialRespVO.setMaterialType(mtrlTp);
|
||||
materialRespVO.setMaterialUnit(purchaseOrderDO.getUnt());
|
||||
materialRespVO.setId(String.valueOf(purchaseOrderDO.getId()));
|
||||
materialRespVO.setOrderNo(purchaseOrderDO.getSystemOrderNumber());
|
||||
materialRespVO.setMaterialDetails(detailsByOrderIds.stream().map(prchOrdDtlDO -> {
|
||||
MaterialRespVO.MaterialDetails materialDetails = new MaterialRespVO.MaterialDetails();
|
||||
materialDetails.setMaterialCode(prchOrdDtlDO.getMtrlNum());
|
||||
materialDetails.setMaterialName(prchOrdDtlDO.getMtrlName());
|
||||
materialDetails.setMaterialUnit(prchOrdDtlDO.getUnt());
|
||||
materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp());
|
||||
return materialDetails;
|
||||
}).toList());
|
||||
return CommonResult.success(materialRespVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) {
|
||||
//head
|
||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId());
|
||||
@@ -328,13 +392,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
//itex
|
||||
setItex(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO);
|
||||
//acct
|
||||
// 使用FastJSON2直接将List转换为JSONArray
|
||||
// acct部分:转换List为JSONArray
|
||||
List<JSONObject> actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream()
|
||||
.map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject)
|
||||
.toList();
|
||||
|
||||
// 直接使用FastJSON2将List转换为JSONArray(关键优化点)
|
||||
JSONArray jsonArray = JSONArray.from(actsCtgrDtlList);
|
||||
|
||||
// 设置到对象中
|
||||
@@ -374,7 +434,6 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
});
|
||||
erpOrderUpdateReqVO.setItexs(itexs);
|
||||
}
|
||||
|
||||
private String generateOrderNumber(String materialType) {
|
||||
return sequenceApi.getNextSequence("PURCHASE_ORDER_NUMBER", null, null).getData();
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
|
||||
<select id="selectByOrderId"
|
||||
resultType="com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO">
|
||||
select * from bse_prch_ord;
|
||||
select * from bse_prch_ord where sys_ord_num =#{orderId};
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user