抛合同接口调用 组板、确认事件测试通过

main
BKGY_MYT 1 month ago
parent fce4ec5909
commit abbef3c143

@ -2,12 +2,15 @@ package com.xisc.pm.api.controller.v1;
import com.google.ortools.Loader; import com.google.ortools.Loader;
import com.xisc.pm.api.dto.PmPdRecDTO; import com.xisc.pm.api.dto.PmPdRecDTO;
import com.xisc.pm.api.dto.PmProContFilterResposeDTO;
import com.xisc.pm.api.dto.PmProductionPlanReqDTO; import com.xisc.pm.api.dto.PmProductionPlanReqDTO;
import com.xisc.pm.api.dto.model.*; import com.xisc.pm.api.dto.model.*;
import com.xisc.pm.domain.entity.*; import com.xisc.pm.domain.entity.*;
import com.xisc.pm.domain.vo.util.JsonData; import com.xisc.pm.domain.vo.util.JsonData;
import io.choerodon.core.iam.ResourceLevel;
import io.choerodon.core.oauth.CustomUserDetails; import io.choerodon.core.oauth.CustomUserDetails;
import io.choerodon.core.oauth.DetailsHelper; import io.choerodon.core.oauth.DetailsHelper;
import io.choerodon.swagger.annotation.Permission;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
@ -37,6 +40,7 @@ public class SubController {
@Autowired @Autowired
private SubService subService; private SubService subService;
// @Autowired // @Autowired
// private TransactionService transactionService; // private TransactionService transactionService;
@ -189,6 +193,7 @@ public class SubController {
@ApiOperation("求解处理") @ApiOperation("求解处理")
@PostMapping("Solver") @PostMapping("Solver")
@Permission(level = ResourceLevel.ORGANIZATION)
public JsonData Solver() { public JsonData Solver() {
// 测试数据 // 测试数据
long[] values = {360, 83, 59, 130, 431, 67, 230, 52, 93, 125, 670, 892, 600, 38, 48, 147, long[] values = {360, 83, 59, 130, 431, 67, 230, 52, 93, 125, 670, 892, 600, 38, 48, 147,
@ -215,6 +220,7 @@ public class SubController {
} }
@ApiOperation("数据处理") @ApiOperation("数据处理")
@Permission(level = ResourceLevel.ORGANIZATION)
@PostMapping("/SubData1") @PostMapping("/SubData1")
public JsonData SubData1( PmProductionPlanReqDTO dtoList, @PathVariable Long organizationId) { public JsonData SubData1( PmProductionPlanReqDTO dtoList, @PathVariable Long organizationId) {
System.out.println("调用成功"); System.out.println("调用成功");
@ -227,6 +233,7 @@ public class SubController {
@ApiOperation("数据处理") @ApiOperation("数据处理")
@PostMapping("/SubData") @PostMapping("/SubData")
@Permission(level = ResourceLevel.ORGANIZATION)
public JsonData SubData(@RequestBody PmSubHis pmSubHis, @PathVariable Long organizationId) { public JsonData SubData(@RequestBody PmSubHis pmSubHis, @PathVariable Long organizationId) {
SecurityTokenHelper.validTokenIgnoreInsert(pmSubHis); SecurityTokenHelper.validTokenIgnoreInsert(pmSubHis);
String strSlab = pmSubHis.getSlabNo(); String strSlab = pmSubHis.getSlabNo();
@ -466,6 +473,7 @@ public class SubController {
//初始化方案 //初始化方案
Loader.loadNativeLibraries(); Loader.loadNativeLibraries();
// System.load("E:/XTGT/ortools-win32-x86-64-9.7.2996/ortools-win32-x86-64/jniortools.dll");
// 创建多个任务 // 创建多个任务
List<Callable<Void>> tasks = new ArrayList<>(); List<Callable<Void>> tasks = new ArrayList<>();
@ -3829,6 +3837,9 @@ public class SubController {
pmPdRecDTO.setQty(BigDecimal.ZERO); pmPdRecDTO.setQty(BigDecimal.ZERO);
pmPdRecs.add(pmPdRecDTO); pmPdRecs.add(pmPdRecDTO);
} }
//抛合同
// subService.zbCtEventRec(orderNoList, organizationId,mscLineNo,virtualSlabNo,pmSmallPltPosDOList);
} }
public void SaveData(SlabInfoDO p,Long organizationId) { public void SaveData(SlabInfoDO p,Long organizationId) {

@ -126,5 +126,6 @@ public interface SubService {
void SaveData(SlabInfoDO p, List<PmPdSlab> pmPdSlabDOList, List<PmPdPlateCut> pmPdPlateCutDOList, List<PmPdBlockPos> pmPdBlockPosDOList, List<PmPdContSum> pmPdContSumDOList, List<PmSmallPltPos> pmSmallPltPosDOList, List<PmCmdSlab> pmCmdSlabDOList, List<PmCmdLargePlt> pmCmdLargePltDOList, List<PmCmdCont> pmCmdContDOList, List<PmCmdSmallPlt> pmCmdSmallPltDOList, List<PmSubHis> plistpmSubHisDO, List<PmSubOrd> plistpmSubOrdDO, List<PmPdRecDTO> pmPdRecDTOList, Long organizationId); void SaveData(SlabInfoDO p, List<PmPdSlab> pmPdSlabDOList, List<PmPdPlateCut> pmPdPlateCutDOList, List<PmPdBlockPos> pmPdBlockPosDOList, List<PmPdContSum> pmPdContSumDOList, List<PmSmallPltPos> pmSmallPltPosDOList, List<PmCmdSlab> pmCmdSlabDOList, List<PmCmdLargePlt> pmCmdLargePltDOList, List<PmCmdCont> pmCmdContDOList, List<PmCmdSmallPlt> pmCmdSmallPltDOList, List<PmSubHis> plistpmSubHisDO, List<PmSubOrd> plistpmSubOrdDO, List<PmPdRecDTO> pmPdRecDTOList, Long organizationId);
// void SaveData(List<PmPdSlab> pmPdSlabDOList, List<PmPdPlateCut> pmPdPlateCutDOList, List<PmPdBlockPos> pmPdBlockPosDOList, List<PmPdContSum> pmPdContSumDOList, List<PmSmallPltPos> pmSmallPltPosDOList, List<PmCmdSlab> pmCmdSlabDOList, List<PmCmdLargePlt> pmCmdLargePltDOList, List<PmCmdCont> pmCmdContDOList, List<PmCmdSmallPlt> pmCmdSmallPltDOList); // void SaveData(List<PmPdSlab> pmPdSlabDOList, List<PmPdPlateCut> pmPdPlateCutDOList, List<PmPdBlockPos> pmPdBlockPosDOList, List<PmPdContSum> pmPdContSumDOList, List<PmSmallPltPos> pmSmallPltPosDOList, List<PmCmdSlab> pmCmdSlabDOList, List<PmCmdLargePlt> pmCmdLargePltDOList, List<PmCmdCont> pmCmdContDOList, List<PmCmdSmallPlt> pmCmdSmallPltDOList);
} }

@ -1,9 +1,10 @@
package com.xisc.pm.app.service.impl; package com.xisc.pm.app.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xisc.pm.api.dto.PmPdRecDTO; import com.google.common.collect.Maps;
import com.xisc.pm.api.dto.PmPdSlabSplitDTO; import com.xisc.pm.api.dto.*;
import com.xisc.pm.api.dto.PmProContYieldDTO; import com.xisc.pm.api.dto.ctevent.ProContBoardEndDTO;
import com.xisc.pm.api.dto.ctevent.ProContOverDTO;
import com.xisc.pm.api.dto.model.*; import com.xisc.pm.api.dto.model.*;
import com.xisc.pm.app.service.PmPdRecService; import com.xisc.pm.app.service.PmPdRecService;
import com.xisc.pm.app.service.strategy.PdMatTypeStrategyFactory; import com.xisc.pm.app.service.strategy.PdMatTypeStrategyFactory;
@ -11,10 +12,13 @@ import com.xisc.pm.app.service.strategy.pdmattype.PdMatTypeStrategy;
import com.xisc.pm.domain.entity.*; import com.xisc.pm.domain.entity.*;
import com.xisc.pm.domain.repository.*; import com.xisc.pm.domain.repository.*;
import com.xisc.pm.domain.vo.MatStatusModifyVO; import com.xisc.pm.domain.vo.MatStatusModifyVO;
import com.xisc.pm.infra.client.EventClient;
import com.xisc.pm.infra.client.MmEventClient; import com.xisc.pm.infra.client.MmEventClient;
import com.xisc.pm.infra.constant.Constants; import com.xisc.pm.infra.constant.Constants;
import com.xisc.pm.infra.constant.CtEventConstants;
import com.xisc.pm.infra.constant.PmPlateConstants; import com.xisc.pm.infra.constant.PmPlateConstants;
import com.xisc.pm.infra.enums.PdEventType; import com.xisc.pm.infra.enums.PdEventType;
import com.xisc.pm.infra.enums.PdProdFlag;
import com.xisc.pm.infra.mapper.SubMapper; import com.xisc.pm.infra.mapper.SubMapper;
import com.xisc.pm.app.service.SubService; import com.xisc.pm.app.service.SubService;
import com.xisc.pm.infra.util.BeanUtils; import com.xisc.pm.infra.util.BeanUtils;
@ -28,8 +32,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service @Service
public class SubServiceImpl implements SubService { public class SubServiceImpl implements SubService {
@ -82,6 +88,12 @@ public class SubServiceImpl implements SubService {
@Autowired @Autowired
private PmPdRecService pmPdRecService; private PmPdRecService pmPdRecService;
@Autowired
private PmProContRepository pmProContRepository;
@Autowired
protected EventClient eventClient;
// 获取板坯信息 // 获取板坯信息
@Override @Override
public List<SlabInfoDO> getSlabInfo(SubParams subParams) { public List<SlabInfoDO> getSlabInfo(SubParams subParams) {
@ -426,26 +438,11 @@ public class SubServiceImpl implements SubService {
return subMapper.getPmThickAddvBt(); return subMapper.getPmThickAddvBt();
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void SaveData(SlabInfoDO p, List<PmPdSlab> pmPdSlabDOList, List<PmPdPlateCut> pmPdPlateCutDOList, List<PmPdBlockPos> pmPdBlockPosDOList, List<PmPdContSum> pmPdContSumDOList, List<PmSmallPltPos> pmSmallPltPosDOList, List<PmCmdSlab> pmCmdSlabDOList, List<PmCmdLargePlt> pmCmdLargePltDOList, List<PmCmdCont> pmCmdContDOList, List<PmCmdSmallPlt> pmCmdSmallPltDOList, List<PmSubHis> plistpmSubHisDO, List<PmSubOrd> plistpmSubOrdDO, List<PmPdRecDTO> pmPdRecDTOList, Long organizationId) { public void SaveData(SlabInfoDO p, List<PmPdSlab> pmPdSlabDOList, List<PmPdPlateCut> pmPdPlateCutDOList, List<PmPdBlockPos> pmPdBlockPosDOList, List<PmPdContSum> pmPdContSumDOList, List<PmSmallPltPos> pmSmallPltPosDOList, List<PmCmdSlab> pmCmdSlabDOList, List<PmCmdLargePlt> pmCmdLargePltDOList, List<PmCmdCont> pmCmdContDOList, List<PmCmdSmallPlt> pmCmdSmallPltDOList, List<PmSubHis> plistpmSubHisDO, List<PmSubOrd> plistpmSubOrdDO, List<PmPdRecDTO> pmPdRecDTOList, Long organizationId) {
// 调用mm接口
// 查询MM_SLAB 信息获取板坯信息
PmPdSlabSplitDTO pmPdSlabSplitDTO = pmPdSlabRepository.selectMmSlabBySlabId(p.getSlabId(),p.getTenantId());
// 查询板坯信息表。第一次查询可能无值
PmPdSlabInfo pmPdSlabInfo = pmPdSlabInfoRepository.selectBySlabNo(p.getSlabNo(), p.getTenantId());
if (pmPdSlabInfo == null) {
pmPdSlabInfo = buildPmPdSlabInfo(pmPdSlabSplitDTO , p.getSlabNo() , p.getMscLineNo() , p.getTenantId());
pmPdSlabInfoRepository.insertSelective(pmPdSlabInfo);
System.out.println("pmPdSlabInfo表 保存成功");
// 轧钢模块“在制品材料管理封锁事件接口"
callMatStatusModify(pmPdSlabInfo);
System.out.println("mm模块接口 调用成功");
}
//抛合同事件 //抛合同事件
String bizId = pmPdRecDTOList.get(0).getKeyvalue1(); String bizId = pmPdRecDTOList.get(0).getKeyvalue1();
@ -454,21 +451,38 @@ public class SubServiceImpl implements SubService {
throw new CommonException("pm.pm_pro_cont_043", bizId); throw new CommonException("pm.pm_pro_cont_043", bizId);
} }
PdMatTypeStrategy pdMatTypeStrategy = PdMatTypeStrategyFactory.matchStrategy("S"); PdMatTypeStrategy pdMatTypeStrategy = PdMatTypeStrategyFactory.matchStrategy("S");
try { try {
// 抛合同组板事件 // 抛合同组板事件
pmPdRecService.createEvent(organizationId, pmPdRecDTOList pmPdRecService.createEvent(organizationId, pmPdRecDTOList
, PdEventType.HP04, Constants.SYSTEM_PD_CODE, pdMatTypeStrategy.pdProgram()); , PdEventType.HP04, Constants.SYSTEM_PD_CODE, pdMatTypeStrategy.pdProgram());
redisHelper.strSet(key, "1", 30L, TimeUnit.SECONDS); redisHelper.strSet(key, "1", 30L, TimeUnit.SECONDS);
// 抛组板履历事件
List<PmPdRecDTO> pmPdRecs = new ArrayList<>();
CustomUserDetails userDetails = DetailsHelper.getUserDetails();
for (PmPdContSum contSum : pmPdContSumDOList) {
PmPdRecDTO pmPdRecDTO = new PmPdRecDTO();
pmPdRecDTO.setOrderNo(contSum.getOrderNo());
pmPdRecDTO.setEventMaker(userDetails == null ? "" : userDetails.getUserId().toString());
pmPdRecDTO.setMscLineNo(pmPdRecDTOList.get(0).getMscLineNo());
pmPdRecDTO.setKeyvalue1(bizId);
pmPdRecDTO.setKeyvalue1Desc(PmPdRecDTO.DESC_VIRTUAL_SLAB_NO);
pmPdRecDTO.setMatNo(bizId);
pmPdRecDTO.setQty(contSum.getOrderPlateNum());
pmPdRecs.add(pmPdRecDTO);
}
pmPdRecService.createEvent(organizationId, pmPdRecs, PdEventType.HP10,
Constants.SYSTEM_PD_CODE, "余材板坯组板");
System.out.println("抛合同组板事件 执行成功");
// 抛合同
} finally { } finally {
// 抛合同组板释放事件 // 抛合同组板释放事件
pmPdRecService.createEvent(organizationId, pmPdRecDTOList pmPdRecService.createEvent(organizationId, pmPdRecDTOList
, PdEventType.HP05, Constants.SYSTEM_PD_CODE, pdMatTypeStrategy.pdProgram()); , PdEventType.HP05, Constants.SYSTEM_PD_CODE, pdMatTypeStrategy.pdProgram());
redisHelper.delKey(key); redisHelper.delKey(key);
} }
//抛合同事件
if (plistpmSubHisDO.size() > 0) { if (plistpmSubHisDO.size() > 0) {
@ -516,10 +530,94 @@ public class SubServiceImpl implements SubService {
pmCmdSmallPltRepository.batchInsertSelective(pmCmdSmallPltDOList); pmCmdSmallPltRepository.batchInsertSelective(pmCmdSmallPltDOList);
System.out.println("PmCmdSmallPlt 命令小板表 保存成功"); System.out.println("PmCmdSmallPlt 命令小板表 保存成功");
} }
// 调用mm接口
// 查询MM_SLAB 信息获取板坯信息
PmPdSlabSplitDTO pmPdSlabSplitDTO = pmPdSlabRepository.selectMmSlabBySlabId(p.getSlabId(), p.getTenantId());
// 查询板坯信息表。第一次查询可能无值
PmPdSlabInfo pmPdSlabInfo = pmPdSlabInfoRepository.selectBySlabNo(p.getSlabNo(), p.getTenantId());
pmPdSlabInfo = buildPmPdSlabInfo(pmPdSlabSplitDTO, p.getSlabNo(), p.getMscLineNo(), p.getTenantId());
pmPdSlabInfoRepository.insertSelective(pmPdSlabInfo);
System.out.println("pmPdSlabInfo表 保存成功");
//抛合同
zbCtEventRec(organizationId, pmPdSlabDOList, pmCmdLargePltDOList, pmCmdSlabDOList, pmSmallPltPosDOList);
System.out.println("抛合同事件完成");
// 轧钢模块“在制品材料管理封锁事件接口"
callMatStatusModify(pmPdSlabInfo);
System.out.println("mm模块接口 调用成功");
System.out.println("程序执行完成!");
}
public void zbCtEventRec(Long organizationId, List<PmPdSlab> pmPdSlabDOList, List<PmCmdLargePlt> pmCmdLargePltDOList, List<PmCmdSlab> pmCmdSlabDOList, List<PmSmallPltPos> pmSmallPltPosDOList) {
for (PmPdSlab pmPdSlab : pmPdSlabDOList) {
List<PmSmallPltPos> smallPltPosList = pmSmallPltPosDOList.stream()
.filter(p -> p.getPdMatNo().equals(pmPdSlab.getVirtualSlabNo()))
.collect(Collectors.toList());
List<PmCmdLargePlt> largePltList = pmCmdLargePltDOList.stream()
.filter(p -> p.getPonoSlabNo().equals(pmPdSlab.getVirtualSlabNo()))
.collect(Collectors.toList());
List<PmCmdSlab> slabList = pmCmdSlabDOList.stream()
.filter(p -> p.getVirtualSlabNo().equals(pmPdSlab.getVirtualSlabNo()))
.collect(Collectors.toList());
List<String> orderNoList = smallPltPosList.stream().map(p -> p.getOrderNo()).collect(Collectors.toList());
Map<String, PmProContFilterResposeDTO> filterOrderMap = pmProContRepository.orderFilterMap(orderNoList, organizationId, pmPdSlab.getMscLineNo());
List<ProContBoardEndDTO> boardEndEventList = new ArrayList<>();
PmProContFilterResposeDTO axisPmProCont = filterOrderMap.get(orderNoList.get(0));
// 虚拟板坯维度
boardEndEventList.add(new ProContBoardEndDTO(axisPmProCont.getOrderNo()).setMatNo(pmPdSlab.getVirtualSlabNo())
.setLen(pmPdSlab.getPreCleanSlabLen()).setMoMatNo(null)
.setMscLineNo(pmPdSlab.getMscLineNo())
.setPdMatStatus(Constants.PdStatusHp.PD_STATUS_HP_12).setPpFlag(PdProdFlag.VIRTUAL_SLAB.getCode())
.setThk(slabList.get(0).getMoldThick())
.setWid(slabList.get(0).getMoldWid())
.setWgt(pmPdSlab.getPreCleanSlabWt())
.setWholeBacklogCode(axisPmProCont.getWholeBacklogCode())
.setStNo(axisPmProCont.getStNo())
.setSgSign(axisPmProCont.getSgSign())
.setProcCd(Constants.ProdcCd.CD_13B));
BigDecimal weight = largePltList.get(0).getRollAimLen().multiply(largePltList.get(0).getRollAimThick()).multiply(largePltList.get(0).getRollAimWidth()).multiply(new BigDecimal(7.85)).divide(new BigDecimal(1000000000), PmPlateConstants.WT_SCALE, RoundingMode.HALF_UP);
// 大板维度
boardEndEventList.add(new ProContBoardEndDTO(axisPmProCont.getOrderNo()).setMatNo(pmPdSlab.getVirtualSlabNo())
.setLen(largePltList.get(0).getRollAimLen()).setMoMatNo(null)
.setMscLineNo(pmPdSlab.getMscLineNo())
.setPdMatStatus(Constants.PdStatusHp.PD_STATUS_HP_12).setPpFlag(PdProdFlag.VIRTUAL_COMPOSITE_SLAB.getCode())
.setThk(largePltList.get(0).getRollAimThick())
.setWid(largePltList.get(0).getRollAimWidth())
.setWgt(weight)
.setWholeBacklogCode(axisPmProCont.getWholeBacklogCode())
.setStNo(axisPmProCont.getStNo())
.setSgSign(axisPmProCont.getSgSign())
.setProcCd(Constants.ProdcCd.CD_13B));
for (PmSmallPltPos pmSmallPltPos : pmSmallPltPosDOList) {
PmProContFilterResposeDTO pmProContFilterResposeDTO = filterOrderMap.get(pmSmallPltPos.getOrderNo());
// 小板维度
boardEndEventList
.add(new ProContBoardEndDTO(pmSmallPltPos.getOrderNo()).setMatNo(pmPdSlab.getVirtualSlabNo() + pmSmallPltPos.getSmallPlateDivNo())
.setLen(pmSmallPltPos.getOrderLen()).setMoMatNo(pmSmallPltPos.getPdMatNo())
.setMscLineNo(pmPdSlab.getMscLineNo())
.setPdMatStatus(Constants.PdStatusHp.PD_STATUS_HP_12).setPpFlag(PdProdFlag.SMALL_POS_VIRTUAL_SLAB.getCode())
.setThk(pmSmallPltPos.getOrderThick()).setWid(pmSmallPltPos.getOrderWidth())
.setWgt(pmProContFilterResposeDTO.getOrderUnitAimWt())
.setWholeBacklogCode(axisPmProCont.getWholeBacklogCode())
.setStNo(pmProContFilterResposeDTO.getStNo())
.setSgSign(pmProContFilterResposeDTO.getSgSign())
.setProcCd(Constants.ProdcCd.CD_13B));
}
eventClient.addEvent(CtEventConstants.PM_CONTRACT_RESIDUE_BOARD_END, boardEndEventList);
eventClient.sendEvent(organizationId);
System.out.println("抛合同接口 执行成功");
}
} }
/** /**
* *
*
* @param pmPdSlabSplitDTO * @param pmPdSlabSplitDTO
* @return * @return
*/ */

Loading…
Cancel
Save