fix: 加急工单入窑、分拣批次关系对应
This commit is contained in:
@@ -12,7 +12,7 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 代码生成工具
|
||||
* @Description: 编码生成工具
|
||||
* @Date: 2023/8/14
|
||||
*/
|
||||
public class CodeUtil {
|
||||
|
||||
@@ -106,10 +106,10 @@ public class UserController {
|
||||
String oldPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, passVo.getString("oldPass"));
|
||||
String newPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, passVo.getString("newPass"));
|
||||
SysUser user = userService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, SecurityUtils.getCurrentUsername()));
|
||||
if (!SaSecureUtil.md5BySalt(user.getPassword(), GeneralDefinition.SALT).equals(SaSecureUtil.md5BySalt(oldPass, GeneralDefinition.SALT))) {
|
||||
if (!user.getPassword().equals(SaSecureUtil.md5BySalt(oldPass, GeneralDefinition.SALT))) {
|
||||
throw new BadRequestException("修改失败,旧密码错误");
|
||||
}
|
||||
if (!SaSecureUtil.md5BySalt(user.getPassword(), GeneralDefinition.SALT).equals(SaSecureUtil.md5BySalt(newPass, GeneralDefinition.SALT))) {
|
||||
if (user.getPassword().equals(SaSecureUtil.md5BySalt(newPass, GeneralDefinition.SALT))) {
|
||||
throw new BadRequestException("新密码不能与旧密码相同");
|
||||
}
|
||||
user.setPassword(SaSecureUtil.md5BySalt(newPass, GeneralDefinition.SALT));
|
||||
|
||||
@@ -425,6 +425,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
* 分拣 - 记录钢托与木托的绑定
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public BaseResponse applyGetPutStation(JSONObject param) {
|
||||
FeedBackSplitPalletStationRequest request = param.toJavaObject(FeedBackSplitPalletStationRequest.class);
|
||||
String getStation = request.getGet_station();
|
||||
@@ -457,7 +458,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (productionTask != null) {
|
||||
vehicleBinding.setOrder_code(productionTask.getWorkorder_code());
|
||||
}
|
||||
vehicleBindingService.create(vehicleBinding);
|
||||
// vehicleBindingService.create(vehicleBinding);
|
||||
return BaseResponse.responseOk(request.getRequestNo());
|
||||
|
||||
}
|
||||
@@ -623,12 +624,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode); // 获取点位实体
|
||||
// 获取点位实体
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
switch (basePoint.getRegion_code()) {
|
||||
case GeneralDefinition.LZKLX: // 如果是困料线位置就是判断是否静置完成
|
||||
return this.isStandingFinish(baseRequest); // 直接返回
|
||||
case GeneralDefinition.GZY: // 如果是入窑口就是记录数据
|
||||
return this.recordKilnTime(baseRequest); // 直接返回
|
||||
// 如果是困料线位置就是判断是否静置完成
|
||||
case GeneralDefinition.LZKLX:
|
||||
// 直接返回
|
||||
return this.isStandingFinish(baseRequest);
|
||||
// 如果是入窑口就是记录数据
|
||||
case GeneralDefinition.GZY:
|
||||
return this.recordKilnTime(baseRequest);
|
||||
default:
|
||||
taskResponse.setMessage("参数错误!");
|
||||
taskResponse.setCode(HttpStatus.HTTP_BAD_REQUEST);
|
||||
@@ -703,6 +708,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
mesMudConsumptionDto.setSENDTIM(DateUtil.now());
|
||||
mesMudConsumptionDto.setCREATE_TM(DateUtil.now());
|
||||
mesMudConsumptionDto.setOP_FLAG(GeneralDefinition.NO);
|
||||
mesMudConsumptionDto.setSLEEP_TIME(CommonUtils.dTOAMinutes(one.getInstorage_time(), DateUtil.now()));
|
||||
log.info("泥料消耗上报参数:{}", mesMudConsumptionDto);
|
||||
// 反馈数据给acs
|
||||
taskResponse.setMix_number(one.getMix_times());
|
||||
@@ -996,6 +1002,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
PointUtils.setUpdateByAcs(endPointObj);
|
||||
pointService.update(endPointObj, new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, "RYK01"));
|
||||
log.info("入窑口02引发入窑口01点位更新解锁!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,9 @@ public class AutoSaveGdyInfo {
|
||||
if (ObjectUtil.isEmpty(mesGdyInfoDto.getBATCHNO())) {
|
||||
mesGdyInfoDto.setBATCHNO("-");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(mesGdyInfoDto.getPRESSUNIT())) {
|
||||
mesGdyInfoDto.setPRESSUNIT("-");
|
||||
}
|
||||
try {
|
||||
mesRequestMapper.insertGdyMaterial(mesGdyInfoDto);
|
||||
successNum.incrementAndGet();
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -190,7 +191,27 @@ public interface WmsToMesService {
|
||||
/**
|
||||
* 新增工序报废
|
||||
*
|
||||
* @param entity
|
||||
* @param entity /
|
||||
*/
|
||||
void addScrap(ScrapDto entity);
|
||||
|
||||
/**
|
||||
* 上报分拣木托盘与钢托盘关系提供给MES
|
||||
* @param mesSemiProDto /
|
||||
*/
|
||||
void reportSemiProToMes(MesSemiProDto mesSemiProDto);
|
||||
|
||||
/**
|
||||
* 分页获取绑定数据
|
||||
* @param whereJson /
|
||||
* @param page /
|
||||
* @return /
|
||||
*/
|
||||
IPage<MesSemiProVo> queryAllVehicleBinding(Map whereJson, PageQuery page);
|
||||
|
||||
/**
|
||||
* 更新上报数据
|
||||
* @param entity /
|
||||
*/
|
||||
void updateByMesSemiProVo(MesSemiProVo entity);
|
||||
}
|
||||
|
||||
@@ -121,4 +121,16 @@ public interface MesRequestMapper {
|
||||
|
||||
@DS("oracle")
|
||||
void reportSemiProductGXPF(SemiProductGXPFDo semiProductGXPFDo);
|
||||
|
||||
@DS("oracle")
|
||||
void reportSemiProToMes(MesSemiProDto mesSemiProDto);
|
||||
|
||||
@DS("oracle")
|
||||
List<MesSemiProVo> selectMesSemiProInfo(int currentPage, int currentSize);
|
||||
|
||||
@DS("oracle")
|
||||
int getSemiProTotal();
|
||||
|
||||
@DS("oracle")
|
||||
void updateByMesSemiProVo(MesSemiProVo entity);
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<insert id="insertMudConsumptionInfo" parameterType="org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_MUDMATERIEL_OUT"( MSGID, PWORKSCHE_ID, OUT_FINNUM, PRESSUNIT, FBAGCODE, LOGT
|
||||
, SENDTIM
|
||||
, CREATE_TM, OP_FLAG)
|
||||
, CREATE_TM, OP_FLAG, SLEEP_TIME)
|
||||
VALUES ( #{MSGID}, #{PWORKSCHE_ID}, #{OUT_FINNUM}, #{PRESSUNIT}, #{FBAGCODE}, #{LOGT}
|
||||
, #{SENDTIM}, #{CREATE_TM}, #{OP_FLAG})
|
||||
, #{SENDTIM}, #{CREATE_TM}, #{OP_FLAG}, #{SLEEP_TIME})
|
||||
</insert>
|
||||
<insert id="insertProductData" parameterType="org.nl.wms.ext.mes.service.dto.MesProductDataDto">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_R_SEMIPRODUCT"( MSGID, FORDER_NO, PWORKSCHE_ID, FPRODUCT_MATERIAL_ID
|
||||
@@ -157,6 +157,16 @@
|
||||
, #{EDTPFJJ_PROMATNO}
|
||||
, #{CHECKERIN}, #{CHECKERIN_TIM}, #{CREATE_TM}, #{OP_FLAG})
|
||||
</insert>
|
||||
<insert id="reportSemiProToMes" parameterType="org.nl.wms.ext.mes.service.dto.MesSemiProDto">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_SEMIPRO_VS_PRO"( RECORD_ID, WOOD_VEHICLE_CODE, WOOD_QTY, WOOD_PCSN
|
||||
, STEEL_VEHICLE_CODE1, STEEL_QTY1 , STEEL_PCSN1
|
||||
, STEEL_VEHICLE_CODE2, STEEL_QTY2, STEEL_PCSN2
|
||||
, STEEL_VEHICLE_CODE3, STEEL_QTY3
|
||||
, STEEL_PCSN3, RECORD_TIME, CREATE_TM, OP_FLAG)
|
||||
VALUES ( #{RECORD_ID}, #{WOOD_VEHICLE_CODE}, #{WOOD_QTY}, #{WOOD_PCSN}, #{STEEL_VEHICLE_CODE1}, #{STEEL_QTY1}
|
||||
, #{STEEL_PCSN1} , #{STEEL_VEHICLE_CODE2}, #{STEEL_QTY2}, #{STEEL_PCSN2}, #{STEEL_VEHICLE_CODE3}
|
||||
, #{STEEL_QTY3}, #{STEEL_PCSN3}, #{RECORD_TIME}, #{CREATE_TM}, #{OP_FLAG})
|
||||
</insert>
|
||||
<update id="updateWorkOrderRead" parameterType="java.util.List">
|
||||
UPDATE "LMSTELCOM"."SEND_POP_SCHEDULE_PRESS"
|
||||
SET OP_FLAG = '1'
|
||||
@@ -165,6 +175,15 @@
|
||||
#{item}
|
||||
</foreach>
|
||||
</update>
|
||||
<update id="updateByMesSemiProVo" parameterType="org.nl.wms.ext.mes.service.dto.MesSemiProVo">
|
||||
UPDATE "LMSTELCOM"."RECEIVE_SEMIPRO_VS_PRO"
|
||||
SET WOOD_VEHICLE_CODE = #{wood_VEHICLE_CODE}, WOOD_QTY = #{wood_QTY}, WOOD_PCSN = #{wood_PCSN}
|
||||
, STEEL_VEHICLE_CODE1 = #{steel_VEHICLE_CODE1}, STEEL_QTY1 = #{steel_QTY1}, STEEL_PCSN1 = #{steel_PCSN1}
|
||||
, STEEL_VEHICLE_CODE2 = #{steel_VEHICLE_CODE2}, STEEL_QTY2 = #{steel_QTY2}, STEEL_PCSN2 = #{steel_PCSN2}
|
||||
, STEEL_VEHICLE_CODE3 = #{steel_VEHICLE_CODE3}, STEEL_QTY3 = #{steel_PCSN2}
|
||||
, STEEL_PCSN3 = #{steel_PCSN3}, RECORD_TIME = #{record_TIME}
|
||||
WHERE RECORD_ID = #{record_ID}
|
||||
</update>
|
||||
|
||||
<select id="getMudConsumption" resultType="org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto">
|
||||
SELECT `mud`.`record_id` AS `MSGID`,
|
||||
@@ -395,4 +414,14 @@
|
||||
SELECT COUNT(*) AS total_count
|
||||
FROM "LMSTELCOM"."RECEIVE_R_SEMIPRODUCT_GXPF"
|
||||
</select>
|
||||
<select id="selectMesSemiProInfo" resultType="org.nl.wms.ext.mes.service.dto.MesSemiProVo">
|
||||
SELECT *
|
||||
FROM "LMSTELCOM"."RECEIVE_SEMIPRO_VS_PRO"
|
||||
WHERE ROWNUM <![CDATA[ >= ]]> #{currentPage}
|
||||
AND ROWNUM <![CDATA[ <= ]]> #{currentSize}
|
||||
</select>
|
||||
<select id="getSemiProTotal" resultType="java.lang.Integer">
|
||||
SELECT COUNT(*) AS total_count
|
||||
FROM "LMSTELCOM"."RECEIVE_SEMIPRO_VS_PRO"
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -61,11 +61,33 @@ public class MesMudConsumptionDto implements Serializable {
|
||||
* 出库理论重量
|
||||
*/
|
||||
private BigDecimal OUT_THEONUM;
|
||||
/**
|
||||
* 压机
|
||||
*/
|
||||
private String PRESSUNIT;
|
||||
/**
|
||||
* 用料时间
|
||||
*/
|
||||
private String SENDTIM;
|
||||
/**
|
||||
* 用料人
|
||||
*/
|
||||
private String SENDER;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private String CREATE_TM;
|
||||
/**
|
||||
* 标记
|
||||
*/
|
||||
private String OP_FLAG;
|
||||
/**
|
||||
* 读取时间
|
||||
*/
|
||||
private String OP_TM;
|
||||
/**
|
||||
* 实际困料时间
|
||||
*/
|
||||
private BigDecimal SLEEP_TIME;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package org.nl.wms.ext.mes.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 提供MES的人工码垛的对应关系和自动码垛的对应关系表
|
||||
* @Date: 2024/1/24
|
||||
* 标识
|
||||
* 木托盘编码
|
||||
* 木托盘对应的数量
|
||||
* 木托盘对应的批次
|
||||
* 钢托盘1编码
|
||||
* 钢托盘1数量
|
||||
* 钢托盘1批次
|
||||
* 钢托盘2编码
|
||||
* 钢托盘2数量
|
||||
* 钢托盘2批次
|
||||
* 钢托盘3编码
|
||||
* 钢托盘3数量
|
||||
* 钢托盘3批次
|
||||
* 保存时间
|
||||
*/
|
||||
@Data
|
||||
public class MesSemiProDto {
|
||||
private String RECORD_ID;
|
||||
private String WOOD_VEHICLE_CODE;
|
||||
private String WOOD_QTY;
|
||||
private String WOOD_PCSN;
|
||||
private String STEEL_VEHICLE_CODE1;
|
||||
private String STEEL_QTY1;
|
||||
private String STEEL_PCSN1;
|
||||
private String STEEL_VEHICLE_CODE2;
|
||||
private String STEEL_QTY2;
|
||||
private String STEEL_PCSN2;
|
||||
private String STEEL_VEHICLE_CODE3;
|
||||
private String STEEL_QTY3;
|
||||
private String STEEL_PCSN3;
|
||||
private String RECORD_TIME;
|
||||
private String CREATE_TM;
|
||||
private String OP_FLAG;
|
||||
private String OP_TM;
|
||||
private String OP_REPLAY;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.nl.wms.ext.mes.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2024/1/24
|
||||
*/
|
||||
@Data
|
||||
public class MesSemiProVo {
|
||||
private String record_ID;
|
||||
private String wood_VEHICLE_CODE;
|
||||
private String wood_QTY;
|
||||
private String wood_PCSN;
|
||||
private String steel_VEHICLE_CODE1;
|
||||
private String steel_QTY1;
|
||||
private String steel_PCSN1;
|
||||
private String steel_VEHICLE_CODE2;
|
||||
private String steel_QTY2;
|
||||
private String steel_PCSN2;
|
||||
private String steel_VEHICLE_CODE3;
|
||||
private String steel_QTY3;
|
||||
private String steel_PCSN3;
|
||||
private String record_TIME;
|
||||
private String create_TM;
|
||||
private String op_FLAG;
|
||||
private String op_TM;
|
||||
private String op_REPLAY;
|
||||
}
|
||||
@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -512,6 +513,41 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
mesRequestMapper.reportSemiProductGXPF(semiProductGXPFDo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportSemiProToMes(MesSemiProDto mesSemiProDto) {
|
||||
log.info("分拣上报信息:{}", mesSemiProDto);
|
||||
try {
|
||||
mesRequestMapper.reportSemiProToMes(mesSemiProDto);
|
||||
} catch (Exception e) {
|
||||
log.error("分拣-上报MES分拣对应关系数据:{}", mesSemiProDto);
|
||||
log.error("分拣插入MES分拣对应关系失败:{}", e.getMessage());
|
||||
noticeService.createNotice("分拣插入MES分拣对应关系失败", "分拣" + mesSemiProDto.getRECORD_ID(),
|
||||
NoticeTypeEnum.EXCEPTION.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<MesSemiProVo> queryAllVehicleBinding(Map whereJson, PageQuery pageQuery) {
|
||||
Integer page = pageQuery.getPage();
|
||||
Integer size = pageQuery.getSize();
|
||||
IPage<MesSemiProVo> pages = new Page<>(page, size);
|
||||
// start
|
||||
int currentPage = page * size + 1;
|
||||
// end
|
||||
int currentSize = (pageQuery.getPage() + 1) * size;
|
||||
List<MesSemiProVo> mesSemiProDtos = mesRequestMapper.selectMesSemiProInfo(currentPage, currentSize);
|
||||
pages.setRecords(mesSemiProDtos);
|
||||
int total = mesRequestMapper.getSemiProTotal();
|
||||
pages.setTotal(total);
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateByMesSemiProVo(MesSemiProVo entity) {
|
||||
entity.setRecord_TIME(DateUtil.now());
|
||||
mesRequestMapper.updateByMesSemiProVo(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换
|
||||
*
|
||||
|
||||
@@ -325,6 +325,9 @@ public class PdaServiceImpl implements PdaService {
|
||||
|
||||
@Override
|
||||
public PdaResponseVo bindingVehicle(VehicleBindingDto vehicleBindingDto) {
|
||||
if (true) {
|
||||
throw new BadRequestException("该功能未开放,请到PC端操作。");
|
||||
}
|
||||
PdmBdWorkorder workOrder = workorderService.getDeviceProductionTask("RGFJ01");
|
||||
if (ObjectUtil.isEmpty(workOrder)) {
|
||||
throw new BadRequestException("人工分拣未开工");
|
||||
@@ -368,6 +371,9 @@ public class PdaServiceImpl implements PdaService {
|
||||
// 获取点位
|
||||
shelfSaveDto.setPoint_code(pointCode);
|
||||
SchBasePoint basePoint = pointService.getById(shelfSaveDto.getPoint_code());
|
||||
if (ObjectUtil.isEmpty(basePoint)) {
|
||||
throw new BadRequestException("库位【" + pointCode + "】不存在");
|
||||
}
|
||||
basePoint.setPoint_status(shelfSaveDto.getPoint_status());
|
||||
PointUtils.setUpdateByPC(basePoint);
|
||||
if (shelfSaveDto.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
|
||||
@@ -5,6 +5,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.ext.mes.service.dto.MesSemiProDto;
|
||||
import org.nl.wms.ext.mes.service.dto.MesSemiProVo;
|
||||
import org.nl.wms.pdm.vehiclebiding.service.IPdmBdVehicleBindingService;
|
||||
import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -28,20 +31,20 @@ public class PdmBdVehicleBindingController {
|
||||
|
||||
@Autowired
|
||||
private IPdmBdVehicleBindingService pdmBdVehicleBindingService;
|
||||
@Autowired
|
||||
private WmsToMesService wmsToMesService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询分拣载具关联记录")
|
||||
|
||||
//@SaCheckPermission("@el.check('pdmBdVehicleBinding:list')")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(pdmBdVehicleBindingService.queryAll(whereJson, page)), HttpStatus.OK);
|
||||
return new ResponseEntity<>(TableDataInfo.build(wmsToMesService.queryAllVehicleBinding(whereJson, page)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增分拣载具关联记录")
|
||||
|
||||
//@SaCheckPermission("@el.check('pdmBdVehicleBinding:add')")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody PdmBdVehicleBinding entity) {
|
||||
public ResponseEntity<Object> create(@RequestBody MesSemiProVo entity) {
|
||||
pdmBdVehicleBindingService.create(entity);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
@@ -50,7 +53,7 @@ public class PdmBdVehicleBindingController {
|
||||
@Log("修改分拣载具关联记录")
|
||||
|
||||
//@SaCheckPermission("@el.check('pdmBdVehicleBinding:edit')")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody PdmBdVehicleBinding entity) {
|
||||
public ResponseEntity<Object> update( @RequestBody MesSemiProVo entity) {
|
||||
pdmBdVehicleBindingService.update(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.pdm.vehiclebiding.service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.ext.mes.service.dto.MesSemiProVo;
|
||||
import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -29,14 +30,14 @@ public interface IPdmBdVehicleBindingService extends IService<PdmBdVehicleBindin
|
||||
*
|
||||
* @param entity /
|
||||
*/
|
||||
void create(PdmBdVehicleBinding entity);
|
||||
void create(MesSemiProVo entity);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param entity /
|
||||
*/
|
||||
void update(PdmBdVehicleBinding entity);
|
||||
void update(MesSemiProVo entity);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.pdm.vehiclebiding.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -9,9 +10,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.ext.mes.service.dto.MesSemiProDto;
|
||||
import org.nl.wms.ext.mes.service.dto.MesSemiProVo;
|
||||
import org.nl.wms.pdm.vehiclebiding.service.IPdmBdVehicleBindingService;
|
||||
import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding;
|
||||
import org.nl.wms.pdm.vehiclebiding.service.dao.mapper.PdmBdVehicleBindingMapper;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -29,9 +37,14 @@ public class PdmBdVehicleBindingServiceImpl extends ServiceImpl<PdmBdVehicleBind
|
||||
|
||||
@Autowired
|
||||
private PdmBdVehicleBindingMapper pdmBdVehicleBindingMapper;
|
||||
@Autowired
|
||||
private WmsToMesService wmsToMesService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Override
|
||||
public IPage<PdmBdVehicleBinding> queryAll(Map whereJson, PageQuery page) {
|
||||
// update: 换成从MES获取
|
||||
LambdaQueryWrapper<PdmBdVehicleBinding> lam = new LambdaQueryWrapper<>();
|
||||
IPage<PdmBdVehicleBinding> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
pdmBdVehicleBindingMapper.selectPage(pages, lam);
|
||||
@@ -39,23 +52,70 @@ public class PdmBdVehicleBindingServiceImpl extends ServiceImpl<PdmBdVehicleBind
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(PdmBdVehicleBinding entity) {
|
||||
String now = DateUtil.now();
|
||||
entity.setAssociate_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setRecord_time(now);
|
||||
pdmBdVehicleBindingMapper.insert(entity);
|
||||
public void create(MesSemiProVo entity) {
|
||||
String vehicleCode = entity.getWood_VEHICLE_CODE();
|
||||
String qty = entity.getWood_QTY();
|
||||
String qty1 = entity.getSteel_QTY1();
|
||||
String vehicleCode1 = entity.getSteel_VEHICLE_CODE1();
|
||||
if (ObjectUtil.isEmpty(vehicleCode)) {
|
||||
throw new BadRequestException("木托盘的载具号不能为空!");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(qty)) {
|
||||
throw new BadRequestException("木托盘的物料数量不能为空!");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(vehicleCode1) || ObjectUtil.isEmpty(qty1)) {
|
||||
throw new BadRequestException("钢托盘至少需要一个");
|
||||
}
|
||||
SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getGroupInfoNoTypeAndWood(vehicleCode,
|
||||
GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||
if (ObjectUtil.isEmpty(groupEntity)) {
|
||||
// 没有组盘信息就找解绑的盘
|
||||
groupEntity = vehiclematerialgroupService.getGroupInfoNoTypeAndWood(vehicleCode,
|
||||
GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
||||
}
|
||||
if (ObjectUtil.isEmpty(groupEntity)) {
|
||||
// 还找不到
|
||||
throw new BadRequestException("找不到木托盘-载具号:" + vehicleCode + "的组盘信息");
|
||||
}
|
||||
String pcsn1 = vehiclematerialgroupService.getNowOrOldPcsnByVehicleCode(vehicleCode1, GeneralDefinition.STEEL_TRAY);
|
||||
if (ObjectUtil.isEmpty(pcsn1)) {
|
||||
// 还找不到
|
||||
throw new BadRequestException("找不到木托盘-载具号:" + vehicleCode1 + "的组盘信息");
|
||||
}
|
||||
String qty2 = ObjectUtil.isNotEmpty(entity.getSteel_QTY2()) ? entity.getSteel_QTY2() : "-";
|
||||
String vehicleCode2 = ObjectUtil.isNotEmpty(entity.getSteel_VEHICLE_CODE2())
|
||||
? entity.getSteel_VEHICLE_CODE2() : "-";
|
||||
String pcsn2 = vehiclematerialgroupService.getNowOrOldPcsnByVehicleCode(vehicleCode2, GeneralDefinition.STEEL_TRAY);
|
||||
String qty3 = ObjectUtil.isNotEmpty(entity.getSteel_QTY3()) ? entity.getSteel_QTY3() : "-";
|
||||
String vehicleCode3 = ObjectUtil.isNotEmpty(entity.getSteel_VEHICLE_CODE3())
|
||||
? entity.getSteel_VEHICLE_CODE3() : "-";
|
||||
String pcsn3 = vehiclematerialgroupService.getNowOrOldPcsnByVehicleCode(vehicleCode3, GeneralDefinition.STEEL_TRAY);
|
||||
|
||||
// 调用mes
|
||||
// 初始化数据
|
||||
MesSemiProDto mesSemiProDto = new MesSemiProDto();
|
||||
mesSemiProDto.setRECORD_ID(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
mesSemiProDto.setWOOD_VEHICLE_CODE(vehicleCode);
|
||||
mesSemiProDto.setWOOD_QTY(String.valueOf(qty));
|
||||
mesSemiProDto.setWOOD_PCSN(groupEntity.getPcsn());
|
||||
mesSemiProDto.setSTEEL_VEHICLE_CODE1(vehicleCode1);
|
||||
mesSemiProDto.setSTEEL_VEHICLE_CODE2(vehicleCode2);
|
||||
mesSemiProDto.setSTEEL_VEHICLE_CODE3(vehicleCode3);
|
||||
mesSemiProDto.setSTEEL_PCSN1(pcsn1);
|
||||
mesSemiProDto.setSTEEL_PCSN2(pcsn2);
|
||||
mesSemiProDto.setSTEEL_PCSN3(pcsn3);
|
||||
mesSemiProDto.setSTEEL_QTY1(qty1);
|
||||
mesSemiProDto.setSTEEL_QTY2(qty2);
|
||||
mesSemiProDto.setSTEEL_QTY3(qty3);
|
||||
mesSemiProDto.setRECORD_TIME(DateUtil.now());
|
||||
mesSemiProDto.setCREATE_TM(DateUtil.now());
|
||||
mesSemiProDto.setOP_FLAG(GeneralDefinition.NO);
|
||||
wmsToMesService.reportSemiProToMes(mesSemiProDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(PdmBdVehicleBinding entity) {
|
||||
PdmBdVehicleBinding dto = pdmBdVehicleBindingMapper.selectById(entity.getAssociate_id());
|
||||
if (dto == null) {
|
||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
}
|
||||
String now = DateUtil.now();
|
||||
entity.setRecord_time(now);
|
||||
|
||||
pdmBdVehicleBindingMapper.updateById(entity);
|
||||
public void update(MesSemiProVo entity) {
|
||||
wmsToMesService.updateByMesSemiProVo(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -108,4 +108,20 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
|
||||
* @return
|
||||
*/
|
||||
SchBaseVehiclematerialgroup getOneByVehicleCode(String vehicleCode, String value);
|
||||
|
||||
/**
|
||||
* 获取新旧组盘信息的批次
|
||||
* @param vehicleCode 条码
|
||||
* @param vehicleType 类型
|
||||
* @return 批次
|
||||
*/
|
||||
String getNowOrOldPcsnByVehicleCode(String vehicleCode, String vehicleType);
|
||||
|
||||
/**
|
||||
* 查找非钢托盘的数据
|
||||
* @param vehicleCode
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
SchBaseVehiclematerialgroup getGroupInfoNoTypeAndWood(String vehicleCode, String value);
|
||||
}
|
||||
|
||||
@@ -17,4 +17,12 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper<SchBaseVeh
|
||||
SchBaseVehiclematerialgroup getGroup(JSONObject entity);
|
||||
|
||||
int getInventoryQtyByMaterialId(String materialId);
|
||||
|
||||
/**
|
||||
* 获取新/旧的组盘批次
|
||||
* @param vehicleCode 条码
|
||||
* @param vehicleType 类型
|
||||
* @return 批次
|
||||
*/
|
||||
String getNowOrOldPcsnByVehicleCode(String vehicleCode, String vehicleType);
|
||||
}
|
||||
|
||||
@@ -71,4 +71,14 @@
|
||||
AND vg.group_id IS NOT NULL
|
||||
AND vg.material_id = #{materialId}
|
||||
</select>
|
||||
<select id="getNowOrOldPcsnByVehicleCode" resultType="java.lang.String">
|
||||
SELECT
|
||||
vg.pcsn
|
||||
FROM
|
||||
`sch_base_vehiclematerialgroup` vg
|
||||
WHERE vg.vehicle_code = #{vehicleCode} AND vg.vehicle_type = #{vehicleType}
|
||||
AND vg.group_bind_material_status IN ('2', '3')
|
||||
ORDER BY vg.group_bind_material_status, vg.update_time DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -12,13 +12,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dao.mapper.SchBaseVehiclematerialgroupMapper;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
@@ -40,12 +37,6 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
|
||||
@Autowired
|
||||
private SchBaseVehiclematerialgroupMapper vehiclematerialgroupMapper;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IMdBaseMaterialService materialService;
|
||||
|
||||
@Override
|
||||
public IPage<SchBaseVehiclematerialgroup> queryAll(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page) {
|
||||
@@ -123,7 +114,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
LambdaQueryWrapper<SchBaseVehiclematerialgroup> lambda = new QueryWrapper<SchBaseVehiclematerialgroup>().lambda();
|
||||
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value)
|
||||
.eq(SchBaseVehiclematerialgroup::getIs_delete, false);
|
||||
.eq(SchBaseVehiclematerialgroup::getIs_delete, false)
|
||||
.orderByDesc(SchBaseVehiclematerialgroup::getUpdate_time);
|
||||
List<SchBaseVehiclematerialgroup> selectOne = vehiclematerialgroupMapper.selectList(lambda);
|
||||
return selectOne.size() > 0 ? selectOne.get(0) : null;
|
||||
}
|
||||
@@ -138,7 +130,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
LambdaQueryWrapper<SchBaseVehiclematerialgroup> lambda = new QueryWrapper<SchBaseVehiclematerialgroup>().lambda();
|
||||
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
|
||||
.ne(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue())
|
||||
// 不是解绑的
|
||||
.ne(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.UNBOUND.getValue())
|
||||
.eq(SchBaseVehiclematerialgroup::getIs_delete, false);
|
||||
List<SchBaseVehiclematerialgroup> list = vehiclematerialgroupMapper.selectList(lambda);
|
||||
list.forEach(schBaseVehiclematerialgroup -> {
|
||||
@@ -163,4 +156,26 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
return selectOne.size() > 0 ? selectOne.get(0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNowOrOldPcsnByVehicleCode(String vehicleCode, String vehicleType) {
|
||||
if ("-".equals(vehicleCode)) {
|
||||
return "-";
|
||||
}
|
||||
String pcsn = vehiclematerialgroupMapper.getNowOrOldPcsnByVehicleCode(vehicleCode, vehicleType);
|
||||
return ObjectUtil.isNotEmpty(pcsn) ? pcsn : "-";
|
||||
}
|
||||
|
||||
@Override
|
||||
public SchBaseVehiclematerialgroup getGroupInfoNoTypeAndWood(String vehicleCode, String value) {
|
||||
LambdaQueryWrapper<SchBaseVehiclematerialgroup> lambda = new QueryWrapper<SchBaseVehiclematerialgroup>().lambda();
|
||||
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value)
|
||||
.eq(SchBaseVehiclematerialgroup::getIs_delete, false)
|
||||
.ne(SchBaseVehiclematerialgroup::getVehicle_type, GeneralDefinition.STEEL_TRAY)
|
||||
.ne(SchBaseVehiclematerialgroup::getVehicle_type, GeneralDefinition.MATERIAL_CUP)
|
||||
.orderByDesc(SchBaseVehiclematerialgroup::getUpdate_time);
|
||||
List<SchBaseVehiclematerialgroup> selectOne = vehiclematerialgroupMapper.selectList(lambda);
|
||||
return selectOne.size() > 0 ? selectOne.get(0) : null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -142,8 +142,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> findApplyTasksByTaskStatus(String... config_code) {
|
||||
List<String> configList = Arrays.stream(config_code).collect(Collectors.toList());
|
||||
public List<SchBaseTask> findApplyTasksByTaskStatus(String... configCode) {
|
||||
List<String> configList = Arrays.stream(configCode).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<SchBaseTask> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBaseTask::getConfig_code, configList)
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.APPLY.getCode())
|
||||
|
||||
@@ -5,10 +5,12 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.ext.mes.service.dto.MesSemiProDto;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -60,7 +62,7 @@ public class FJMKTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
private WmsToMesService wmsToMesService;
|
||||
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
@@ -135,7 +137,7 @@ public class FJMKTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@DSTransactional(rollbackFor = Exception.class)
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
@@ -206,6 +208,20 @@ public class FJMKTask extends AbstractTask {
|
||||
if (isFull == null) {
|
||||
isFull = GeneralDefinition.YES;
|
||||
}
|
||||
// update: 新增钢托盘对应的数量和批次和钢托盘号
|
||||
// hint: 获取各自组盘信息。这里可能被解绑了,所以,未解绑的数据没拿到,就拿解绑的数据
|
||||
String qty1 = ObjectUtil.isNotEmpty(param.getString("qty1")) ? param.getString("qty1") : "-";
|
||||
String vehicleCode1 = ObjectUtil.isNotEmpty(param.getString("vehicle_code1"))
|
||||
? param.getString("vehicle_code1") : "-";
|
||||
String pcsn1 = vehiclematerialgroupService.getNowOrOldPcsnByVehicleCode(vehicleCode1, GeneralDefinition.STEEL_TRAY);
|
||||
String qty2 = ObjectUtil.isNotEmpty(param.getString("qty2")) ? param.getString("qty2") : "-";
|
||||
String vehicleCode2 = ObjectUtil.isNotEmpty(param.getString("vehicle_code2"))
|
||||
? param.getString("vehicle_code2") : "-";
|
||||
String pcsn2 = vehiclematerialgroupService.getNowOrOldPcsnByVehicleCode(vehicleCode2, GeneralDefinition.STEEL_TRAY);
|
||||
String qty3 = ObjectUtil.isNotEmpty(param.getString("qty3")) ? param.getString("qty3") : "-";
|
||||
String vehicleCode3 = ObjectUtil.isNotEmpty(param.getString("vehicle_code3"))
|
||||
? param.getString("vehicle_code3") : "-";
|
||||
String pcsn3 = vehiclematerialgroupService.getNowOrOldPcsnByVehicleCode(vehicleCode3, GeneralDefinition.STEEL_TRAY);
|
||||
// 砖块数量
|
||||
Integer qty = param.getInteger("qty");
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
@@ -246,6 +262,25 @@ public class FJMKTask extends AbstractTask {
|
||||
groupEntity.setIs_delete(false);
|
||||
groupEntity.setIs_full(isFull.equals(GeneralDefinition.YES));
|
||||
vehiclematerialgroupService.saveOrUpdate(groupEntity);
|
||||
// hint: 记录数据上报MES
|
||||
MesSemiProDto mesSemiProDto = new MesSemiProDto();
|
||||
mesSemiProDto.setRECORD_ID(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
mesSemiProDto.setWOOD_VEHICLE_CODE(vehicleCode);
|
||||
mesSemiProDto.setWOOD_QTY(String.valueOf(qty));
|
||||
mesSemiProDto.setWOOD_PCSN(groupEntity.getPcsn());
|
||||
mesSemiProDto.setSTEEL_VEHICLE_CODE1(vehicleCode1);
|
||||
mesSemiProDto.setSTEEL_VEHICLE_CODE2(vehicleCode2);
|
||||
mesSemiProDto.setSTEEL_VEHICLE_CODE3(vehicleCode3);
|
||||
mesSemiProDto.setSTEEL_PCSN1(pcsn1);
|
||||
mesSemiProDto.setSTEEL_PCSN2(pcsn2);
|
||||
mesSemiProDto.setSTEEL_PCSN3(pcsn3);
|
||||
mesSemiProDto.setSTEEL_QTY1(qty1);
|
||||
mesSemiProDto.setSTEEL_QTY2(qty2);
|
||||
mesSemiProDto.setSTEEL_QTY3(qty3);
|
||||
mesSemiProDto.setRECORD_TIME(DateUtil.now());
|
||||
mesSemiProDto.setCREATE_TM(DateUtil.now());
|
||||
mesSemiProDto.setOP_FLAG(GeneralDefinition.NO);
|
||||
wmsToMesService.reportSemiProToMes(mesSemiProDto);
|
||||
// 返回组盘id记录任务中
|
||||
return groupEntity.getGroup_id();
|
||||
}
|
||||
|
||||
@@ -136,11 +136,7 @@ public class HCSSXMLTask extends AbstractTask {
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
String endPoint = taskObj.getPoint_code2();
|
||||
SchBasePoint endPointObj = pointService.selectByIdLock(endPoint);
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
// update: 终点解锁 - 解锁由入窑口02上报有货修改
|
||||
}
|
||||
// update: 终点解锁 - 解锁由入窑口02上报有货修改
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||
|
||||
@@ -222,7 +222,6 @@ public class HNMLTask extends AbstractTask {
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
JSONObject responseObj = JSONObject.parseObject(responseParam);
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String recordId = requestObj.getString("record_id");
|
||||
// 要把数据存到组盘表。压制工单放进去,
|
||||
SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getOne(
|
||||
new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
@@ -251,7 +250,8 @@ public class HNMLTask extends AbstractTask {
|
||||
PointUtils.setUpdateByType(yjDevice, taskFinishedType);
|
||||
yjDevice.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
|
||||
pointService.updateById(yjDevice);
|
||||
PdmBdRequestMaterialRecord materialRecord = requestMaterialRecordService.getById(recordId);
|
||||
PdmBdRequestMaterialRecord materialRecord = requestMaterialRecordService
|
||||
.getById(requestObj.getString("record_id"));
|
||||
// 找压机工单 -> 根据压机要料表对应的工单
|
||||
PdmBdWorkorder one = workorderService.getByCode(materialRecord.getWorkorder_id());
|
||||
if (ObjectUtil.isNotEmpty(one)) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.nl.wms.ext.acs.service.dto.to.acs.PutActionRequest;
|
||||
import org.nl.wms.sch.task_manage.enums.TagNameEnum;
|
||||
import org.slf4j.MDC;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Duration;
|
||||
@@ -123,4 +124,23 @@ public class CommonUtils {
|
||||
return list;
|
||||
}
|
||||
|
||||
public static BigDecimal dTOAMinutes(String data1, String data2) {
|
||||
String dateFormat = "yyyy-MM-dd HH:mm:ss";
|
||||
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
|
||||
try {
|
||||
// 解析第一个时间字符串
|
||||
Date date1 = sdf.parse(data1);
|
||||
// 解析第二个时间字符串
|
||||
Date date2 = sdf.parse(data2);
|
||||
// 计算分钟差
|
||||
long differenceInMilliseconds = date2.getTime() - date1.getTime();
|
||||
long differenceInMinutes = differenceInMilliseconds / (60 * 1000);
|
||||
return BigDecimal.valueOf(differenceInMinutes);
|
||||
} catch (ParseException e) {
|
||||
log.error("计算时间差出错-参数:{} - 异常信息:{}", data1+"-"+data2, e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return BigDecimal.valueOf(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,3 +29,5 @@
|
||||
自动下发混碾
|
||||
下发混碾失败
|
||||
看板【当月工单】日志
|
||||
分拣-上报MES分拣对应关系数据
|
||||
分拣插入MES分拣对应关系失败
|
||||
|
||||
@@ -51,7 +51,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
</appender>
|
||||
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" >
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>DEBUG</level>
|
||||
<level>INFO</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.ApplyDeviceDto;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@@ -36,6 +37,8 @@ public class TestDemo {
|
||||
private MesRequestMapper mesRequestMapper;
|
||||
@Autowired
|
||||
private WmsToMesService wmsToMesService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
private static AtomicInteger countUp = new AtomicInteger(0); // 上层数量
|
||||
private static AtomicInteger countLower = new AtomicInteger(0); // 下层数量
|
||||
@Test
|
||||
@@ -184,4 +187,10 @@ public class TestDemo {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void getVG() {
|
||||
String pcsn = vehiclematerialgroupService.getNowOrOldPcsnByVehicleCode("1031", "GTP");
|
||||
System.out.println(pcsn);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ export default {
|
||||
},
|
||||
initWebSocket() {
|
||||
// const wsUri = (process.env.VUE_APP_WS_API === '/' ? '/' : (process.env.VUE_APP_WS_API + '/')) + 'messageInfo'
|
||||
const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + 'messageInfo'
|
||||
const wsUri = process.env.VUE_APP_WS_API + '/webSocket/' + 'messageInfo'
|
||||
this.websock = new WebSocket(wsUri)
|
||||
this.websock.onerror = this.webSocketOnError
|
||||
this.websock.onmessage = this.webSocketOnMessage
|
||||
|
||||
@@ -241,7 +241,7 @@ export default {
|
||||
name: 'Menu',
|
||||
components: { Treeselect, IconSelect, crudOperation, rrOperation, udOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '菜单', idField: 'menu_id', url: 'api/sysMenu', crudMethod: { ...crudMenu }})
|
||||
return CRUD({ title: '菜单', idField: 'menu_id', crudMethod: { ...crudMenu }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
dicts: ['system_type'],
|
||||
|
||||
@@ -5,37 +5,31 @@
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission" />
|
||||
<!--表单组件-->
|
||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="源载具编码">
|
||||
<el-input v-model="form.origin_vehicle_code" style="width: 370px;" />
|
||||
<el-dialog class="demo-form-inline" :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="820px">
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="135px">
|
||||
<el-form-item label="木托盘编码">
|
||||
<el-input v-model="form.wood_VEHICLE_CODE" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="源载具类型">
|
||||
<el-input v-model="form.origin_vehicle_type" style="width: 370px;" />
|
||||
<el-form-item label="木托盘数量">
|
||||
<el-input v-model="form.wood_QTY" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="目标载具编码">
|
||||
<el-input v-model="form.target_vehicle_code" style="width: 370px;" />
|
||||
<el-form-item label="钢托盘编码1">
|
||||
<el-input v-model="form.steel_VEHICLE_CODE1" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="目标载具类型">
|
||||
<el-input v-model="form.target_vehicle_type" style="width: 370px;" />
|
||||
<el-form-item label="钢托盘数量1">
|
||||
<el-input v-model="form.steel_QTY1" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="源当前物料数量">
|
||||
<el-input v-model="form.origin_qty" style="width: 370px;" />
|
||||
<el-form-item label="钢托盘编码2">
|
||||
<el-input v-model="form.steel_VEHICLE_CODE2" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="目标当前物料数量">
|
||||
<el-input v-model="form.target_qty" style="width: 370px;" />
|
||||
<el-form-item label="钢托盘数量2">
|
||||
<el-input v-model="form.steel_QTY2" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="取货点">
|
||||
<el-input v-model="form.get_station" style="width: 370px;" />
|
||||
<el-form-item label="钢托盘编码3">
|
||||
<el-input v-model="form.steel_VEHICLE_CODE3" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="放货点">
|
||||
<el-input v-model="form.put_station" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工单号">
|
||||
<el-input v-model="form.order_code" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="记录时间">
|
||||
<el-input v-model="form.record_time" style="width: 370px;" />
|
||||
<el-form-item label="钢托盘数量3">
|
||||
<el-input v-model="form.steel_QTY3" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@@ -46,20 +40,24 @@
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="origin_vehicle_code" label="源载具编码" :min-width="flexWidth('origin_vehicle_code',crud.data,'源载具编码')"/>
|
||||
<el-table-column prop="origin_vehicle_type" label="源载具类型" :min-width="flexWidth('origin_vehicle_type',crud.data,'源载具类型')"/>
|
||||
<el-table-column prop="target_vehicle_code" label="目标载具编码" :min-width="flexWidth('target_vehicle_code',crud.data,'目标载具编码')"/>
|
||||
<el-table-column prop="target_vehicle_type" label="目标载具类型" :min-width="flexWidth('target_vehicle_type',crud.data,'目标载具类型')"/>
|
||||
<el-table-column prop="origin_qty" label="源当前物料数量" :min-width="flexWidth('origin_qty',crud.data,'源当前物料数量')"/>
|
||||
<el-table-column prop="target_qty" label="目标当前物料数量" :min-width="flexWidth('target_qty',crud.data,'目标当前物料数量')"/>
|
||||
<el-table-column prop="get_station" label="取货点" :min-width="flexWidth('get_station',crud.data,'取货点')"/>
|
||||
<el-table-column prop="put_station" label="放货点" :min-width="flexWidth('put_station',crud.data,'放货点')"/>
|
||||
<el-table-column prop="order_code" label="工单号" :min-width="flexWidth('order_code',crud.data,'工单号')"/>
|
||||
<el-table-column prop="record_time" label="记录时间" :min-width="flexWidth('record_time',crud.data,'记录时间')"/>
|
||||
<el-table-column prop="wood_VEHICLE_CODE" label="木托盘编码" :min-width="flexWidth('wood_VEHICLE_CODE',crud.data,'木托盘编码')" />
|
||||
<el-table-column prop="wood_QTY" label="木托盘数量" :min-width="flexWidth('wood_QTY',crud.data,'木托盘数量')" />
|
||||
<el-table-column prop="wood_PCSN" label="木托盘批次" :min-width="flexWidth('wood_PCSN',crud.data,'木托盘批次')" />
|
||||
<el-table-column prop="steel_VEHICLE_CODE1" label="钢托盘编码1" :min-width="flexWidth('steel_VEHICLE_CODE1',crud.data,'钢托盘编码1')" />
|
||||
<el-table-column prop="steel_QTY1" label="钢托盘数量1" :min-width="flexWidth('steel_QTY1',crud.data,'钢托盘数量1')" />
|
||||
<el-table-column prop="steel_PCSN1" label="钢托盘批次1" :min-width="flexWidth('steel_PCSN1',crud.data,'钢托盘批次1')" />
|
||||
<el-table-column prop="steel_VEHICLE_CODE2" label="钢托盘编码2" :min-width="flexWidth('steel_VEHICLE_CODE2',crud.data,'钢托盘编码1')" />
|
||||
<el-table-column prop="steel_QTY2" label="钢托盘数量2" :min-width="flexWidth('steel_QTY2',crud.data,'钢托盘数量1')" />
|
||||
<el-table-column prop="steel_PCSN2" label="钢托盘批次2" :min-width="flexWidth('steel_PCSN2',crud.data,'钢托盘批次1')" />
|
||||
<el-table-column prop="steel_VEHICLE_CODE3" label="钢托盘编码3" :min-width="flexWidth('steel_VEHICLE_CODE3',crud.data,'钢托盘编码1')" />
|
||||
<el-table-column prop="steel_QTY3" label="钢托盘数量3" :min-width="flexWidth('steel_QTY3',crud.data,'钢托盘数量1')" />
|
||||
<el-table-column prop="steel_PCSN3" label="钢托盘批次3" :min-width="flexWidth('steel_PCSN3',crud.data,'钢托盘批次1')" />
|
||||
<el-table-column prop="record_TIME" label="记录时间" :min-width="flexWidth('record_TIME',crud.data,'记录时间')" />
|
||||
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
:data="scope.row"
|
||||
:is-visiable-del="false"
|
||||
:permission="permission"
|
||||
/>
|
||||
</template>
|
||||
@@ -80,17 +78,24 @@ import udOperation from '@crud/UD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
|
||||
const defaultForm = {
|
||||
associate_id: null,
|
||||
origin_vehicle_code: null,
|
||||
origin_vehicle_type: null,
|
||||
target_vehicle_code: null,
|
||||
target_vehicle_type: null,
|
||||
origin_qty: null,
|
||||
target_qty: null,
|
||||
get_station: null,
|
||||
put_station: null,
|
||||
order_code: null,
|
||||
record_time: null
|
||||
record_ID: null,
|
||||
wood_VEHICLE_CODE: null,
|
||||
wood_QTY: null,
|
||||
wood_PCSN: null,
|
||||
steel_VEHICLE_CODE1: null,
|
||||
steel_QTY1: null,
|
||||
steel_PCSN1: null,
|
||||
steel_VEHICLE_CODE2: null,
|
||||
steel_QTY2: null,
|
||||
steel_PCSN2: null,
|
||||
steel_VEHICLE_CODE3: null,
|
||||
steel_QTY3: null,
|
||||
steel_PCSN3: null,
|
||||
record_TIME: null,
|
||||
create_TM: null,
|
||||
op_FLAG: null,
|
||||
op_TM: null,
|
||||
op_REPLAY: null
|
||||
}
|
||||
export default {
|
||||
name: 'PdmBdVehicleBinding',
|
||||
@@ -100,8 +105,8 @@ export default {
|
||||
return CRUD({
|
||||
title: '分拣载具关联记录',
|
||||
url: 'api/pdmBdVehicleBinding',
|
||||
idField: 'associate_id',
|
||||
sort: 'associate_id,desc',
|
||||
idField: 'record_ID',
|
||||
sort: 'record_id,desc',
|
||||
crudMethod: { ...crudPdmBdVehicleBinding }
|
||||
})
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user