Browse Source

生产补料 直接创建记录

master
陈薪名 2 years ago
parent
commit
f1833fc02a
  1. 1
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/RepleinshRecordMainController.java
  3. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainCreateReqVO.java
  4. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRecord/RepleinshRecordDetailConvert.java
  5. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java
  6. 141
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRecord/RepleinshRecordMainServiceImpl.java

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

@ -650,6 +650,7 @@ public interface ErrorCodeConstants {
ErrorCode PRODUCTION_MAIN_CANNOT_AGREE = new ErrorCode(1_001_101_012, "生产计划状态不支持审批通过");
ErrorCode PRODUCTION_MAIN_CANNOT_PUBLISH = new ErrorCode(1_001_101_013, "生产计划状态不支持发布");
ErrorCode PRODUCTION_MAIN_CANNOT_RESETTING = new ErrorCode(1_001_101_014, "生产计划状态不支持重置");
ErrorCode PRODUCTION_MAIN_CANNOT_ERROR = new ErrorCode(1_001_101_015, "根据【车间】【生产线】未查询到相关工位信息");
//制品收货申请主ErrorCode
ErrorCode PRODUCTRECEIPT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_102_000, "制品收货申请主不存在");

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/RepleinshRecordMainController.java

@ -4,6 +4,7 @@ import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordMainCreateReqVO;
import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordDetailDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.repleinshRecord.RepleinshRecordDetailService;
@ -49,6 +50,14 @@ public class RepleinshRecordMainController {
@Resource
private AdminUserApi userApi;
@PostMapping("/create")
@Operation(summary = "创建补料记录记录")
@PreAuthorize("@ss.hasPermission('wms:repleinsh-record-main:create')")
public CommonResult<Long> createRepleinshRecordMain(@Valid @RequestBody RepleinshRecordMainCreateReqVO createReqVO) {
return success(repleinshRecordMainService.createRepleinshRecordMain(createReqVO));
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得补料记录主信息分页")
@PreAuthorize("@ss.hasPermission('wms:RepleinshRecordMain:query')")

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainCreateReqVO.java

@ -1,12 +1,19 @@
package com.win.module.wms.controller.repleinshRecord.vo;
import com.win.framework.excel.core.annotations.SubObject;
import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordDetailCreateReqVO;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
@Schema(description = "管理后台 - 补料记录主创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class RepleinshRecordMainCreateReqVO extends RepleinshRecordMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<RepleinshRecordDetailCreateReqVO> subList;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRecord/RepleinshRecordDetailConvert.java

@ -4,10 +4,12 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchasereturnRecord.vo.PurchasereturnRecordDetailCreateReqVO;
import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailCreateReqVO;
import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailExcelVO;
import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailRespVO;
import com.win.module.wms.controller.repleinshRecord.vo.RepleinshRecordDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordDetailDO;
@ -34,4 +36,6 @@ public interface RepleinshRecordDetailConvert {
List<RepleinshRecordDetailExcelVO> convertList02(List<RepleinshRecordDetailDO> list);
List<RepleinshRecordDetailDO> convertList03(List<RepleinshRecordDetailCreateReqVO> list);
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java

@ -561,7 +561,11 @@ public class ProductionMainServiceImpl implements ProductionMainService {
queryWrapper.eq("workshop_code",mainDO.getWorkshop());
queryWrapper.eq("production_line_code",mainDO.getProductionLine());
List<WorkstationDO> workstationDOList = workstationMapper.selectList(queryWrapper);
if (workstationDOList == null || workstationDOList.size() == 0) {
throw exception(PRODUCTION_MAIN_CANNOT_ERROR);
}
preparetoissueDetailCreateReqVO.setWorkStation(workstationDOList.get(0).getCode());
preparetoissueDetailCreateReqVO.setToLocationCode(workstationDOList.get(0).getRawLocationCode());
}
preparetoissueMainCreateReqVO.setSubList(preparetoissueDetailCreateReqVOList);
preparetoissueMainService.createPreparetoissueMain(preparetoissueMainCreateReqVO);

141
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRecord/RepleinshRecordMainServiceImpl.java

@ -1,12 +1,37 @@
package com.win.module.wms.service.repleinshRecord;
import com.win.framework.common.pojo.CustomConditions;
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.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.repleinshRecord.vo.*;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordDetailConvert;
import com.win.module.wms.convert.repleinshRecord.RepleinshRecordDetailConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordDetailDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.repleinshRecord.RepleinshRecordDetailMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordMainDO;
@ -16,6 +41,7 @@ import com.win.module.wms.convert.repleinshRecord.RepleinshRecordMainConvert;
import com.win.module.wms.dal.mysql.repleinshRecord.RepleinshRecordMainMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -27,16 +53,125 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class RepleinshRecordMainServiceImpl implements RepleinshRecordMainService {
@Resource
private TransactionService transactionService;
@Resource
private RepleinshRecordDetailMapper repleinshRecordDetailMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private LocationService locationService;
@Resource
private RecordsettingService recordsettingService;
@Resource
private TrendsApi trendsApi;
@Resource
private JobUtils jobUtils;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private AdminUserApi userApi;
@Resource
private RepleinshRecordMainMapper repleinshRecordMainMapper;
@Override
public Long createRepleinshRecordMain(RepleinshRecordMainCreateReqVO createReqVO) {
// 插入
RepleinshRecordMainDO repleinshRecordMain = RepleinshRecordMainConvert.INSTANCE.convert(createReqVO);
repleinshRecordMainMapper.insert(repleinshRecordMain);
AdminUserRespDTO userRespDTO = userApi.getUser(getLoginUserId());
RepleinshRecordMainDO mainDO = RepleinshRecordMainConvert.INSTANCE.convert(createReqVO);
List<RepleinshRecordDetailDO> subDOList = RepleinshRecordDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_RECORD.getCode());
mainDO.setNumber(number);
mainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId()));
mainDO.setExecuteTime(LocalDateTime.now());
mainDO.setActiveDate(LocalDateTime.now());
mainDO.setAvailable("TRUE");
// 业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRecord");
mainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
mainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
mainDO.setInTransactionType(businesstypeDO.getInTransactionType());
mainDO.setBusinessType(businesstypeDO.getCode());
// 接口类型
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("RepleinmentRecord");
mainDO.setInterfaceType(recordsettingDO.getInterfaceType());
repleinshRecordMainMapper.insert(mainDO);
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
for (RepleinshRecordDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode());
if(locationDOFrom != null) {
detailDO.setFromAreaCode(locationDOFrom.getAreaCode());
detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode());
} else {
throw exception(LOCATION_NOT_EXISTS);
}
LocationDO locationDOTo = locationService.selectLocation(detailDO.getToLocationCode());
if(locationDOFrom != null) {
detailDO.setToAreaCode(locationDOTo.getAreaCode());
detailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode());
} else {
throw exception(LOCATION_NOT_EXISTS);
}
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
if (itembasicDO != null) {
detailDO.setItemName(itembasicDO.getName());
detailDO.setItemDesc1(itembasicDO.getDesc1());
detailDO.setItemDesc2(itembasicDO.getDesc2());
detailDO.setProjectCode(itembasicDO.getProject());
detailDO.setUom(itembasicDO.getUom());
} else {
throw exception(ITEMBASIC_NOT_EXISTS);
}
// 库存事务——入
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn);
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOIn.setBatch(detailDO.getToBatch());
transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus());
transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode());
transactionCreateReqVOIn.setSinglePrice(BigDecimal.ZERO);
transactionCreateReqVOIn.setAmount(BigDecimal.ZERO);
transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode());
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOIn);
// 库存事务——出
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut);
transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setInventoryStatus(detailDO.getInventoryStatus());
transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOOut.setBatch(detailDO.getFromBatch());
transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber());
transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode());
transactionCreateReqVOOut.setSinglePrice(BigDecimal.ZERO);
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOOut);
}
repleinshRecordDetailMapper.insertBatch(subDOList);
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "repleinshRecordMain", "增加了补料记录", TrendsTypeEnum.CREATE);
// 返回
return repleinshRecordMain.getId();
return mainDO.getId();
}
@Override
public PageResult<RepleinshRecordMainDO> getRepleinshRecordMainSenior(CustomConditions conditions) {

Loading…
Cancel
Save