Browse Source

Merge remote-tracking branch 'origin/master'

master
陈薪名 2 years ago
parent
commit
0322946ee7
  1. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/AreabasicController.java
  2. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicImportErrorVO.java
  3. 21
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/dock/DockController.java
  4. 79
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/dock/vo/DockImportErrorVO.java
  5. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java
  6. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/areabasic/AreabasicConvert.java
  7. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/dock/DockConvert.java
  8. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java
  9. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicService.java
  10. 102
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicServiceImpl.java
  11. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockService.java
  12. 107
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockServiceImpl.java
  13. 52
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java
  14. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java
  15. 37
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java
  16. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/AreabasicController.java

@ -9,13 +9,8 @@ import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.areabasic.vo.*;
import com.win.module.wms.controller.dock.vo.DockRespVO;
import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.convert.areabasic.AreabasicConvert;
import com.win.module.wms.convert.dock.DockConvert;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.dal.dataobject.areabasic.AreabasicDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.areabasic.AreabasicService;
import io.swagger.v3.oas.annotations.Operation;
@ -174,16 +169,18 @@ public class AreabasicController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:areabasic:import')")
public void importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<AreabasicImportExcelVo> list = ExcelUtils.read(file, AreabasicImportExcelVo.class);
List<AreabasicImportExcelVo> errorList = areabasicService.importAreabasicList(list, mode, updatePart);
List<AreabasicImportErrorVO> errorList = areabasicService.importAreabasicList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("库区导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url);
}}
}
return success(returnMap);
}
}

63
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicImportErrorVO.java

@ -0,0 +1,63 @@
package com.win.module.wms.controller.areabasic.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@Builder
@ToString(callSuper = true)
public class AreabasicImportErrorVO {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty("仓库代码")
private String warehouseCode;
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.WAREHOUSE_TYPE)
private String type;
@ExcelProperty(value = "是否是功能区", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String isFunctional;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty("生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty("失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty("备注")
private String remark;
@ExcelProperty(value = "导入状态", index = 0)
private String importStatus;
@ExcelProperty(value = "导入说明", index = 1)
private String importRemark;
}

21
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/dock/DockController.java

@ -8,13 +8,8 @@ import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.dock.vo.*;
import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseRespVO;
import com.win.module.wms.convert.dock.DockConvert;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.convert.warehouse.WarehouseConvert;
import com.win.module.wms.dal.dataobject.dock.DockDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.mysql.dock.DockMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.dock.DockService;
@ -165,7 +160,7 @@ public class DockController {
String[] type = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.DOCK_TYPE);
mapDropDown.put(5, type);
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(10, available);;
mapDropDown.put(10, available);
// 输出
ExcelUtils.write(response, "月台导入模板.xls", "月台列表", DockImportExcelVO.class, list,mapDropDown);
}
@ -178,18 +173,20 @@ public class DockController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:dock:import')")
public void importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<DockImportExcelVO> list = ExcelUtils.read(file, DockImportExcelVO.class);
List<DockImportExcelVO> errorList = dockService.dockimportDockList(list, mode, updatePart);
List<DockImportErrorVO> errorList = dockService.dockimportDockList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("月台导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url);
}}
}
return success(returnMap);
}

79
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/dock/vo/DockImportErrorVO.java

@ -0,0 +1,79 @@
package com.win.module.wms.controller.dock.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@Builder
@ToString(callSuper = true)
public class DockImportErrorVO {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty("城市")
private String city;
@ExcelProperty("地址")
private String address;
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat("dock_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String type;
@ExcelProperty("仓库代码")
private String warehouseCode;
@ExcelProperty("默认库位代码")
private String defaultLocationCode;
@ExcelProperty("联系人姓名")
private String contactPerson;
@ExcelProperty("联系人电话")
private String contactPhone;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String available;
@ExcelProperty("生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty("失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty("备注")
private String remark;
@ExcelProperty(value = "导入状态", index = 0)
private String importStatus;
@ExcelProperty(value = "导入说明", index = 1)
private String importRemark;
}

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java

@ -1,14 +1,12 @@
package com.win.module.wms.controller.inspectJob.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 检验任务子更新 Request VO")
@Data
@ -44,22 +42,4 @@ public class InspectJobDetailUpdateReqVO extends InspectJobDetailBaseVO {
@NotNull(message = "到库存状态不能为空")
private String toInventoryStatus;
@Schema(description = "单价")
private BigDecimal singlePrice;
@Schema(description = "金额")
private BigDecimal amount;
@Schema(description = "到货日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime arriveDate;
@Schema(description = "生产日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime produceDate;
@Schema(description = "失效日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime expireDate;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/areabasic/AreabasicConvert.java

@ -2,6 +2,8 @@ package com.win.module.wms.convert.areabasic;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.areabasic.vo.*;
import com.win.module.wms.controller.bom.vo.BomImportErrorVO;
import com.win.module.wms.controller.bom.vo.BomImportExcelVo;
import com.win.module.wms.dal.dataobject.areabasic.AreabasicDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@ -32,4 +34,6 @@ public interface AreabasicConvert {
List<AreabasicExcelVO> convertList02(List<AreabasicDO> list);
AreabasicImportErrorVO convert2(AreabasicDO bean);
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/dock/DockConvert.java

@ -1,6 +1,8 @@
package com.win.module.wms.convert.dock;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.bom.vo.BomImportErrorVO;
import com.win.module.wms.controller.bom.vo.BomImportExcelVo;
import com.win.module.wms.controller.dock.vo.*;
import com.win.module.wms.dal.dataobject.dock.DockDO;
import org.mapstruct.Mapper;
@ -31,4 +33,6 @@ public interface DockConvert {
List<DockExcelVO> convertList02(List<DockDO> list);
DockImportErrorVO convert2(DockDO bean);
}

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java

@ -77,6 +77,19 @@ public interface BalanceMapper extends BaseMapperX<BalanceDO> {
return result > 0;
}
/**
* 更新库存余额数量出库qty是负数
*/
default BalanceDO getBalanceQty(String packingNumber, String itemCode, String batch, String inventoryStatus, String locationCode) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("packing_number", packingNumber);
queryWrapper.eq("item_code", itemCode);
queryWrapper.eq("batch", batch);
queryWrapper.eq("inventory_status", inventoryStatus);
queryWrapper.eq("location_code", locationCode);
return selectOne(queryWrapper);
}
default PageResult<BalanceDO> selectPage(BalancePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BalanceDO>()
.eqIfPresent(BalanceDO::getPackingNumber, reqVO.getPackingNumber())

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicService.java

@ -76,5 +76,5 @@ public interface AreabasicService {
*/
List<AreabasicDO> getAreabasicList(AreabasicExportReqVO exportReqVO);
List<AreabasicImportExcelVo> importAreabasicList(List<AreabasicImportExcelVo> areabasics, Integer mode, Boolean updatePart);
List<AreabasicImportErrorVO> importAreabasicList(List<AreabasicImportExcelVo> areabasics, Integer mode, Boolean updatePart);
}

102
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/areabasic/AreabasicServiceImpl.java

@ -8,7 +8,9 @@ import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.areabasic.vo.*;
import com.win.module.wms.controller.bom.vo.BomImportErrorVO;
import com.win.module.wms.convert.areabasic.AreabasicConvert;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.dal.dataobject.areabasic.AreabasicDO;
import com.win.module.wms.dal.mysql.areabasic.AreabasicMapper;
import org.springframework.stereotype.Service;
@ -85,63 +87,71 @@ public class AreabasicServiceImpl implements AreabasicService {
return areabasicMapper.selectList(exportReqVO);
}
public String validateAreabasic(AreabasicDO areabasic){
StringBuilder message = new StringBuilder();
try {
validateAreabasicExists(null);
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateCodeExists(null,areabasic.getCode());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateWarehouseCodeExists(areabasic.getWarehouseCode());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateIsFunctionalExists(areabasic.getIsFunctional());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateAvailableExists(areabasic.getAvailable());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
@Override
public List<AreabasicImportExcelVo> importAreabasicList(List<AreabasicImportExcelVo> areabasics, Integer mode, Boolean updatePart) {
public List<AreabasicImportErrorVO> importAreabasicList(List<AreabasicImportExcelVo> areabasics, Integer mode, Boolean updatePart) {
if (CollUtil.isEmpty(areabasics)) {
throw exception(AREABASIC_IMPORT_LIST_IS_EMPTY);
}
List<AreabasicImportExcelVo> errorList = new ArrayList<>();
List<AreabasicImportErrorVO> errorList = new ArrayList<>();
areabasics.forEach(areabasic -> {
String massage = "";
// 校验,判断是否有不符合的原因
if(mode == 2){
try {
validateAreabasicExists(null);
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateCodeExists(null,areabasic.getCode());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateWarehouseCodeExists(areabasic.getWarehouseCode());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateIsFunctionalExists(areabasic.getIsFunctional());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
AreabasicDO areabasicDO = AreabasicConvert.INSTANCE.convert(areabasic);
String massage = this.validateAreabasic(areabasicDO);
boolean flag = true;
if(!massage.isEmpty()){
AreabasicImportErrorVO importErrorVO = AreabasicConvert.INSTANCE.convert2(areabasicDO);
importErrorVO.setImportStatus("失败");
importErrorVO.setImportRemark(massage.substring(0, massage.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
if(flag){
AreabasicDO existAccountcalendar = areabasicMapper.selectByCode(areabasic.getCode());
if (existAccountcalendar == null&& mode != 3) {
areabasicMapper.insert(areabasicDO);
}
try {
validateAvailableExists(areabasic.getAvailable());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新
areabasicDO.setId(existAccountcalendar.getId());
areabasicMapper.updateById(areabasicDO);
}
}
if(StrUtil.isNotEmpty(massage)){
massage.substring(0,massage.length()-1);
errorList.add(areabasic);
}
// 判断如果不存在,在进行插入
AreabasicDO existAccountcalendar = areabasicMapper.selectByCode(areabasic.getCode());
if (existAccountcalendar == null&& mode != 3) {
areabasicMapper.insert(AreabasicConvert.INSTANCE.convert(areabasic));
}
else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新
AreabasicDO accountcalendarDO = AreabasicConvert.INSTANCE.convert(areabasic);
accountcalendarDO.setId(existAccountcalendar.getId());
areabasicMapper.updateById(accountcalendarDO);
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
private void validateAreabasicForCreateOrUpdate(Long id,String code,String warehouseCode,String isFunctional,String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockService.java

@ -79,7 +79,7 @@ public interface DockService {
*/
List<DockDO> getDockList(DockExportReqVO exportReqVO);
List<DockImportExcelVO> dockimportDockList(List<DockImportExcelVO> docks, Integer mode, Boolean updatePart);
List<DockImportErrorVO> dockimportDockList(List<DockImportExcelVO> docks, Integer mode, Boolean updatePart);
/**
* 校验(客户地点 月台)收货口有效状态正确

107
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/dock/DockServiceImpl.java

@ -9,7 +9,9 @@ import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.dock.vo.*;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.convert.dock.DockConvert;
import com.win.module.wms.dal.dataobject.bom.BomDO;
import com.win.module.wms.dal.dataobject.dock.DockDO;
import com.win.module.wms.dal.mysql.dock.DockMapper;
import org.springframework.stereotype.Service;
@ -89,71 +91,76 @@ public class DockServiceImpl implements DockService {
return dockMapper.selectList(exportReqVO);
}
public String valitedock(DockDO dock){
StringBuilder message = new StringBuilder();
try {
validateDockExists(null);
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateCodeExists(null,dock.getCode());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateTypeExists(dock.getType());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateWareHouseCodeExists(dock.getWarehouseCode());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateDefaultLocationCodeExists(dock.getDefaultLocationCode());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateAvailableExists(dock.getAvailable());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
@Override
public List<DockImportExcelVO> dockimportDockList(List<DockImportExcelVO> docks, Integer mode, Boolean updatePart) {
public List<DockImportErrorVO> dockimportDockList(List<DockImportExcelVO> docks, Integer mode, Boolean updatePart) {
if (CollUtil.isEmpty(docks)) {
throw exception(DOCK_IMPORT_LIST_IS_EMPTY);
}
List<DockImportExcelVO> errorList = new ArrayList<>();
List<DockImportErrorVO> errorList = new ArrayList<>();
docks.forEach(dock -> {
String massage = "";
// 校验,判断是否有不符合的原因
if(mode != null) {
try {
validateDockExists(null);
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateCodeExists(null,dock.getCode());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateTypeExists(dock.getType());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateWareHouseCodeExists(dock.getWarehouseCode());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateDefaultLocationCodeExists(dock.getDefaultLocationCode());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateAvailableExists(dock.getAvailable());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
DockDO dockDO = DockConvert.INSTANCE.convert(dock);
String message = this.valitedock(dockDO);
boolean flag = true;
if(!message.isEmpty()){
DockImportErrorVO importErrorVO = DockConvert.INSTANCE.convert2(dockDO);
importErrorVO.setImportStatus("失败");
importErrorVO.setImportRemark(message.substring(0, message.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
if(StrUtil.isNotEmpty(massage)){
massage.substring(0,massage.length()-1);
errorList.add(dock);
}
if(errorList == null){
DockDO existConfigurationSetting = null;
if (existConfigurationSetting == null&& mode != 3) {
if(flag){
// 判断如果不存在,在进行插入
DockDO existAccountcalendar = dockMapper.selectByItemCode(dockDO.getCode());
if (existAccountcalendar == null&& mode != 3) {
dockMapper.insert(DockConvert.INSTANCE.convert(dock));
}
else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新
DockDO dockDO = DockConvert.INSTANCE.convert(dock);
dockDO.setId(existConfigurationSetting.getId());
else if (existAccountcalendar != null && mode != 2) {
// 如果存在,判断是否允许更新
dockDO.setId(existAccountcalendar.getId());
dockMapper.updateById(dockDO);
}
}
// 判断如果不存在,在进行插入
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
private void validateDockForCreateOrUpdate(Long id, String code,String type, String warehouseCode,
String defaultLocationCode,String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确

52
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java

@ -12,12 +12,14 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.inspectJob.vo.*;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.inspectJob.InspectJobMainDO;
import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordDetailDO;
import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordMainDO;
import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.inspectJob.InspectJobDetailMapper;
import com.win.module.wms.dal.mysql.inspectJob.InspectJobMainMapper;
import com.win.module.wms.dal.mysql.inspectRecord.InspectRecordDetailMapper;
@ -77,6 +79,8 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
private TransactionService transactionService;
@Resource
private ExpectinService expectinService;
@Resource
private BalanceMapper balanceMapper;
@Override
public InspectJobMainDO getInspectJobMain(Long id) {
@ -219,6 +223,8 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
inspectRecordDetailDO.setUpdater(null);
inspectRecordDetailDO.setUpdateTime(null);
inspectRecordDetailDOList.add(inspectRecordDetailDO);
//查询库存余额
BalanceDO balanceDO = balanceMapper.getBalanceQty(inspectJobDetailUpdateReqVO.getPackingNumber(), inspectJobMainUpdateReqVO.getItemCode(), inspectJobMainUpdateReqVO.getBatch(), inspectJobDetailUpdateReqVO.getInventoryStatus(), inspectJobDetailUpdateReqVO.getFromLocationCode());
//添加库存事务入list
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO();
BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOIn);
@ -226,21 +232,36 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectJob");
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setQty(inspectJobDetailUpdateReqVO.getGoodQty());
transactionCreateReqVOIn.setBatch(inspectRecordMainDO.getBatch());
transactionCreateReqVOIn.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOIn.setInventoryStatus(inspectJobDetailUpdateReqVO.getToInventoryStatus());
transactionCreateReqVOIn.setSinglePrice(inspectJobDetailUpdateReqVO.getSinglePrice());
transactionCreateReqVOIn.setAmount(inspectJobDetailUpdateReqVO.getAmount());
transactionCreateReqVOIn.setArriveDate(inspectJobDetailUpdateReqVO.getArriveDate());
transactionCreateReqVOIn.setProduceDate(inspectJobDetailUpdateReqVO.getProduceDate());
transactionCreateReqVOIn.setExpireDate(inspectJobDetailUpdateReqVO.getExpireDate());
transactionCreateReqVOIn.setSinglePrice(balanceDO.getSinglePrice());
transactionCreateReqVOIn.setAmount(balanceDO.getAmount());
transactionCreateReqVOIn.setArriveDate(balanceDO.getArriveDate());
transactionCreateReqVOIn.setProduceDate(balanceDO.getProduceDate());
transactionCreateReqVOIn.setExpireDate(balanceDO.getExpireDate());
transactionCreateReqVOIn.setId(null);
//待确定库存事务信息
transactionCreateReqVOList.add(transactionCreateReqVOIn);
if(inspectJobDetailUpdateReqVO.getGoodQty() != null && inspectJobDetailUpdateReqVO.getGoodQty().compareTo(BigDecimal.ZERO) > 0) {
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(transactionCreateReqVOIn, transactionCreateReqVO);
transactionCreateReqVO.setInventoryAction("OK");
transactionCreateReqVO.setQty(inspectJobDetailUpdateReqVO.getGoodQty());
transactionCreateReqVOList.add(transactionCreateReqVO);
} else if (inspectJobDetailUpdateReqVO.getCrackQty() != null && inspectJobDetailUpdateReqVO.getCrackQty().compareTo(BigDecimal.ZERO) > 0) {
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(transactionCreateReqVOIn, transactionCreateReqVO);
transactionCreateReqVO.setInventoryAction("SCRAP");
transactionCreateReqVO.setQty(inspectJobDetailUpdateReqVO.getCrackQty());
transactionCreateReqVOList.add(transactionCreateReqVO);
} else if (inspectJobDetailUpdateReqVO.getFailedQty() != null && inspectJobDetailUpdateReqVO.getFailedQty().compareTo(BigDecimal.ZERO) > 0) {
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(transactionCreateReqVOIn, transactionCreateReqVO);
transactionCreateReqVO.setInventoryAction("NOK");
transactionCreateReqVO.setQty(inspectJobDetailUpdateReqVO.getFailedQty());
transactionCreateReqVOList.add(transactionCreateReqVO);
}
//添加库存事务出list
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOOut);
@ -252,13 +273,14 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
transactionCreateReqVOOut.setBatch(inspectRecordMainDO.getBatch());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setQty(inspectJobDetailUpdateReqVO.getGoodQty());
//出库数量为子表数量,不管合格不合格都要出掉
transactionCreateReqVOIn.setQty(inspectJobDetailUpdateReqVO.getQty());
transactionCreateReqVOOut.setInventoryStatus(inspectJobDetailUpdateReqVO.getInventoryStatus());
transactionCreateReqVOOut.setSinglePrice(inspectJobDetailUpdateReqVO.getSinglePrice());
transactionCreateReqVOOut.setAmount(inspectJobDetailUpdateReqVO.getAmount());
transactionCreateReqVOOut.setArriveDate(inspectJobDetailUpdateReqVO.getArriveDate());
transactionCreateReqVOOut.setProduceDate(inspectJobDetailUpdateReqVO.getProduceDate());
transactionCreateReqVOOut.setExpireDate(inspectJobDetailUpdateReqVO.getExpireDate());
transactionCreateReqVOOut.setSinglePrice(balanceDO.getSinglePrice());
transactionCreateReqVOOut.setAmount(balanceDO.getAmount());
transactionCreateReqVOOut.setArriveDate(balanceDO.getArriveDate());
transactionCreateReqVOOut.setProduceDate(balanceDO.getProduceDate());
transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate());
transactionCreateReqVOOut.setId(null);
//待确定库存事务信息
transactionCreateReqVOList.add(transactionCreateReqVOOut);

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java

@ -365,7 +365,6 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService
}
return;
}
InspectRequestDetailDO inspectRequestDetailDOTmp = detailDOList.get(0);
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
InspectJobMainDO inspectJobMainDO = InspectJobMainConvert.INSTANCE.convert(mainDO);
inspectJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());

37
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

@ -453,16 +453,14 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
}
for(PurchasereceiptRequestDetailDO detailDO : detailDOList) {
List<PurchasereceiptRequestDetailDO> list;
//从map取出list
switch (key) {
case "item":
list = listMap.get(detailDO.getItemCode());
case "container":
list = listMap.get(detailDO.getContainerNumber());
case "location":
list = listMap.get(detailDO.getFromLocationCode());
default:
list = listMap.get(key);
if (key.equals("item")) {//按零件拆分
list = listMap.get(detailDO.getItemCode());
} else if (key.equals("container")) {//按器具拆分
list = listMap.get(detailDO.getContainerNumber());
} else if (key.equals("location")) {//按库位拆分
list = listMap.get(detailDO.getDefaultToLocationCode());
} else {
list = listMap.get(key);
}
if(list == null) {
list = new ArrayList<>();
@ -470,25 +468,24 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
//向list增加数据
list.add(detailDO);
//放回map
switch (key) {
case "item":
listMap.put(detailDO.getItemCode(), list);
case "container":
listMap.put(detailDO.getContainerNumber(), list);
case "location":
listMap.put(detailDO.getFromLocationCode(), list);
default:
listMap.put(key, list);
if (key.equals("item")) {//按零件拆分
listMap.put(detailDO.getItemCode(), list);
} else if (key.equals("container")) {//按器具拆分
listMap.put(detailDO.getContainerNumber(), list);
} else if (key.equals("location")) {//按库位拆分
listMap.put(detailDO.getDefaultToLocationCode(), list);
} else {
listMap.put(key, list);
}
}
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("PurchaseReceiptJob");
//组装任务数据
for(String mapKey : listMap.keySet()) {
List<PurchasereceiptRequestDetailDO> purchasereceiptRequestDetailDOList = listMap.get(mapKey);
List<PurchasereceiptJobDetailCreateReqVO> subList = new ArrayList<>();
for(int i = 0; i < purchasereceiptRequestDetailDOList.size(); i++) {
//PurchasereceiptJobMainCreateReqVO不包含id、创建人等信息
PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO;
List<PurchasereceiptJobDetailCreateReqVO> subList = new ArrayList<>();
if(i % count == 0) {
purchasereceiptJobMainCreateReqVO = PurchasereceiptJobMainConvert.INSTANCE.convert(mainDO);
purchasereceiptJobMainCreateReqVO.setRequestNumber(mainDO.getNumber());

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java

@ -110,12 +110,19 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
@Override
public Long createPurchasereturnRequestMain(PurchasereturnRequestMainCreateReqVO createReqVO) {
// 插入
PurchasereturnRequestMainDO purchasereturnRequestMain = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO);
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
purchasereturnRequestMain.setNumber(number);
PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToCreate(createReqVO);
List<PurchasereturnRequestDetailDO> subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
for (PurchasereturnRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(purchasereturnRequestMain.getId());
detailDO.setNumber(number);
}
purchasereturnRequestDetailMapper.insertBatch(subDOList);
//调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) {
this.generateJob(purchasereturnRequestMain, subDOList);
}
trendsApi.createTrends(purchasereturnRequestMain.getId(), "purchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE);
// 返回
@ -128,9 +135,6 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
validatePurchasereturnRequestMainExists(updateReqVO.getId());
// 更新主表
PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToUpdate(updateReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) {
}
trendsApi.createTrends(purchasereturnRequestMainDO.getId(), "purchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE);
}

Loading…
Cancel
Save