Browse Source

采购订单开发

master
叶佳兴 2 years ago
parent
commit
22ce16545e
  1. 3
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 31
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseMainController.java
  3. 17
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java
  4. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainExcelVO.java
  5. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainExportReqVO.java
  6. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainPageReqVO.java
  7. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/documentSwitch/SwitchDO.java
  8. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasePlan/PurchasePlanDetailDO.java
  9. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasePlan/PurchasePlanMainDO.java
  10. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PurchasePlanStatusEnum.java
  11. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/documentSwitch/SwitchService.java
  12. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java
  13. 280
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java

3
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -378,6 +378,9 @@ public interface ErrorCodeConstants {
ErrorCode PURCHASE_CLOSED_NOT_EXISTS = new ErrorCode(1_000_063_001, "采购订单已关闭");
ErrorCode PURCHASE_MAIN_CANNOT_CLOSE = new ErrorCode(1_000_073_004, "采购订单状态不支持关闭");
ErrorCode PURCHASE_MAIN_EXISTS = new ErrorCode(1_000_073_004, "采购订单存在要货计划任务单");
ErrorCode PURCHASE_MAIN_Have = new ErrorCode(1_000_073_004, "已经生成了要货计划,不可以下架");
ErrorCode PURCHASE_MAIN_NUMBERNO = new ErrorCode(1_000_073_004, "查未找到发布状态下的采购订单");
//采购订单子ErrorCode
ErrorCode PURCHASE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_063_001, "采购订单子不存在");
ErrorCode PURCHASE_DETAIL_ARGUMENT_NOT_EXISTS = new ErrorCode(1_000_063_002, "采购订单明细:订单号ppo_number、订单行pline_number、零件号pitem_code无效");

31
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseMainController.java

@ -162,8 +162,8 @@ public class PurchaseMainController {
return success(returnMap);
}
@PutMapping("/close")
@Operation(summary = "关闭采购订单申请主")
@PostMapping("/close")
@Operation(summary = "关闭采购订单主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchase-main:close')")
public CommonResult<Boolean> closePurchaseMain(@RequestParam("id") Long id) {
@ -171,4 +171,31 @@ public class PurchaseMainController {
return success(count > 0);
}
@PostMapping("/open")
@Operation(summary = "打开采购订单主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchase-main:open')")
public CommonResult<Boolean> openPurchaseMain(@RequestParam("id") Long id) {
Integer count = purchaseMainService.openPurchaseMain(id);
return success(count > 0);
}
@PostMapping("/publish")
@Operation(summary = "发布采购订单主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchase-main:publish')")
public CommonResult<Boolean> publishPurchaseMain(@RequestParam("id") Long id) {
Integer count = purchaseMainService.publishPurchaseMain(id);
return success(count > 0);
}
@PostMapping("/wit")
@Operation(summary = "下架采购订单主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchase-main:wit')")
public CommonResult<Boolean> witPurchaseMain(@RequestParam("id") Long id) {
Integer count = purchaseMainService.witPurchaseMain(id);
return success(count > 0);
}
}

17
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java

@ -1,15 +1,12 @@
package com.win.module.wms.controller.purchasePlan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
@ -55,12 +52,10 @@ public class PurchasePlanMainBaseVO {
private String creator;
@Schema(description = "开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime beginTime;
private String beginTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime endTime;
private String endTime;
@Schema(description = "状态")
private String status;

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainExcelVO.java

@ -1,16 +1,11 @@
package com.win.module.wms.controller.purchasePlan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import lombok.Data;
import java.time.LocalDateTime;
/**
@ -49,10 +44,10 @@ public class PurchasePlanMainExcelVO {
private String creator;
@ExcelProperty("开始时间")
private LocalDateTime beginTime;
private String beginTime;
@ExcelProperty("结束时间")
private LocalDateTime endTime;
private String endTime;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("plan_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainExportReqVO.java

@ -1,12 +1,11 @@
package com.win.module.wms.controller.purchasePlan.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 要货计划主 Excel 导出 Request VO,参数和 PurchasePlanMainPageReqVO 是一致的")
@ -43,11 +42,11 @@ public class PurchasePlanMainExportReqVO {
@Schema(description = "开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] beginTime;
private String[] beginTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] endTime;
private String[] endTime;
@Schema(description = "状态")
private String status;

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainPageReqVO.java

@ -1,10 +1,12 @@
package com.win.module.wms.controller.purchasePlan.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -44,12 +46,10 @@ public class PurchasePlanMainPageReqVO extends PageParam {
private String creator;
@Schema(description = "开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] beginTime;
private String[] beginTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] endTime;
private String[] endTime;
@Schema(description = "状态")
private String status;

18
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/documentSwitch/SwitchDO.java

@ -1,9 +1,8 @@
package com.win.module.wms.dal.dataobject.documentSwitch;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
/**
* 单据开关 DO
@ -12,12 +11,12 @@ import com.win.framework.mybatis.core.dataobject.BaseDO;
*/
@TableName("document_switch")
@Data
@EqualsAndHashCode(callSuper = true)
//@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SwitchDO extends BaseDO {
public class SwitchDO {
/**
* id
@ -40,5 +39,14 @@ public class SwitchDO extends BaseDO {
* 是否可用
*/
private String available;
/**
* 是否删除
*/
private Boolean deleted;
/**
* 租户编号
*/
private Integer tenantId;
}

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasePlan/PurchasePlanDetailDO.java

@ -1,13 +1,12 @@
package com.win.module.wms.dal.dataobject.purchasePlan;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sun.xml.bind.v2.TODO;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
/**
* 要货计划子 DO
@ -81,4 +80,9 @@ public class PurchasePlanDetailDO extends BaseDO {
*/
private String available;
/**
* 多租户编号
*/
private Long tenantId;
}

18
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasePlan/PurchasePlanMainDO.java

@ -1,13 +1,11 @@
package com.win.module.wms.dal.dataobject.purchasePlan;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sun.xml.bind.v2.TODO;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
/**
* 要货计划主 DO
@ -26,7 +24,7 @@ public class PurchasePlanMainDO extends BaseDO {
/**
* id
*/
@TableId
@TableId(type = IdType.AUTO)
private Long id;
/**
* 供应商代码
@ -67,11 +65,11 @@ public class PurchasePlanMainDO extends BaseDO {
/**
* 开始时间
*/
private LocalDateTime beginTime;
private String beginTime;
/**
* 结束时间
*/
private LocalDateTime endTime;
private String endTime;
/**
* 状态
*

63
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PurchasePlanStatusEnum.java

@ -0,0 +1,63 @@
package com.win.module.wms.enums.plan;
import java.util.stream.Stream;
public enum PurchasePlanStatusEnum {
NEW("1", "新增"),
CLOSED("2", "关闭"),
PUBLISHED("3", "发布"),
ACCEPTED("4", "接收"),
REJECTED("5", "不接收"),
COMPLETED("6", "完成"),
;
private final String code;
private String name;
PurchasePlanStatusEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return this.code;
}
public String getName() {
return this.name;
}
/**
* 用状态值获取枚举
*
* @param code
* @return
*/
static PurchasePlanStatusEnum getPlanStatusEnum(String code) {
for (PurchasePlanStatusEnum planStatusEnum : values()) {
if (planStatusEnum.getCode().equals(code)) {
return planStatusEnum;
}
}
return NEW;
}
public static PurchasePlanStatusEnum convertCode(String code) {
return Stream.of(values())
.filter(bean -> bean.code.equals(code))
.findAny()
.orElse(NEW);
}
public static PurchasePlanStatusEnum convertName(String name) {
return Stream.of(values())
.filter(bean -> bean.name.equals(name))
.findAny()
.orElse(NEW);
}
public static String[] getStatusNameArray() {
return Stream.of(values()).map(PurchasePlanStatusEnum::getName).toArray(String[]::new);
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/documentSwitch/SwitchService.java

@ -1,15 +1,16 @@
package com.win.module.wms.service.documentSwitch;
import java.util.*;
import javax.validation.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.documentSwitch.vo.SwitchCreateReqVO;
import com.win.module.wms.controller.documentSwitch.vo.SwitchExportReqVO;
import com.win.module.wms.controller.documentSwitch.vo.SwitchPageReqVO;
import com.win.module.wms.controller.documentSwitch.vo.SwitchUpdateReqVO;
import com.win.module.wms.dal.dataobject.documentSwitch.SwitchDO;
import com.win.framework.common.pojo.PageResult;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* 单据开关 Service 接口

63
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java

@ -7,6 +7,7 @@ import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
@ -96,9 +97,69 @@ public interface PurchaseMainService {
/**
* 关闭采购订单申请主
*
* @param id 购订单申请主ID
* @param id 采购订单申请主ID
* @return 更新数量
*/
Integer closePurchaseMain(Long id);
/**
* 打开采购订单申请主
*
* @param id 采购订单申请主ID
* @return 更新数量
*/
Integer openPurchaseMain(Long id);
/**
* 发布采购订单申请主
*
* @param id 采购订单申请主ID
* @return 更新数量
*/
Integer publishPurchaseMain(Long id);
/**
* 下架采购订单申请主
*
* @param id 采采购订单申请主ID
* @return 更新数量
*/
Integer witPurchaseMain(Long id);
/**
* 更新采购订单已计划数量
* @param poNumber
* @param poLine
* @param itemCode
* @param planQty
*/
void updateOrderPurchasePlanQty(String poNumber , String poLine, String itemCode, BigDecimal planQty);
/**
* 更新采购订单表的已收货数量
* @param poNumber
* @param poLine
* @param itemCode
* @param receivedQty
*/
void updateOrderPurchaseReceivedQty(String poNumber , String poLine, String itemCode, BigDecimal receivedQty);
/**
* 更新采购订单表的已发货数量
* @param poNumber
* @param poLine
* @param itemCode
* @param shippedQty
*/
void updateOrderPurchaseShippedQty(String poNumber , String poLine, String itemCode, BigDecimal shippedQty);
/**
* 更新采购订单表的已退货数量
* @param poNumber
* @param poLine
* @param itemCode
* @param returnedQty
*/
void updateOrderPurchaseReturnQty(String poNumber , String poLine, String itemCode, BigDecimal returnedQty);
}

280
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java

@ -2,6 +2,8 @@ package com.win.module.wms.service.purchase;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.enums.CommonStatusEnum;
import com.win.framework.common.exception.ServiceException;
@ -11,25 +13,35 @@ import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.wms.controller.purchase.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.purchase.PurchaseDetailConvert;
import com.win.module.wms.convert.purchase.PurchaseMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO;
import com.win.module.wms.dal.dataobject.documentSwitch.SwitchDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import com.win.module.wms.dal.dataobject.shift.ShiftDO;
import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper;
import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.order.OrderStatusEnum;
import com.win.module.wms.enums.plan.PlanStatusEnum;
import com.win.module.wms.enums.plan.PurchasePlanStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.currencyexchange.CurrencyexchangeService;
import com.win.module.wms.service.documentSwitch.SwitchService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.purchasePlan.PurchasePlanMainService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.service.shift.ShiftService;
@ -87,6 +99,12 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
private TrendsApi trendsApi;
@Resource
private PurchasePlanMainMapper purchasePlanMainMapper;
@Resource
private SwitchService switchService;
@Resource
private PurchasePlanMainService purchasePlanMainService;
@Resource
private PurchasePlanDetailMapper purchasePlanDetailMapper;
@Override
@ -302,7 +320,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
@ -314,16 +332,268 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
// 校验存在存在下级单据
PurchaseMainDO mainDO = validatePurchaseMainExists(id);
Long count = purchasePlanMainMapper.selectBySonNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(PURCHASERECEIPT_REQUEST_JOB_EXISTS);
if (count > 0) {
throw new ServiceException(PURCHASE_MAIN_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
if (!flag) {
throw new ServiceException(PURCHASE_MAIN_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
mainDO.setStatus(OrderStatusEnum.CLOSED.getCode());//增加操作记录
trendsApi.createTrends(id, "plan_purchase_main", "关闭了采购订单申请", TrendsTypeEnum.UPDATE);
return purchaseMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer openPurchaseMain(Long id) {
// 校验存在存在下级单据
PurchaseMainDO mainDO = validatePurchaseMainExists(id);
Long count = purchasePlanMainMapper.selectBySonNumber(mainDO.getNumber());
if (count > 0) {
throw new ServiceException(PURCHASE_MAIN_EXISTS);
}
// RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
// boolean flag = requestStatusState.close();
// if(!flag) {
// throw new ServiceException(PURCHASE_MAIN_CANNOT_CLOSE);
// }
mainDO.setStatus(OrderStatusEnum.READY.getCode());//增加操作记录
trendsApi.createTrends(id, "plan_purchase_main", "打开了采购订单申请", TrendsTypeEnum.UPDATE);
return purchaseMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer publishPurchaseMain(Long id) {
int res = 0;
// 校验存在存在下级单据
PurchaseMainDO mainDO = validatePurchaseMainExists(id);
Long count = purchasePlanMainMapper.selectBySonNumber(mainDO.getNumber());
if (count > 0) {
throw new ServiceException(PURCHASE_MAIN_EXISTS);
}
//如果是离散单
if ("DISCRETE".equals(mainDO.getType())) {
SwitchDO switchDO = switchService.selectSwitchExist("CreatePurchasePlanAfterDiscretePurchaseOrderPublished");
if (switchDO != null) {
//新增要货计划主表
PurchasePlanMainDO purchasePlanMainDO = new PurchasePlanMainDO();
purchasePlanMainDO.setStatus(PurchasePlanStatusEnum.NEW.getCode());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan");
if (businesstypeDO != null) {
purchasePlanMainDO.setBusinessType(businesstypeDO.getCode());
}
purchasePlanMainDO.setNumber(mainDO.getNumber());
purchasePlanMainDO.setAvailable("TRUE");
//供应商代码
purchasePlanMainDO.setSupplierCode(mainDO.getSupplierCode());
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, mainDO.getSupplierCode(), null);
if (ruleRespVO == null) {
throw new ServiceException(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS);
} else {
JSONObject conditionObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
purchasePlanMainDO.setWarehouseCode(String.valueOf(conditionObject.get("WarehouseCode")));
purchasePlanMainDO.setDockCode(String.valueOf(conditionObject.get("DockCode")));
purchasePlanMainDO.setBeginTime(String.valueOf(conditionObject.get("BeginTime")));
purchasePlanMainDO.setEndTime(String.valueOf(conditionObject.get("EndTime")));
purchasePlanMainDO.setTimeWindow(purchasePlanMainDO.getBeginTime() + "-" + purchasePlanMainDO.getEndTime());
}
purchasePlanMainMapper.insert(purchasePlanMainDO);
//新增要货计划子表
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper();
purchaseDetailDOQueryWrapper.eq("number", mainDO.getNumber());
List<PurchaseDetailDO> purchasePlanDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper);
for (PurchaseDetailDO purchaseDetailDO : purchasePlanDetailDOList) {
PurchasePlanDetailDO purchasePlanDetailDO = new PurchasePlanDetailDO();
purchasePlanDetailDO.setMasterId(purchasePlanMainDO.getId());
purchasePlanDetailDO.setPlanQty(purchaseDetailDO.getOrderQty());
purchasePlanDetailDO.setPoNumber(purchaseDetailDO.getNumber());
purchasePlanDetailDO.setPoLine(purchaseDetailDO.getLineNumber());
purchasePlanDetailDO.setItemCode(purchaseDetailDO.getItemCode());
purchasePlanDetailDO.setUom(purchaseDetailDO.getUom());
purchasePlanDetailDO.setAvailable("TRUE");
purchasePlanDetailDO.setTenantId(1L);
purchasePlanDetailMapper.insert(purchasePlanDetailDO);
}
}
}
mainDO.setStatus(OrderStatusEnum.PUBLISHED.getCode());//增加操作记录
trendsApi.createTrends(id, "plan_purchase_main", "发布了采购订单申请", TrendsTypeEnum.UPDATE);
res = purchaseMainMapper.updateById(mainDO);
return res;
}
@Override
@Transactional
public Integer witPurchaseMain(Long id) {
int res = 0;
// 校验存在存在下级单据
PurchaseMainDO mainDO = validatePurchaseMainExists(id);
Long count = purchasePlanMainMapper.selectBySonNumber(mainDO.getNumber());
if (count > 0) {
throw new ServiceException(PURCHASE_MAIN_EXISTS);
}
//查询要货计划子表
QueryWrapper<PurchasePlanDetailDO> purchasePlanDetailDOQueryWrapper = new QueryWrapper();
purchasePlanDetailDOQueryWrapper.eq("po_number", mainDO.getNumber());
List<PurchasePlanDetailDO> purchasePlanDetailDOList = purchasePlanDetailMapper.selectList(purchasePlanDetailDOQueryWrapper);
for (PurchasePlanDetailDO purchasePlanDetailDO : purchasePlanDetailDOList) {
if (purchasePlanDetailDO.getAvailable() != "FALSE") {
QueryWrapper<PurchasePlanMainDO> purchasePlanMainDOQueryWrapper = new QueryWrapper();
purchasePlanMainDOQueryWrapper.eq("number", mainDO.getNumber());
purchasePlanMainDOQueryWrapper.ne("status", PlanStatusEnum.CLOSED.getCode());
PurchasePlanMainDO purchasePlanMainDO = purchasePlanMainMapper.selectOne(purchasePlanMainDOQueryWrapper);
if (purchasePlanMainDO != null) {
throw new ServiceException(PURCHASE_MAIN_Have);
}
}
}
mainDO.setStatus(OrderStatusEnum.READY.getCode());//增加操作记录
trendsApi.createTrends(id, "plan_purchase_main", "下架了采购订单申请", TrendsTypeEnum.UPDATE);
return purchaseMainMapper.updateById(mainDO);
}
//更新采购订单已计划数量
@Override
public void updateOrderPurchasePlanQty(String poNumber, String poLine, String itemCode, BigDecimal planQty) {
QueryWrapper<PurchaseMainDO> purchaseMainDOQueryWrapper = new QueryWrapper();
purchaseMainDOQueryWrapper.eq("number", poNumber);
purchaseMainDOQueryWrapper.eq("status", OrderStatusEnum.PUBLISHED.getCode());
List<PurchaseMainDO> purchaseMainDOList = purchaseMainMapper.selectList(purchaseMainDOQueryWrapper);
if (purchaseMainDOList != null && purchaseMainDOList.size() > 0) {
for (PurchaseMainDO purchaseMainDO : purchaseMainDOList) {
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper();
purchaseDetailDOQueryWrapper.eq("number", poNumber);
purchaseDetailDOQueryWrapper.eq("line_number", poNumber);
purchaseDetailDOQueryWrapper.eq("item_code", poNumber);
purchaseDetailDOQueryWrapper.eq("available", "TRUE");
List<PurchaseDetailDO> purchaseDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper);
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) {
//如果是离散单
if ("DISCRETE".equals(purchaseMainDO.getType())) {
purchaseDetailDO.setPlannedQty(purchaseDetailDO.getPlannedQty().add(planQty));
} else {
purchaseDetailDO.setPlannedQty(planQty);
}
trendsApi.createTrends(purchaseDetailDO.getId(), "plan_purchase_detail", "修改了采购订单申请子", TrendsTypeEnum.UPDATE);
purchaseDetailMapper.updateById(purchaseDetailDO);
}
}
} else {
throw new ServiceException(PURCHASE_MAIN_NUMBERNO);
}
}
//更新采购订单表的已收货数量
@Override
public void updateOrderPurchaseReceivedQty(String poNumber, String poLine, String itemCode, BigDecimal receivedQty) {
QueryWrapper<PurchaseMainDO> purchaseMainDOQueryWrapper = new QueryWrapper();
purchaseMainDOQueryWrapper.eq("number", poNumber);
purchaseMainDOQueryWrapper.eq("status", OrderStatusEnum.PUBLISHED.getCode());
List<PurchaseMainDO> purchaseMainDOList = purchaseMainMapper.selectList(purchaseMainDOQueryWrapper);
if (purchaseMainDOList != null && purchaseMainDOList.size() > 0) {
for (PurchaseMainDO purchaseMainDO : purchaseMainDOList) {
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper();
purchaseDetailDOQueryWrapper.eq("number", poNumber);
purchaseDetailDOQueryWrapper.eq("line_number", poNumber);
purchaseDetailDOQueryWrapper.eq("item_code", poNumber);
purchaseDetailDOQueryWrapper.eq("available", "TRUE");
List<PurchaseDetailDO> purchaseDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper);
Boolean res = false;
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) {
if ("TRUE".equals(purchaseDetailDO.getAvailable())) {
res = true;
}
}
if ("DISCRETE".equals(purchaseMainDO.getType()) && res == true) {
purchaseMainDO.setStatus(OrderStatusEnum.COMPLETED.getCode());
}
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) {
//如果是离散单
if ("DISCRETE".equals(purchaseMainDO.getType())) {
if (purchaseDetailDO.getReceivedQty() == purchaseDetailDO.getOrderQty()
|| purchaseDetailDO.getReceivedQty().compareTo(purchaseDetailDO.getOrderQty().multiply(new BigDecimal(1).add(purchaseDetailDO.getOverReceivingPercent())))
== 1) {
purchaseDetailDO.setAvailable("FALSE");
} else {
purchaseDetailDO.setReceivedQty(receivedQty);
}
} else {
purchaseDetailDO.setReceivedQty(purchaseDetailDO.getReceivedQty().add(receivedQty));
}
trendsApi.createTrends(purchaseDetailDO.getId(), "plan_purchase_detail", "修改了采购订单申请子", TrendsTypeEnum.UPDATE);
purchaseDetailMapper.updateById(purchaseDetailDO);
}
trendsApi.createTrends(purchaseMainDO.getId(), "plan_purchase_main", "修改了采购订单申请", TrendsTypeEnum.UPDATE);
purchaseMainMapper.updateById(purchaseMainDO);
}
} else {
throw new ServiceException(PURCHASE_MAIN_NUMBERNO);
}
}
//更新采购订单表的已发货数量
@Override
public void updateOrderPurchaseShippedQty(String poNumber, String poLine, String itemCode, BigDecimal shippedQty) {
QueryWrapper<PurchaseMainDO> purchaseMainDOQueryWrapper = new QueryWrapper();
purchaseMainDOQueryWrapper.eq("number", poNumber);
purchaseMainDOQueryWrapper.eq("status", OrderStatusEnum.PUBLISHED.getCode());
List<PurchaseMainDO> purchaseMainDOList = purchaseMainMapper.selectList(purchaseMainDOQueryWrapper);
if (purchaseMainDOList != null && purchaseMainDOList.size() > 0) {
for (PurchaseMainDO purchaseMainDO : purchaseMainDOList) {
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper();
purchaseDetailDOQueryWrapper.eq("number", poNumber);
purchaseDetailDOQueryWrapper.eq("line_number", poNumber);
purchaseDetailDOQueryWrapper.eq("item_code", poNumber);
purchaseDetailDOQueryWrapper.eq("available", "TRUE");
List<PurchaseDetailDO> purchaseDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper);
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) {
//如果是离散单
if ("DISCRETE".equals(purchaseMainDO.getType())) {
purchaseDetailDO.setShippedQty(purchaseDetailDO.getShippedQty().add(shippedQty));
} else {
purchaseDetailDO.setPlannedQty(shippedQty);
}
trendsApi.createTrends(purchaseDetailDO.getId(), "plan_purchase_detail", "修改了采购订单申请子", TrendsTypeEnum.UPDATE);
purchaseDetailMapper.updateById(purchaseDetailDO);
}
}
} else {
throw new ServiceException(PURCHASE_MAIN_NUMBERNO);
}
}
//更新采购订单表的已发货数量
@Override
public void updateOrderPurchaseReturnQty(String poNumber, String poLine, String itemCode, BigDecimal returnedQty) {
QueryWrapper<PurchaseMainDO> purchaseMainDOQueryWrapper = new QueryWrapper();
purchaseMainDOQueryWrapper.eq("number", poNumber);
purchaseMainDOQueryWrapper.eq("status", OrderStatusEnum.PUBLISHED.getCode());
List<PurchaseMainDO> purchaseMainDOList = purchaseMainMapper.selectList(purchaseMainDOQueryWrapper);
if (purchaseMainDOList != null && purchaseMainDOList.size() > 0) {
for (PurchaseMainDO purchaseMainDO : purchaseMainDOList) {
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper();
purchaseDetailDOQueryWrapper.eq("number", poNumber);
purchaseDetailDOQueryWrapper.eq("line_number", poNumber);
purchaseDetailDOQueryWrapper.eq("item_code", poNumber);
purchaseDetailDOQueryWrapper.eq("available", "TRUE");
List<PurchaseDetailDO> purchaseDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper);
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) {
//如果是离散单
if ("DISCRETE".equals(purchaseMainDO.getType())) {
purchaseDetailDO.setReturnedQty(returnedQty);
} else {
purchaseDetailDO.setReturnedQty(purchaseDetailDO.getReturnedQty().add(returnedQty));
}
trendsApi.createTrends(purchaseDetailDO.getId(), "plan_purchase_detail", "修改了采购订单申请子", TrendsTypeEnum.UPDATE);
purchaseDetailMapper.updateById(purchaseDetailDO);
}
}
} else {
throw new ServiceException(PURCHASE_MAIN_NUMBERNO);
}
}
}

Loading…
Cancel
Save