Browse Source

生成盘点调整。

master
刘忱 2 years ago
parent
commit
07fc065035
  1. 2
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRecord/CountRecordMainController.java
  3. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java
  4. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainBaseVO.java
  5. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainExcelVO.java
  6. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainExportReqVO.java
  7. 12
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainPageReqVO.java
  8. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainBaseVO.java
  9. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainExcelVO.java
  10. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainExportReqVO.java
  11. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainPageReqVO.java
  12. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countadjustRecord/CountadjustRecordMainDO.java
  13. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countadjustRequest/CountadjustRequestMainDO.java
  14. 12
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countJob/CountJobMainMapper.java
  15. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRecord/CountRecordDetailMapper.java
  16. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestDetailMapper.java
  17. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java
  18. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRequest/CountadjustRequestMainMapper.java
  19. 50
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java
  20. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainService.java
  21. 78
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainServiceImpl.java
  22. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java
  23. 67
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java
  24. 23
      win-module-wms/win-module-wms-biz/src/main/resources/mapper/countRecord/CountRecordDetailMapper.xml

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

@ -1028,7 +1028,7 @@ public interface ErrorCodeConstants {
//盘点调整申请ErrorCode
ErrorCode COUNTADJUST_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_156_000, "盘点调整申请主不存在");
ErrorCode COUNTADJUST_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_156_001, "盘点调整申请子不存在");
ErrorCode COUNTADJUST_REQUEST_EXISTS = new ErrorCode(1_000_156_001, "不能重复生成盘点调整");
ErrorCode COUNTADJUST_REQUEST_EXISTS = new ErrorCode(1_000_156_001, "不能生成盘点调整");
ErrorCode COUNTADJUST_REQUEST_RECORD_EXISTS = new ErrorCode(1_000_078_003, "盘点调整申请存在盘点调整记录单");
ErrorCode COUNTADJUST_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_078_004, "盘点调整申请状态不支持关闭");
ErrorCode COUNTADJUST_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_078_005, "盘点调整申请状态不支持提交");

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRecord/CountRecordMainController.java

@ -8,7 +8,10 @@ import com.win.framework.excel.core.util.ExcelUtils;
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.countRecord.vo.*;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainExcelVO;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainExportReqVO;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainPageReqVO;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainRespVO;
import com.win.module.wms.convert.countRecord.CountRecordMainConvert;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordMainDO;
@ -16,7 +19,6 @@ import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.countRecord.CountRecordDetailService;
import com.win.module.wms.service.countRecord.CountRecordMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
@ -117,13 +119,4 @@ public class CountRecordMainController {
return resultList;
}
@PutMapping("/generate")
@Operation(summary = "生成盘点调整")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:count-record-main:generate')")
public CommonResult<Boolean> handleCountRequestMain(@RequestParam("id") Long id) {
int count = countRecordMainService.generateCountadjustRequest(id);
return success(count > 0);
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java

@ -249,4 +249,13 @@ public class CountRequestMainController {
return success(result > 0);
}
@PutMapping("/generateCountadjustRequest")
@Operation(summary = "生成盘点调整")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:count-request-main:generate')")
public CommonResult<Boolean> generateCountadjustRequest(@RequestParam("id") Long id) {
int count = countRequestMainService.generateCountadjustRequest(id);
return success(count > 0);
}
}

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainBaseVO.java

@ -1,16 +1,11 @@
package com.win.module.wms.controller.countadjustRecord.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 java.time.LocalDateTime;
import javax.validation.constraints.*;
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;
/**
@ -26,8 +21,8 @@ public class CountadjustRecordMainBaseVO {
@Schema(description = "申请单号")
private String requestNumber;
@Schema(description = "盘点记录单号")
private String countRecordNumber;
@Schema(description = "盘点申请单号")
private String countRequestNumber;
@Schema(description = "仓库代码")
private String warehouseCode;

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainExcelVO.java

@ -18,8 +18,8 @@ import java.time.LocalDateTime;
@Data
public class CountadjustRecordMainExcelVO {
@ExcelProperty("申请单号")
private String requestNumber;
@ExcelProperty("盘点申请单号")
private String countRequestNumber;
@ExcelProperty("盘点记录单号")
private String countRecordNumber;

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainExportReqVO.java

@ -1,12 +1,11 @@
package com.win.module.wms.controller.countadjustRecord.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,参数和 CountadjustRecordMainPageReqVO 是一致的")
@ -16,8 +15,8 @@ public class CountadjustRecordMainExportReqVO {
@Schema(description = "申请单号")
private String requestNumber;
@Schema(description = "盘点记录单号")
private String countRecordNumber;
@Schema(description = "盘点申请单号")
private String countRequestNumber;
@Schema(description = "仓库代码")
private String warehouseCode;

12
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRecord/vo/CountadjustRecordMainPageReqVO.java

@ -1,10 +1,12 @@
package com.win.module.wms.controller.countadjustRecord.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;
@ -15,11 +17,11 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@ToString(callSuper = true)
public class CountadjustRecordMainPageReqVO extends PageParam {
@Schema(description = "申请单号")
@Schema(description = "盘点申请单号")
private String requestNumber;
@Schema(description = "盘点记录单号")
private String countRecordNumber;
private String countRequestNumber;
@Schema(description = "仓库代码")
private String warehouseCode;

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainBaseVO.java

@ -19,8 +19,8 @@ public class CountadjustRequestMainBaseVO {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "盘点记录单号")
private String countRecordNumber;
@Schema(description = "盘点申请单号")
private String countRequestNumber;
@Schema(description = "仓库代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "仓库代码不能为空")

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainExcelVO.java

@ -10,7 +10,6 @@ import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 盘点调整申请主 Excel VO
*
@ -19,8 +18,8 @@ import java.time.LocalDateTime;
@Data
public class CountadjustRequestMainExcelVO {
@ExcelProperty("盘点记录单号")
private String countRecordNumber;
@ExcelProperty("盘点申请单号")
private String countRequestNumber;
@ExcelProperty("仓库代码")
private String warehouseCode;

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainExportReqVO.java

@ -12,8 +12,8 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@Data
public class CountadjustRequestMainExportReqVO {
@Schema(description = "盘点记录单号")
private String countRecordNumber;
@Schema(description = "盘点申请单号")
private String countRequestNumber;
@Schema(description = "仓库代码")
private String warehouseCode;

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/vo/CountadjustRequestMainPageReqVO.java

@ -17,8 +17,8 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@ToString(callSuper = true)
public class CountadjustRequestMainPageReqVO extends PageParam {
@Schema(description = "盘点记录单号")
private String countRecordNumber;
@Schema(description = "盘点申请单号")
private String countRequestNumber;
@Schema(description = "仓库代码")
private String warehouseCode;

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countadjustRecord/CountadjustRecordMainDO.java

@ -1,14 +1,12 @@
package com.win.module.wms.dal.dataobject.countadjustRecord;
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.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
/**
* 盘点调整记录主 DO
@ -34,9 +32,9 @@ public class CountadjustRecordMainDO extends BaseDO {
*/
private String requestNumber;
/**
* 盘点记录单号
* 盘点申请单号
*/
private String countRecordNumber;
private String countRequestNumber;
/**
* 仓库代码
*/

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countadjustRequest/CountadjustRequestMainDO.java

@ -28,9 +28,9 @@ public class CountadjustRequestMainDO extends BaseDO {
@TableId
private Long id;
/**
* 盘点记录单号
* 盘点申请单号
*/
private String countRecordNumber;
private String countRequestNumber;
/**
* 仓库代码
*/

12
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countJob/CountJobMainMapper.java

@ -133,14 +133,16 @@ public interface CountJobMainMapper extends BaseMapperX<CountJobMainDO> {
}
/**
* 根据类型数和申请单号组查询任务数量
* @param types
* @param requestNumber
* @return
* 查询未完成阶段任务
* @param types 状态类型
* @param requestNumber 申请编号
* @param stage 阶段
* @return 数量
*/
default Long selectListCount(Collection<String> types, String requestNumber) {
default Long selectListCount(Collection<String> types, String requestNumber, String stage) {
return selectCount(new LambdaQueryWrapperX<CountJobMainDO>()
.in(CountJobMainDO::getStatus, types)
.eq(CountJobMainDO::getStage, stage)
.eq(CountJobMainDO::getRequestNumber, requestNumber));
}

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRecord/CountRecordDetailMapper.java

@ -9,6 +9,7 @@ import com.win.module.wms.controller.countRecord.vo.CountRecordDetailExportReqVO
import com.win.module.wms.controller.countRecord.vo.CountRecordDetailPageReqVO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -90,4 +91,17 @@ public interface CountRecordDetailMapper extends BaseMapperX<CountRecordDetailDO
.eq(CountRecordDetailDO::getMasterId, masterId));
}
/**
* 查询申请单号下未盘平的数量
* @param requestNumber 申请单号
* @return 未盘平数量
*/
Long getDifferenceCount(@Param("requestNumber") String requestNumber);
/**
* 查询申请单号下未盘平的数量
* @param requestNumber 申请单号
* @return 未盘平数量
*/
List<CountRecordDetailDO> getDifferenceList(@Param("requestNumber") String requestNumber);
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestDetailMapper.java

@ -81,7 +81,7 @@ public interface CountRequestDetailMapper extends BaseMapperX<CountRequestDetail
default List<CountRequestDetailDO> selectDifferenceList(Long masterId, String requestNumber) {
QueryWrapper<CountRequestDetailDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("master_id", masterId);
queryWrapper.inSql("", "SELECT d1.count_detail_number FROM record_count_detail d1,(SELECT master_id,count_detail_number,MAX(create_time) create_time FROM record_count_detail WHERE master_id IN(SELECT id FROM record_count_main WHERE request_number='" + requestNumber + "')GROUP BY master_id,count_detail_number) d2 WHERE d1.master_id=d2.master_id AND d1.count_detail_number=d2.count_detail_number AND d1.create_time=d2.create_time AND d1.qty!=d1.count_qty");
queryWrapper.inSql("count_detail_number", "SELECT d1.count_detail_number FROM record_count_detail d1,(SELECT master_id,count_detail_number,MAX(create_time) create_time FROM record_count_detail WHERE master_id IN(SELECT id FROM record_count_main WHERE request_number='" + requestNumber + "') GROUP BY master_id,count_detail_number) d2 WHERE d1.master_id=d2.master_id AND d1.count_detail_number=d2.count_detail_number AND d1.create_time=d2.create_time AND d1.qty!=d1.count_qty");
return selectList(queryWrapper);
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java

@ -23,7 +23,7 @@ public interface CountadjustRecordMainMapper extends BaseMapperX<CountadjustReco
default PageResult<CountadjustRecordMainDO> selectPage(CountadjustRecordMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<CountadjustRecordMainDO>()
.eqIfPresent(CountadjustRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(CountadjustRecordMainDO::getCountRecordNumber, reqVO.getCountRecordNumber())
.eqIfPresent(CountadjustRecordMainDO::getCountRequestNumber, reqVO.getCountRequestNumber())
.eqIfPresent(CountadjustRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(CountadjustRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType())
.eqIfPresent(CountadjustRecordMainDO::getInTransactionType, reqVO.getInTransactionType())
@ -48,7 +48,7 @@ public interface CountadjustRecordMainMapper extends BaseMapperX<CountadjustReco
default List<CountadjustRecordMainDO> selectList(CountadjustRecordMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<CountadjustRecordMainDO>()
.eqIfPresent(CountadjustRecordMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(CountadjustRecordMainDO::getCountRecordNumber, reqVO.getCountRecordNumber())
.eqIfPresent(CountadjustRecordMainDO::getCountRequestNumber, reqVO.getCountRequestNumber())
.eqIfPresent(CountadjustRecordMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(CountadjustRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType())
.eqIfPresent(CountadjustRecordMainDO::getInTransactionType, reqVO.getInTransactionType())

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRequest/CountadjustRequestMainMapper.java

@ -22,7 +22,7 @@ public interface CountadjustRequestMainMapper extends BaseMapperX<CountadjustReq
default PageResult<CountadjustRequestMainDO> selectPage(CountadjustRequestMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<CountadjustRequestMainDO>()
.eqIfPresent(CountadjustRequestMainDO::getCountRecordNumber, reqVO.getCountRecordNumber())
.eqIfPresent(CountadjustRequestMainDO::getCountRequestNumber, reqVO.getCountRequestNumber())
.eqIfPresent(CountadjustRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(CountadjustRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(CountadjustRequestMainDO::getBusinessType, reqVO.getBusinessType())
@ -46,7 +46,7 @@ public interface CountadjustRequestMainMapper extends BaseMapperX<CountadjustReq
}
default List<CountadjustRequestMainDO> selectList(CountadjustRequestMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<CountadjustRequestMainDO>()
.eqIfPresent(CountadjustRequestMainDO::getCountRecordNumber, reqVO.getCountRecordNumber())
.eqIfPresent(CountadjustRequestMainDO::getCountRequestNumber, reqVO.getCountRequestNumber())
.eqIfPresent(CountadjustRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode())
.eqIfPresent(CountadjustRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(CountadjustRequestMainDO::getBusinessType, reqVO.getBusinessType())
@ -74,8 +74,4 @@ public interface CountadjustRequestMainMapper extends BaseMapperX<CountadjustReq
return selectOne(CountadjustRequestMainDO::getNumber, number);
}
default CountadjustRequestMainDO selectByCountRecordNumber(String countRecordNumber) {
return selectOne(CountadjustRequestMainDO::getCountRecordNumber, countRecordNumber);
}
}

50
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java

@ -18,11 +18,13 @@ import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordMainDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.mysql.countJob.CountJobMainMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper;
import com.win.module.wms.dal.mysql.location.LocationMapper;
import com.win.module.wms.enums.job.JobStatusEnum;
@ -66,6 +68,8 @@ public class CountJobMainServiceImpl implements CountJobMainService {
@Resource
private CountRequestMainMapper countRequestMainMapper;
@Resource
private CountRequestDetailMapper countRequestDetailMapper;
@Resource
private LocationMapper locationMapper;
@Resource
private JobUtils jobUtils;
@ -194,7 +198,9 @@ public class CountJobMainServiceImpl implements CountJobMainService {
countRecordMainDO.setUpdater(null);
countRecordMainDO.setUpdateTime(null);
countRecordMainMapper.insert(countRecordMainDO);
CountRequestMainDO countRequestMainDO = countRequestMainMapper.selectByNumber(countJobMainDO.getRequestNumber());
List<CountJobDetailUpdateReqVO> countJobDetailUpdateReqVOList = countJobMainUpdateReqVO.getSubList();
List<CountRequestDetailDO> countRequestDetailDOList = new ArrayList<>();
List<CountRecordDetailDO> countRecordDetailDOList = new ArrayList<>();
for(CountJobDetailUpdateReqVO countJobDetailUpdateReqVO : countJobDetailUpdateReqVOList) {
CountRecordDetailDO countRecordDetailDO = new CountRecordDetailDO();
@ -212,21 +218,57 @@ public class CountJobMainServiceImpl implements CountJobMainService {
countRecordDetailDO.setUpdater(null);
countRecordDetailDO.setUpdateTime(null);
countRecordDetailDOList.add(countRecordDetailDO);
//新增任务子数据,回写到申请子表中
if(countJobDetailUpdateReqVO.getId() == 0) {
CountRequestDetailDO countRequestDetailDO = new CountRequestDetailDO();
BeanUtils.copyProperties(countJobDetailUpdateReqVO, countRequestDetailDO);
countRequestDetailDO.setMasterId(countRequestMainDO.getId());
countRequestDetailDO.setNumber(countRequestMainDO.getNumber());
countRequestDetailDO.setId(null);
countRequestDetailDO.setCreator(null);
countRequestDetailDO.setCreateTime(null);
countRequestDetailDO.setUpdater(null);
countRequestDetailDO.setUpdateTime(null);
countRequestDetailDOList.add(countRequestDetailDO);
}
}
countRecordDetailMapper.insertBatch(countRecordDetailDOList);
List<String> typeList = new ArrayList<>();
typeList.add(JobStatusEnum.PENDING.getCode());
typeList.add(JobStatusEnum.PROCESSING.getCode());
Long count = countJobMainMapper.selectListCount(typeList, countJobMainDO.getRequestNumber());
CountRequestMainDO countRequestMainDO = countRequestMainMapper.selectByNumber(countJobMainDO.getRequestNumber());
//申请单下所有任务全部完成
if(count == 0) {
Long notFinishedCount = countJobMainMapper.selectListCount(typeList, countJobMainDO.getRequestNumber(), countJobMainDO.getStage());
//查询本阶段为完成的任务数,都完成回写申请状态和申请中任务状态
if(notFinishedCount == 0) {
switch (countJobMainDO.getStage()) {
case "INITIAL_COUNT":
countRequestMainDO.setJobStatus1(JobStatusEnum.COMPLETED.getCode());
break;
case "RECOUNT":
countRequestMainDO.setJobStatus2(JobStatusEnum.COMPLETED.getCode());
break;
case "AUDIT_COUNT":
countRequestMainDO.setJobStatus3(JobStatusEnum.COMPLETED.getCode());
break;
}
countRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode());
// 判断盘点记录中是否有未盘平,有的话,更新申请中盘点调整数量状态
long differenceCount = countRecordDetailMapper.getDifferenceCount(countRequestMainDO.getNumber());
//生成盘点调整状态1不可生成2可生成3已生成4不需要生成
if(differenceCount == 0) {//全部盘平
countRequestMainDO.setCountAdjustStatus("4");
} else {
countRequestMainDO.setCountAdjustStatus("2");
}
countRequestMainMapper.updateById(countRequestMainDO);
} else if(countRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成
countRequestMainDO.setCountAdjustStatus("1");
countRequestMainDO.setStatus(RequestStatusEnum.PARTIAL.getCode());
countRequestMainMapper.updateById(countRequestMainDO);
}
//盘点申请中没有,但盘点任务盘出来多的物品,回写到盘点申请子表中
if(!countRequestDetailDOList.isEmpty()) {
countRequestDetailMapper.insertBatch(countRequestDetailDOList);
}
return number;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainService.java

@ -46,10 +46,4 @@ public interface CountRecordMainService {
*/
List<CountRecordMainDO> getCountRecordMainList(CustomConditions conditions);
/**
* 根据盘点记录生成库存调整申请
* @param countRecordMainId
* @return
*/
int generateCountadjustRequest(Long countRecordMainId);
}

78
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainServiceImpl.java

@ -1,38 +1,24 @@
package com.win.module.wms.service.countRecord;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
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.countRecord.vo.CountRecordMainExportReqVO;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordMainDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestDetailMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestMainMapper;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import static com.win.module.wms.enums.ErrorCodeConstants.COUNTADJUST_REQUEST_EXISTS;
/**
* 盘点记录主 Service 实现类
*
@ -77,68 +63,4 @@ public class CountRecordMainServiceImpl implements CountRecordMainService {
return countRecordMainMapper.selectList(conditions);
}
@Override
@Transactional
public int generateCountadjustRequest(Long countRecordMainId) {
CountRecordMainDO countRecordMainDO = countRecordMainMapper.selectById(countRecordMainId);
CountadjustRequestMainDO countadjustRequestMainDOExists = countadjustRequestMainMapper.selectByCountRecordNumber(countRecordMainDO.getNumber());
if(countadjustRequestMainDOExists != null) {
throw new ServiceException(COUNTADJUST_REQUEST_EXISTS);
}
List<CountRecordDetailDO> countRecordDetailDOList = countRecordDetailMapper.selectList(countRecordMainId);
List<CountadjustRequestDetailDO> countadjustRequestDetailDOList = new ArrayList<>();
int countDetailNumber = 1;
for(CountRecordDetailDO countRecordDetailDO : countRecordDetailDOList) {
//盘点记录数量不一致时生成盘点调整申请
if(countRecordDetailDO.getCountQty().compareTo(countRecordDetailDO.getQty()) != 0) {
CountadjustRequestDetailDO countadjustRequestDetailDO = new CountadjustRequestDetailDO();
BeanUtils.copyProperties(countRecordDetailDO, countadjustRequestDetailDO);
countadjustRequestDetailDO.setCountDetailNumber(String.valueOf(countDetailNumber));
countadjustRequestDetailDO.setInventoryQty(countRecordDetailDO.getQty());
countadjustRequestDetailDO.setCountQty(countRecordDetailDO.getCountQty());
//库存数量减盘点数量等于调整数量
countadjustRequestDetailDO.setAdjustQty(countRecordDetailDO.getQty().subtract(countRecordDetailDO.getCountQty()));
//调整数量的绝对值
countadjustRequestDetailDO.setQty(countadjustRequestDetailDO.getAdjustQty().abs());
countadjustRequestDetailDO.setId(null);
countadjustRequestDetailDO.setCreator(null);
countadjustRequestDetailDO.setCreateTime(null);
countadjustRequestDetailDO.setUpdater(null);
countadjustRequestDetailDO.setUpdateTime(null);
countadjustRequestDetailDOList.add(countadjustRequestDetailDO);
countDetailNumber++;
}
}
int result = 0;
//增加库存调整
if(!countadjustRequestDetailDOList.isEmpty()) {
CountadjustRequestMainDO countadjustRequestMainDO = new CountadjustRequestMainDO();
BeanUtils.copyProperties(countRecordMainDO, countadjustRequestMainDO);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CountAdjustRequest");
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountAdjustRequest");
String adjustNumber = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_REQUEST.getCode());
countadjustRequestMainDO.setNumber(adjustNumber);
countadjustRequestMainDO.setBusinessType(businesstypeDO.getCode());
countadjustRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
countadjustRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
countadjustRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
countadjustRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
countadjustRequestMainDO.setCountRecordNumber(countRecordMainDO.getNumber());
countadjustRequestMainDO.setStatus(RequestStatusEnum.NEW.getCode());
countadjustRequestMainDO.setId(null);
countadjustRequestMainDO.setCreator(null);
countadjustRequestMainDO.setCreateTime(null);
countadjustRequestMainDO.setUpdater(null);
countadjustRequestMainDO.setUpdateTime(null);
result = countadjustRequestMainMapper.insert(countadjustRequestMainDO);
for(CountadjustRequestDetailDO countadjustRequestDetailDO : countadjustRequestDetailDOList) {
countadjustRequestDetailDO.setMasterId(countadjustRequestMainDO.getId());
countadjustRequestDetailDO.setNumber(adjustNumber);
}
countadjustRequestDetailMapper.insertBatch(countadjustRequestDetailDOList);
trendsApi.createTrends(countadjustRequestMainDO.getId(), "countadjustRequest", "生成了盘点调整申请", TrendsTypeEnum.CREATE);
}
return result;
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java

@ -129,4 +129,11 @@ public interface CountRequestMainService {
* @return 更新数量
*/
Integer createSuperviseCountJob(CountRequestMainUpdateReqVO updateReqVO);
/**
* 根据盘点记录生成库存调整申请
* @param countRequestMainId 盘点申请id
* @return 更新数量
*/
int generateCountadjustRequest(Long countRequestMainId);
}

67
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java

@ -20,8 +20,11 @@ import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO;
import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO;
import com.win.module.wms.dal.dataobject.countPlan.CountPlanDetailDO;
import com.win.module.wms.dal.dataobject.countPlan.CountPlanMainDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
@ -34,6 +37,8 @@ import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestDetailMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestMainMapper;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
@ -44,6 +49,7 @@ import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@ -97,6 +103,10 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
private JobsettingService jobsettingService;
@Resource
private CountJobDetailMapper countJobDetailMapper;
@Resource
private CountadjustRequestMainMapper countadjustRequestMainMapper;
@Resource
private CountadjustRequestDetailMapper countadjustRequestDetailMapper;
@Override
@Transactional
@ -432,6 +442,63 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
}
}
@Override
@Transactional
public int generateCountadjustRequest(Long countRecordMainId) {
CountRequestMainDO countRequestMainDO = countRequestMainMapper.selectById(countRecordMainId);
if("2".equals(countRequestMainDO.getCountAdjustStatus())) {
throw new ServiceException(COUNTADJUST_REQUEST_EXISTS);
}
List<CountRecordDetailDO> countRecordDetailDOList = countRecordDetailMapper.getDifferenceList(countRequestMainDO.getNumber());
List<CountadjustRequestDetailDO> countadjustRequestDetailDOList = new ArrayList<>();
for(CountRecordDetailDO countRecordDetailDO : countRecordDetailDOList) {
CountadjustRequestDetailDO countadjustRequestDetailDO = new CountadjustRequestDetailDO();
BeanUtils.copyProperties(countRecordDetailDO, countadjustRequestDetailDO);
countadjustRequestDetailDO.setInventoryQty(countRecordDetailDO.getQty());
countadjustRequestDetailDO.setCountQty(countRecordDetailDO.getCountQty());
//库存数量减盘点数量等于调整数量
countadjustRequestDetailDO.setAdjustQty(countRecordDetailDO.getQty().subtract(countRecordDetailDO.getCountQty()));
//调整数量的绝对值
countadjustRequestDetailDO.setQty(countadjustRequestDetailDO.getAdjustQty().abs());
countadjustRequestDetailDO.setId(null);
countadjustRequestDetailDO.setCreator(null);
countadjustRequestDetailDO.setCreateTime(null);
countadjustRequestDetailDO.setUpdater(null);
countadjustRequestDetailDO.setUpdateTime(null);
countadjustRequestDetailDOList.add(countadjustRequestDetailDO);
}
int result = 0;
//增加库存调整
if(!countadjustRequestDetailDOList.isEmpty()) {
CountadjustRequestMainDO countadjustRequestMainDO = new CountadjustRequestMainDO();
BeanUtils.copyProperties(countRequestMainDO, countadjustRequestMainDO);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CountAdjustRequest");
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountAdjustRequest");
String adjustNumber = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_REQUEST.getCode());
countadjustRequestMainDO.setNumber(adjustNumber);
countadjustRequestMainDO.setBusinessType(businesstypeDO.getCode());
countadjustRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
countadjustRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
countadjustRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
countadjustRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
countadjustRequestMainDO.setCountRequestNumber(countRequestMainDO.getNumber());
countadjustRequestMainDO.setStatus(RequestStatusEnum.NEW.getCode());
countadjustRequestMainDO.setId(null);
countadjustRequestMainDO.setCreator(null);
countadjustRequestMainDO.setCreateTime(null);
countadjustRequestMainDO.setUpdater(null);
countadjustRequestMainDO.setUpdateTime(null);
result = countadjustRequestMainMapper.insert(countadjustRequestMainDO);
for(CountadjustRequestDetailDO countadjustRequestDetailDO : countadjustRequestDetailDOList) {
countadjustRequestDetailDO.setMasterId(countadjustRequestMainDO.getId());
countadjustRequestDetailDO.setNumber(adjustNumber);
}
countadjustRequestDetailMapper.insertBatch(countadjustRequestDetailDOList);
trendsApi.createTrends(countadjustRequestMainDO.getId(), "countadjustRequest", "生成了盘点调整申请", TrendsTypeEnum.CREATE);
}
return result;
}
/**
* 校验导入并赋值一些参数未完全实现
* @param mainDO

23
win-module-wms/win-module-wms-biz/src/main/resources/mapper/countRecord/CountRecordDetailMapper.xml

@ -2,11 +2,22 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<!-- 盘点记录未盘平数量-->
<select id="getDifferenceCount" resultType="Long" parameterType="String">
SELECT COUNT(1) FROM record_count_detail d1,(
SELECT master_id,count_detail_number,MAX(create_time) create_time FROM record_count_detail WHERE master_id IN (
SELECT id FROM record_count_main WHERE request_number=#{requestNumber}
) GROUP BY master_id,count_detail_number
) d2 WHERE d1.master_id=d2.master_id AND d1.count_detail_number=d2.count_detail_number AND d1.create_time=d2.create_time AND d1.qty!=d1.count_qty
</select>
<!-- 盘点记录未盘平数据-->
<select id="getDifferenceCount" resultType="CountRecordDetailDO" parameterType="String">
SELECT d1.* FROM record_count_detail d1,(
SELECT master_id,count_detail_number,MAX(create_time) create_time FROM record_count_detail WHERE master_id IN (
SELECT id FROM record_count_main WHERE request_number=#{requestNumber}
) GROUP BY master_id,count_detail_number
) d2 WHERE d1.master_id=d2.master_id AND d1.count_detail_number=d2.count_detail_number AND d1.create_time=d2.create_time AND d1.qty!=d1.count_qty
</select>
</mapper>

Loading…
Cancel
Save