Browse Source

BUG修改

master
叶佳兴 2 years ago
parent
commit
6244b608cf
  1. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseMainController.java
  2. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanDetailPageReqVO.java
  3. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java
  4. 24
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestMainBaseVO.java
  5. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestMainUpdateReqVO.java
  6. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java
  7. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestMainConvert.java
  8. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanDetailMapper.java
  9. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java
  10. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java
  11. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java
  12. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java
  13. 349
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java

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

@ -57,7 +57,7 @@ public class PurchaseMainController {
@Operation(summary = "更新采购订单主")
@PreAuthorize("@ss.hasPermission('wms:purchase-main:update')")
public CommonResult<Boolean> updatePurchaseMain(@Valid @RequestBody PurchaseMainUpdateReqVO updateReqVO) {
Long result = purchaseMainService.updatePurchaseMain(updateReqVO);
Long result = purchaseMainService.updatePurchaseMain(updateReqVO);
return success(result > 0);
}
@ -67,13 +67,14 @@ public class PurchaseMainController {
public CommonResult<PageResult<PurchaseMainRespVO>> getPurchaseMainSenior(@Valid @RequestBody CustomConditions conditions) {
PageResult<PurchaseMainDO> pageResult = purchaseMainService.getPurchaseMainSenior(conditions);
PageResult<PurchaseMainRespVO> result = PurchaseMainConvert.INSTANCE.convertPage(pageResult);
for(PurchaseMainRespVO vo : result.getList()) {
for (PurchaseMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
return success(result);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购订单主")
@Parameter(name = "id", description = "编号", required = true)
@ -114,12 +115,12 @@ public class PurchaseMainController {
@PreAuthorize("@ss.hasPermission('wms:purchase-main:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseMainExcel(@Valid PurchaseMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
HttpServletResponse response) throws IOException {
List<PurchaseMainDO> list = purchaseMainService.getPurchaseMainList(exportReqVO);
// 导出 Excel
List<PurchaseMainExcelVO> datas = PurchaseMainConvert.INSTANCE.convertList02(list);
for(PurchaseMainExcelVO vo : datas) {
if(vo.getCreator()!=null){
for (PurchaseMainExcelVO vo : datas) {
if (vo.getCreator() != null) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
@ -160,7 +161,7 @@ public class PurchaseMainController {
List<PurchaseMainImportErrorVO> errorList = purchaseMainService.importPurchaseMaintList(createReqVOList, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
if (!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("采购订单基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanDetailPageReqVO.java

@ -31,6 +31,10 @@ public class PurchasePlanDetailPageReqVO extends PageParam {
@Schema(description = "备注")
private String remark;
/**
* 主表ID
*/
private Long masterId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java

@ -55,8 +55,8 @@ public class SupplierdeliverRequestMainController {
@Operation(summary = "更新供应商发货申请主")
@PreAuthorize("@ss.hasPermission('wms:supplierdeliver-request-main:update')")
public CommonResult<Boolean> updateSupplierdeliverRequestMain(@Valid @RequestBody SupplierdeliverRequestMainUpdateReqVO updateReqVO) {
supplierdeliverRequestMainService.updateSupplierdeliverRequestMain(updateReqVO);
return success(true);
Long result = supplierdeliverRequestMainService.updateSupplierdeliverRequestMain(updateReqVO);
return success(result > 0);
}
@DeleteMapping("/delete")
@ -85,13 +85,14 @@ public class SupplierdeliverRequestMainController {
List<SupplierdeliverRequestMainDO> list = supplierdeliverRequestMainService.getSupplierdeliverRequestMainList(ids);
return success(SupplierdeliverRequestMainConvert.INSTANCE.convertList(list));
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得物品基本信息分页")
@PreAuthorize("@ss.hasPermission('wms:SupplierdeliverRequestMain:query')")
public CommonResult<PageResult<SupplierdeliverRequestMainRespVO>> getSupplierdeliverRequestMainSenior(@Valid @RequestBody CustomConditions conditions) {
PageResult<SupplierdeliverRequestMainDO> pageResult = supplierdeliverRequestMainService.getSupplierdeliverRequestMainSenior(conditions);
PageResult<SupplierdeliverRequestMainRespVO> result = SupplierdeliverRequestMainConvert.INSTANCE.convertPage(pageResult);
for(SupplierdeliverRequestMainRespVO vo : result.getList()) {
for (SupplierdeliverRequestMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
@ -112,11 +113,11 @@ public class SupplierdeliverRequestMainController {
@PreAuthorize("@ss.hasPermission('wms:supplierdeliver-request-main:export')")
@OperateLog(type = EXPORT)
public void exportSupplierdeliverRequestMainExcel(@Valid SupplierdeliverRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
HttpServletResponse response) throws IOException {
List<SupplierdeliverRequestMainDO> list = supplierdeliverRequestMainService.getSupplierdeliverRequestMainList(exportReqVO);
// 导出 Excel
List<SupplierdeliverRequestMainExcelVO> datas = SupplierdeliverRequestMainConvert.INSTANCE.convertList02(list);
for(SupplierdeliverRequestMainExcelVO vo : datas) {
for (SupplierdeliverRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
@ -156,7 +157,7 @@ public class SupplierdeliverRequestMainController {
List<SupplierdeliverRequestMainImportErrorVO> errorList = supplierdeliverRequestMainService.importSupplierdeliverRequestMainList(createReqVOList, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
if (!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("供应商发货申请基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}

24
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestMainBaseVO.java

@ -28,11 +28,11 @@ public class SupplierdeliverRequestMainBaseVO {
private String ppNumber;
@Schema(description = "发货单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "发货单号不能为空")
// @NotNull(message = "发货单号不能为空")
private String asnNumber;
@Schema(description = "供应商代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "供应商代码不能为空")
// @NotNull(message = "供应商代码不能为空")
private String supplierCode;
@Schema(description = "联系人姓名")
@ -48,18 +48,18 @@ public class SupplierdeliverRequestMainBaseVO {
private String fromWarehouseCode;
@Schema(description = "到仓库代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "到仓库代码不能为空")
// @NotNull(message = "到仓库代码不能为空")
private String toWarehouseCode;
@Schema(description = "到月台代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "到月台代码不能为空")
// @NotNull(message = "到月台代码不能为空")
private String toDockCode;
@Schema(description = "时间窗口")
private String timeWindow;
@Schema(description = "计划到货时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "计划到货时间不能为空")
// @NotNull(message = "计划到货时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime planArriveTime;
@ -73,11 +73,11 @@ public class SupplierdeliverRequestMainBaseVO {
private String vehiclePlateNumber;
@Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "单据号不能为空")
// @NotNull(message = "单据号不能为空")
private String number;
@Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "业务类型不能为空")
// @NotNull(message = "业务类型不能为空")
private String businessType;
@Schema(description = "备注")
@ -99,7 +99,7 @@ public class SupplierdeliverRequestMainBaseVO {
private LocalDateTime dueTime;
@Schema(description = "部门", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "部门不能为空")
// @NotNull(message = "部门不能为空")
private String departmentCode;
@Schema(description = "状态")
@ -113,19 +113,19 @@ public class SupplierdeliverRequestMainBaseVO {
private String updater;
@Schema(description = "自动提交", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "自动提交不能为空")
// @NotNull(message = "自动提交不能为空")
private String autoCommit;
@Schema(description = "自动通过", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "自动通过不能为空")
// @NotNull(message = "自动通过不能为空")
private String autoAgree;
@Schema(description = "自动执行", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "自动执行不能为空")
// @NotNull(message = "自动执行不能为空")
private String autoExecute;
@Schema(description = "直接生成记录", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "直接生成记录不能为空")
// @NotNull(message = "直接生成记录不能为空")
private String directCreateRecord;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestMainUpdateReqVO.java

@ -1,12 +1,16 @@
package com.win.module.wms.controller.supplierdeliverRequest.vo;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailUpdateReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.List;
@Schema(description = "管理后台 - 供应商发货申请主更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class SupplierdeliverRequestMainUpdateReqVO extends SupplierdeliverRequestMainBaseVO {
@Schema(description = "子表数据")
private List<SupplierdeliverRequestDetailUpdateReqVO> subList;
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java

@ -1,7 +1,11 @@
package com.win.module.wms.convert.supplierdeliverRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailUpdateReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseMainCreateReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseMainImportErrorVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.*;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO;
import org.mapstruct.Mapper;
@ -35,6 +39,8 @@ public interface SupplierdeliverRequestDetailConvert {
List<SupplierdeliverRequestDetailDO> convertList03(List<SupplierdeliverRequestDetailCreateReqVO> list);
List<SupplierdeliverRequestDetailDO> convertList05(List<SupplierdeliverRequestDetailUpdateReqVO> list);
SupplierdeliverRequestDetailCreateReqVO convert1(SupplierdeliverRequestDetailDO bean);
@Mappings({
@ -51,5 +57,9 @@ public interface SupplierdeliverRequestDetailConvert {
@Mapping(source = "mainVo.number", target = "number"),
})
SupplierdeliverRequestMainImportErrorVO convert(SupplierdeliverRequestMainCreateReqVO mainVo, SupplierdeliverRequestDetailCreateReqVO detailVo);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
SupplierdeliverRequestMainImportErrorVO convert(SupplierdeliverRequestMainCreateReqVO mainVo, SupplierdeliverRequestDetailDO detailDo);
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestMainConvert.java

@ -4,10 +4,9 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainCreateReqVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainExcelVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainRespVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainUpdateReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseMainBaseVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.*;
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO;
@ -28,6 +27,8 @@ public interface SupplierdeliverRequestMainConvert {
SupplierdeliverRequestMainRespVO convert(SupplierdeliverRequestMainDO bean);
SupplierdeliverRequestMainDO convert( SupplierdeliverRequestMainBaseVO baseVO);
List<SupplierdeliverRequestMainRespVO> convertList(List<SupplierdeliverRequestMainDO> list);
PageResult<SupplierdeliverRequestMainRespVO> convertPage(PageResult<SupplierdeliverRequestMainDO> page);

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailExportReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailPageReqVO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface PurchasePlanDetailMapper extends BaseMapperX<PurchasePlanDetail
default PageResult<PurchasePlanDetailDO> selectPage(PurchasePlanDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PurchasePlanDetailDO>()
.eqIfPresent(PurchasePlanDetailDO::getMasterId,reqVO.getMasterId())
.eqIfPresent(PurchasePlanDetailDO::getPoNumber, reqVO.getPoNumber())
.eqIfPresent(PurchasePlanDetailDO::getPoLine, reqVO.getPoLine())
.eqIfPresent(PurchasePlanDetailDO::getNumber, reqVO.getNumber())

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

@ -132,14 +132,13 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
@Override
public Long updatePurchaseMain(PurchaseMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseOrder");
// 校验存在,如子表需要也再此校验
validatePurchaseMainExists(updateReqVO.getId());
// 更新主表
PurchaseMainDO purchaseMainDO = validatorToUpdate(updateReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(purchaseMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(purchaseMainDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE);
return purchaseMainDO.getId();
}
@ -288,7 +287,6 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
return stdcostpriceService.selectStdcostpriceExist(supplierCode, itemCode);
}
//校验主表公共方法(适用于新增/修改)
private PurchaseMainDO validatorMainMethod(PurchaseMainBaseVO baseVO) {
PurchaseMainDO mainDo = PurchaseMainConvert.INSTANCE.convert(baseVO);
@ -454,7 +452,6 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
return messageDetail;
}
@Override
@Transactional
public Integer closePurchaseMain(Long id) {

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java

@ -152,12 +152,12 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
@Override
public PurchasePlanDetailDO selectPurchasePlan(String pnubmer, String psupplierCode, String ppoNumber, String ppoLine, String pitemCode) {
QueryWrapper queryWrapperMain = new QueryWrapper();
QueryWrapper<PurchasePlanMainDO> queryWrapperMain = new QueryWrapper();
queryWrapperMain.eq("number", pnubmer);
queryWrapperMain.eq("supplier_code", psupplierCode);
PurchasePlanMainDO purchasePlanMainDO = purchasePlanMainMapper.selectOne(queryWrapperMain);
if (purchasePlanMainDO != null && "TRUE".equals(purchasePlanMainDO.getAvailable())) {
if (!"CLOSED".equals(purchasePlanMainDO.getStatus())) {
if (!PurchasePlanStatusEnum.CLOSED.getCode().equals(purchasePlanMainDO.getStatus())) {
QueryWrapper queryWrapperDetail = new QueryWrapper();
queryWrapperDetail.eq("master_id", purchasePlanMainDO.getId());
queryWrapperDetail.eq("number", ppoNumber);

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java

@ -83,7 +83,7 @@ public interface RuleService {
/**************** 规则接口 ****************/
/**
* 获取供应商送货策略
* 采购默认策略
*
* @param supplierType 供应商类型
* @param supplierCode 供应商代码

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java

@ -36,7 +36,7 @@ public interface SupplierdeliverRequestMainService {
*
* @param updateReqVO 更新信息
*/
void updateSupplierdeliverRequestMain(@Valid SupplierdeliverRequestMainUpdateReqVO updateReqVO);
Long updateSupplierdeliverRequestMain(@Valid SupplierdeliverRequestMainUpdateReqVO updateReqVO);
/**
* 删除供应商发货申请主

349
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java

@ -1,45 +1,67 @@
package com.win.module.wms.service.supplierdeliverRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
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.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.purchase.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.*;
import com.win.module.wms.convert.purchase.PurchaseDetailConvert;
import com.win.module.wms.convert.purchase.PurchaseMainConvert;
import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestDetailConvert;
import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestMainConvert;
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.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.requestsetting.RequestsettingDO;
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.supplier.SupplierDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestDetailMapper;
import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.order.OrderStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.itembasic.ItembasicService;
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;
import com.win.module.wms.service.supplier.SupplierService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.ErrorCodeConstants.SUPPLIERDELIVER_REQUEST_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 供应商发货申请主 Service 实现类
@ -68,23 +90,43 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
private JobUtils jobUtils;
@Resource
private RequestsettingService requestsettingService;
@Resource
private SupplierService supplierService;
@Resource
private TrendsApi trendsApi;
@Resource
private RuleService ruleService;
@Override
public Long createSupplierdeliverRequestMain(SupplierdeliverRequestMainCreateReqVO createReqVO) {
// 插入
SupplierdeliverRequestMainDO supplierdeliverRequestMain = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO);
supplierdeliverRequestMainMapper.insert(supplierdeliverRequestMain);
// 返回
return supplierdeliverRequestMain.getId();
// 插入主表
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest");
createReqVO.setBusinessType(businesstypeDO.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
createReqVO.setCreateTime(LocalDateTime.now());
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(supplierdeliverRequestMainDO.getStatus())) {
}
trendsApi.createTrends(supplierdeliverRequestMainDO.getId(), "PurchaseOrder", "增加了采购订单", TrendsTypeEnum.CREATE);
return supplierdeliverRequestMainDO.getId();
}
@Override
public void updateSupplierdeliverRequestMain(SupplierdeliverRequestMainUpdateReqVO updateReqVO) {
// 校验存在
public Long updateSupplierdeliverRequestMain(SupplierdeliverRequestMainUpdateReqVO updateReqVO) {
// 校验存在,如子表需要也再此校验
validateSupplierdeliverRequestMainExists(updateReqVO.getId());
// 更新
SupplierdeliverRequestMainDO updateObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(updateReqVO);
supplierdeliverRequestMainMapper.updateById(updateObj);
// 更新主表
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorToUpdate(updateReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(supplierdeliverRequestMainDO.getStatus())) {
}
trendsApi.createTrends(supplierdeliverRequestMainDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE);
return supplierdeliverRequestMainDO.getId();
}
@Override
@ -116,6 +158,7 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
return supplierdeliverRequestMainMapper.selectBatchIds(ids);
}
@Override
public PageResult<SupplierdeliverRequestMainDO> getSupplierdeliverRequestMainPage(SupplierdeliverRequestMainPageReqVO pageReqVO) {
return supplierdeliverRequestMainMapper.selectPage(pageReqVO);
@ -132,122 +175,192 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<SupplierdeliverRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//校验供应商基础信息
try {
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
BeanUtils.copyProperties(createReqVO, shiftDO);
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//校验供应商送货策略
// try {
// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null);
// String json = ruleRespVO.getConfiguration();
// } catch (ServiceException ex) {
// importRemark += ex.getMessage() + ",";
// }
//子表的验证
for (SupplierdeliverRequestMainCreateReqVO createReqVO : datas) {
SupplierdeliverRequestMainDO mainDo = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validatorSupplierdeliverRequestMainImport(mainDo);
List<SupplierdeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList);
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(supplierdeliverRequestDetailDO.getItemCode());
if (itembasicDO.getUom() != supplierdeliverRequestDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + supplierdeliverRequestDetailDO.getUom() + ",";
}
supplierdeliverRequestDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
// 是否有错误数据
boolean flag = true;
for (SupplierdeliverRequestDetailDO detailDO : subDOList) {
String messageDetail = validatorSupplierdeliverRequestDetailImport(detailDO, mainDo);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
SupplierdeliverRequestMainImportErrorVO importErrorVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), supplierdeliverRequestDetailDO.getItemCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//写入数据
if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder");
mainDo.setBusinessType(businesstypeDO.getCode());
supplierdeliverRequestMainMapper.insert(mainDo);
for (SupplierdeliverRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(mainDo.getNumber());
}
supplierdeliverRequestDetailMapper.insertBatch(subDOList);
}
}
return errorList;
}
// 校验要货计划
try {
PurchasePlanDetailDO purchasePlanDetailDO = purchasePlanMainService.selectPurchasePlan(createReqVO.getNumber(), createReqVO.getSupplierCode(),
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode());
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(supplierdeliverRequestDetailDO.getQty()) == -1) {
messageDetail += "供应商发货数量" + supplierdeliverRequestDetailDO.getQty() + "大于订单行" + supplierdeliverRequestDetailDO.getPoLine() + "的未发货数量" + purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()) + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//主表校验 校验班次基础信息
private SupplierDO validatorSupplier(String supplierCode) {
return supplierService.selectSupplier(supplierCode);
}
SupplierdeliverRequestDetailCreateReqVO supplierdeliverRequestDetailCreateReqVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert1(supplierdeliverRequestDetailDO);
SupplierdeliverRequestMainImportErrorVO importVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO, supplierdeliverRequestDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
supplierdeliverRequestDetailDO.setNumber(createReqVO.getNumber());
supplierdeliverRequestDetailDO.setMasterId(createReqVO.getId());
supplierdeliverRequestDetailDO.setAltBatch("");
}
//主表校验 校验供应商基础信息
private RuleRespVO validatordeliverGoods() {
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, null, null);
return ruleRespVO;
}
//子表校验 校验供应商基础信息
private void validatorItembasic(String itemCode) {
itembasicService.selectItembasic(itemCode);
}
//子表校验 校验供应商物品
private SupplieritemDO validatorSupplierItemExist(String supplierCode, String itemCode) {
return supplieritemService.selectSupplierItemExist(supplierCode, itemCode);
}
//子表校验 校验要货计划
private PurchasePlanDetailDO validatorPurchasePlan(SupplierdeliverRequestMainDO supplierdeliverRequestMainDO, SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO) {
PurchasePlanDetailDO purchasePlanDetailDO =
purchasePlanMainService.selectPurchasePlan(supplierdeliverRequestMainDO.getPpNumber(), supplierdeliverRequestMainDO.getSupplierCode(),
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode());
return purchasePlanDetailDO;
}
//校验主表公共方法(适用于新增/修改)
private SupplierdeliverRequestMainDO validatorMainMethod(SupplierdeliverRequestMainBaseVO baseVO) {
SupplierdeliverRequestMainDO mainDo = SupplierdeliverRequestMainConvert.INSTANCE.convert(baseVO);
SupplierDO supplierDO = this.validatorSupplier(mainDo.getSupplierCode());
if (supplierDO == null) {
throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS);
}
RuleRespVO ruleRespVO = validatordeliverGoods();
if (ruleRespVO == null) {
throw new ServiceException(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS);
} else {
JSONObject conditionObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
mainDo.setToWarehouseCode(String.valueOf(conditionObject.get("WarehouseCode")));
mainDo.setToDockCode(String.valueOf(conditionObject.get("DockCode")));
mainDo.setTimeWindow(conditionObject.get("BeginTime") + "-" + conditionObject.get("EndTime"));
}
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
return mainDo;
}
//校验子表公共方法(适用于新增/修改)
private void validatorDetailMethod(SupplierdeliverRequestDetailDO detailDo, SupplierdeliverRequestMainDO mainDo) {
this.validatorItembasic(detailDo.getItemCode());
this.validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode());
PurchasePlanDetailDO purchasePlanDetailDO = this.validatorPurchasePlan(mainDo, detailDo);
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(detailDo.getQty()) == -1) {
throw exception(QTY_ERROR, detailDo.getQty(), null, detailDo.getPoLine(), null, purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()));
}
}
//新增校验
private SupplierdeliverRequestMainDO validatorToCreate(SupplierdeliverRequestMainCreateReqVO createReqVO) {
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(createReqVO);
//子表校验
List<SupplierdeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList);
supplierdeliverRequestMainMapper.insert(supplierdeliverRequestMainDO);
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) {
validatorDetailMethod(supplierdeliverRequestDetailDO, supplierdeliverRequestMainDO);
supplierdeliverRequestDetailDO.setMasterId(supplierdeliverRequestMainDO.getId());
supplierdeliverRequestDetailDO.setNumber(supplierdeliverRequestMainDO.getNumber());
}
supplierdeliverRequestDetailMapper.insertBatch(subDOList);
return supplierdeliverRequestMainDO;
}
//修改校验
private SupplierdeliverRequestMainDO validatorToUpdate(SupplierdeliverRequestMainUpdateReqVO updateReqVO) {
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(updateReqVO);
//子表校验
List<SupplierdeliverRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList05(subList);
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) {
validatorDetailMethod(supplierdeliverRequestDetailDO, supplierdeliverRequestMainDO);
}
supplierdeliverRequestMainMapper.updateById(supplierdeliverRequestMainDO);
supplierdeliverRequestDetailMapper.updateBatch(subDOList);
return supplierdeliverRequestMainDO;
}
/**
* 校验主表导入并赋值一些参数
*
* @param createReqVO
* @return
*/
private String validatorSupplierdeliverRequestMainImport(SupplierdeliverRequestMainDO createReqVO) {
String messageMain = "";
//校验供应商基础信息
try {
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//校验发货单号是否重复
if (!createReqVO.getAsnNumber().isEmpty()) {
QueryWrapper<SupplierdeliverRequestMainDO> queryWrapper = new QueryWrapper();
queryWrapper.eq("asn_number", createReqVO.getAsnNumber());
queryWrapper.ne("status", RequestStatusEnum.CLOSED.getCode());
List<SupplierdeliverRequestMainDO> supplierdeliverRequestMainDOList = supplierdeliverRequestMainMapper.selectList(queryWrapper);
if (supplierdeliverRequestMainDOList != null && supplierdeliverRequestMainDOList.size() > 0) {
messageMain += "发货单" + createReqVO.getAsnNumber() + "已经存在 !" + ",";
}
}
return messageMain;
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
SupplierdeliverRequestMainDO existPurchaseclaimRequestMainDO = supplierdeliverRequestMainMapper.selectByNumberAndAsnNumber(createReqVO.getNumber(), createReqVO.getAsnNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO);
supplierdeliverRequestMainMapper.insert(createObj);
supplierdeliverRequestDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO);
supplierdeliverRequestMainMapper.updateById(createObj);
supplierdeliverRequestDetailMapper.updateBatch(subDOList);
}
/**
* 校验子表导入并赋值一些参数
*
* @param supplierdeliverRequestDetailDO
* @param supplierdeliverRequestMainDO
* @return
*/
private String validatorSupplierdeliverRequestDetailImport(SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO, SupplierdeliverRequestMainDO supplierdeliverRequestMainDO) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(supplierdeliverRequestDetailDO.getItemCode());
if (itembasicDO.getUom() != supplierdeliverRequestDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + supplierdeliverRequestDetailDO.getUom() + ",";
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
supplierdeliverRequestDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
return errorList;
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(supplierdeliverRequestMainDO.getSupplierCode(), supplierdeliverRequestDetailDO.getItemCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验要货计划
try {
PurchasePlanDetailDO purchasePlanDetailDO = purchasePlanMainService.selectPurchasePlan(supplierdeliverRequestMainDO.getNumber(), supplierdeliverRequestMainDO.getSupplierCode(),
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode());
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(supplierdeliverRequestDetailDO.getQty()) == -1) {
messageDetail += "供应商发货数量" + supplierdeliverRequestDetailDO.getQty() + "大于订单行" + supplierdeliverRequestDetailDO.getPoLine() + "的未发货数量" + purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()) + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
return messageDetail;
}
}

Loading…
Cancel
Save