挂具绑定、挂靶绑定、靶备绑定页面接口开发

liweidong
李涛 4 weeks ago
parent f3fd703b31
commit 0e9bdf8e2e
  1. 68
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/BasicClazz.java
  2. 50
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java
  3. 79
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/BsAdditionalMess.java
  4. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java
  5. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IRelTeamSetUserService.java
  6. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java
  7. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/RelTeamSetUserServiceImpl.java
  8. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IEquipmentService.java
  9. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IFeiBaSetService.java
  10. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/EquipmentServiceImpl.java
  11. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java
  12. 31
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
  13. 41
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java
  14. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.java
  15. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java
  16. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml
  17. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IBsAdditionalMessService.java
  18. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
  19. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
  20. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java
  21. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java
  22. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java
  23. 33
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/BsAdditionalMessServiceImpl.java
  24. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  25. 165
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
  26. 292
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
  27. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java
  28. 44
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java

@ -28,6 +28,74 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
public class BasicClazz extends BaseEntity {
/**
* 物料标记
*/
public static Short TYPE_FLAG = 1;
/**
* 出库原因
*/
public static Short TYPE_OUT_STORE = 2;
/**
* 退库原因
*/
public static Short TYPE_TK_STORE = 3;
/**
* 简单原因
*/
public static Short TYPE_POOR_REASON = 4;
/**
* 镀种分类
*/
public static Short TYPE_PLATING_ASSORT = 5;
/**
* IOT获取挂次号接口保存
*/
public static Short TYPE_SUSPENSION_NO = 6;
/**
* 外协匹配规则
*/
public static Short TYPE_RULE = 7;
/**
* 排除部门
*/
public static Short TYPE_EXCLUDE_DIVISION = 8;
/**
* 异常配置
*/
public static Short TYPE_ABNORMAL_CONFIG = 9;
/**
* 成本类型
*/
public static Short TYPE_COST_TYPE = 10;
/**
* 烧结转试验计划
*/
public static Short TYPE_TEST_TYPE = 11;
/**
* 绩效模板
*/
public static Short TYPE_JXMB = 12;
/**
* 重点工作类型
*/
public static Short TYPE_ZDGZLX = 13;
/**
* 绩效模板
*/
public static Short TYPE_NOTICE = 14;
@Serial
private static final long serialVersionUID = 1L;

@ -0,0 +1,50 @@
package org.springblade.desk.produce.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 设备绑定 数据传输对象实体类
* @author litao
*/
@Data
public class DeviceBindDTO {
@Schema(description = "工序ID集合")
private String planListIds;
@Schema(description = "挂具ID")
private Long rsId;
@Schema(description = "挂具ID集合")
private String rsList;
@Schema(description = "飞靶ID")
private Long fsId;
@Schema(description = "飞靶ID集合")
private String fsList;
@Schema(description = "设备ID")
private Long ecId;
@Schema(description = "挂次号")
private String hangNum;
@Schema(description = "挂次号id")
private Long hangNumId;
@Schema(description = "是否解绑")
private String unFsBool;
@Schema(description = "")
private String dopedParts;
@Schema(description = "")
private String net;
@Schema(description = "")
private String rack;
}

@ -0,0 +1,79 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.util.Date;
/**
* 额外信息存储 实体类
* @author litao
*/
@Data
@TableName("MES_BS_ADDITIONAL_MESS")
@Schema(description = "BsAdditionalMess对象")
@EqualsAndHashCode(callSuper = true)
public class BsAdditionalMess extends BaseEntity {
/**
* 同槽增加额外面积
*/
public static Short TYPE_ONE = 1;
/**
* 试验项目名称
*/
public static Short TYPE_TEST_PROJECT_TYPE = 2;
/**
* 试验项目标准
*/
public static Short TYPE_TEST_PROJECT_STANDARD_TYPE = 3;
/**
* 玻璃饼最低库存
*/
public static Short TYPE_BLB_MIN_STOCK = 4;
/**
* 模块说明
*/
public static Short TYPE_MODULE_DETAIL = 5;
/**
* 年度数据存储
*/
public static Short TYPE_YEAR_DATA = 6;
/**
* 班组准时率
*/
public static Short TYPE_TEAM_PUNCTUALITY = 7;
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "数据1")
private String oneData;
@Schema(description = "数据2")
private String twoData;
@Schema(description = "数据3")
private String threeData;
@Schema(description = "数据4")
private String fourData;
@Schema(description = "业务类别")
private Short type;
@Schema(description = "小数类型-数据1")
private Double douOneData = 0d;
@Schema(description = "备注")
private String memo;
}

@ -23,4 +23,5 @@ import java.util.List;
*/
public interface ICenterTeamService extends BaseService<CenterTeam> {
CenterTeam getByTsId(Long makeTeam);
}

@ -41,4 +41,11 @@ public interface IRelTeamSetUserService extends BaseService<RelTeamSetUser> {
* @param vo
*/
void setVOValue(RelTeamSetUserVO vo);
/**
* 获取班组id
* @param userId
* @return
*/
List<Long> getTeamId(Long userId);
}

@ -6,6 +6,7 @@ package org.springblade.desk.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
@ -43,4 +44,12 @@ import java.util.List;
public class CenterTeamServiceImpl extends BaseServiceImpl<CenterTeamMapper, CenterTeam> implements ICenterTeamService {
@Override
public CenterTeam getByTsId(Long makeTeam) {
List<CenterTeam> list = this.list(Wrappers.lambdaQuery(CenterTeam.class).eq(CenterTeam::getTsId, makeTeam));
if (CollectionUtils.isEmpty(list)) {
return null;
}
return list.get(0);
}
}

@ -5,15 +5,19 @@ package org.springblade.desk.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.basic.constant.UserRightConst;
import org.springblade.desk.basic.excel.RelTeamSetUserExcel;
import org.springblade.desk.basic.mapper.RelTeamSetUserMapper;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.UserRight;
import org.springblade.desk.basic.pojo.vo.RelTeamSetUserVO;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.system.feign.IDictClient;
@ -58,4 +62,13 @@ public class RelTeamSetUserServiceImpl extends BaseServiceImpl<RelTeamSetUserMap
public void setVOValue(RelTeamSetUserVO vo) {
}
@Override
public List<Long> getTeamId(Long userId) {
List<RelTeamSetUser> relTeamSetUsers = this.list(Wrappers.lambdaQuery(RelTeamSetUser.class).eq(RelTeamSetUser::getUserId, userId));
if (CollectionUtils.isEmpty(relTeamSetUsers)) {
return null;
}
return relTeamSetUsers.stream().map(RelTeamSetUser::getTeamSetId).toList();
}
}

@ -76,4 +76,9 @@ public interface IEquipmentService extends BaseService<EquipmentEntity> {
Boolean editIp(String ip, Long deviceId);
void regularlyUpdated();
/**
* 根据设备编号查询设备信息
*/
EquipmentEntity getDeEquipmentCardByCode(String deviceCode);
}

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.validation.constraints.NotEmpty;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.pojo.excel.FeiBaSetExcel;
import java.util.List;
@ -44,4 +45,9 @@ public interface IFeiBaSetService extends BaseService<FeiBaSetEntity> {
Boolean bind(@NotEmpty List<Long> ids, Integer deviceId);
void regularlyUpdated();
/**
* 根据设备编号获取飞靶
*/
FeiBaSetEntity getBsFeiBaSetByCode(String fsCode);
}

@ -170,6 +170,15 @@ public class EquipmentServiceImpl extends BaseServiceImpl<EquipmentMapper, Equip
}
}
@Override
public EquipmentEntity getDeEquipmentCardByCode(String deviceCode) {
List<EquipmentEntity> list = this.list(Wrappers.lambdaQuery(EquipmentEntity.class).eq(EquipmentEntity::getDeviceCode, deviceCode));
if (CollectionUtils.isEmpty(list)) {
return null;
}
return list.get(0);
}
/**
* 构建请求体
*/

@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.device.mapper.FeiBaSetMapper;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.pojo.excel.FeiBaSetExcel;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
@ -162,4 +163,13 @@ public class FeiBaSetServiceImpl extends BaseServiceImpl<FeiBaSetMapper, FeiBaSe
log.error("同步飞靶数据接口调用失败: {}", e.getMessage(), e);
}
}
@Override
public FeiBaSetEntity getBsFeiBaSetByCode(String fsCode) {
List<FeiBaSetEntity> list = this.list(Wrappers.lambdaQuery(FeiBaSetEntity.class).eq(FeiBaSetEntity::getFsCode, fsCode));
if (CollectionUtils.isEmpty(list)) {
return null;
}
return list.get(0);
}
}

@ -1,5 +1,6 @@
package org.springblade.desk.produce.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -7,15 +8,22 @@ import lombok.RequiredArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.pojo.vo.RackSetVO;
import org.springblade.desk.device.wrapper.RackSetWrapper;
import org.springblade.desk.produce.pojo.dto.TurnTypeDTO;
import org.springblade.desk.produce.pojo.entity.MesEquipmentCardEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import org.springblade.desk.produce.service.IPdaLoadService;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @ClassName PdaLoadController
* @Description: 手持移动端数据查询接口
@ -35,28 +43,34 @@ public class PdaLoadController {
@GetMapping(value = "/loadBindData/{cardNo}")
@ApiOperationSupport(order = 1)
@Operation(summary = "加载绑定需要的流程卡数据", description = "传入cardNo")
public R loadBindData(@PathVariable String cardNo) {
public R<WorkPlan> loadBindData(@PathVariable String cardNo) {
return R.data(pdaLoadService.loadBindData(AuthUtil.getUserId(), cardNo));
}
@GetMapping(value = "getBsFeiBaSetByCode/{rsCode}")
@GetMapping(value = "/getBsRackSetByCode/{rsCode}")
@ApiOperationSupport(order = 2)
@Operation(summary = "根据挂具编码查询数据", description = "传入rsCode")
public R getBsFeiBaSetByCode(@PathVariable String rsCode) {
public R<RackSetEntity> getBsRackSetByCode(@PathVariable String rsCode) {
return R.data(pdaLoadService.getBsRackSetByCode(rsCode));
}
@GetMapping(value = "/getBsFeiBaSetByCode/{fsCode}")
@Operation(summary = "根据飞靶编码查询数据", description = "fsCode")
public R<FeiBaSetEntity> getBsFeiBaSetByCode(@PathVariable String fsCode) {
return R.data(pdaLoadService.getBsFeiBaSetByCode(fsCode));
}
@GetMapping(value = "/getBsFeiBaSetByCodeUn/{fsCode}")
@ApiOperationSupport(order = 3)
@Operation(summary = "根据挂具编码查询数据(解绑)", description = "传入fsCode")
public R getBsFeiBaSetByCodeUn(@PathVariable String fsCode) {
public R<FeiBaSetEntity> getBsFeiBaSetByCodeUn(@PathVariable String fsCode) {
return R.data(pdaLoadService.getBsFeiBaSetByCode(fsCode));
}
@GetMapping(value = "/getEcByDeviceCode/{deviceCode}")
@ApiOperationSupport(order = 4)
@Operation(summary = "根据设备编码查询数据", description = "传入deviceCode")
public R getEcByDeviceCode(@PathVariable String deviceCode) {
public R<EquipmentEntity> getEcByDeviceCode(@PathVariable String deviceCode) {
return R.data(pdaLoadService.getEcByCode(deviceCode));
}
@ -96,4 +110,11 @@ public class PdaLoadController {
return R.status(pdaLoadService.saveProCheck(inspectionTask));
}
@GetMapping(value = "/getHangNum")
@ApiOperationSupport(order = 7)
@Operation(summary = "根据设备编号获取挂次号", description = "")
public R<List<JSONObject>> getHangNum(@RequestParam String deviceCode) {
return R.data(pdaLoadService.getHangNum(deviceCode));
}
}

@ -6,8 +6,10 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.basic.service.IBasicClazzService;
import org.springblade.desk.produce.pojo.dto.DeviceBindDTO;
import org.springblade.desk.produce.pojo.entity.MesEquipmentCardEntity;
import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo;
import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo;
@ -35,63 +37,64 @@ public class PdaSaveController {
@Operation(summary = "流程卡与挂具绑定")
@PostMapping("/gjBindingCrad")
public R gjBindingCrad(@RequestParam(value = "rsId") Long rsId, @RequestParam(value = "planListIds") String planListIds) {
pdaSaveService.bindingCard(rsId, null, null, planListIds);
public R gjBindingCrad(@RequestBody DeviceBindDTO deviceBindDTO) {
pdaSaveService.bindingCard(deviceBindDTO);
return R.success();
}
@Operation(summary = "挂具与飞靶绑定")
@PostMapping("/gjBindingFb")
public R gjBindingFb(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "rsListIds") String rsListIds) {
pdaSaveService.binding(fsId, null, null, null, rsListIds);
public R gjBindingFb(@RequestBody DeviceBindDTO deviceBindDTO) {
pdaSaveService.binding(deviceBindDTO);
return R.success();
}
@Operation(summary = "飞靶与设备绑定")
@PostMapping("/fbBindingEc")
public R fbBindingEc(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "ecId") Long ecId,
@RequestParam(value = "hangNum") Long hangNum, @RequestParam(value = "unFsBool") Boolean unFsBool) {
public R fbBindingEc(@RequestBody DeviceBindDTO deviceBindDTO) {
String hangNumName = "";
BasicClazz bsBasicClass = null;
if (hangNum != null && hangNum != -1) {
Long hangNum = deviceBindDTO.getHangNumId();
if (hangNum != null && hangNum != -1L) {
bsBasicClass = basicClazzService.getById(hangNum);
if (bsBasicClass != null) {
hangNumName = bsBasicClass.getName();
}
} else if (hangNum == -1) {
} else if (hangNum == -1L) {
hangNumName = "-1";
}
pdaSaveService.binding(fsId, ecId, unFsBool, hangNumName, null);
// 删除产线设备对应的挂次号之前的数据
deviceBindDTO.setHangNum(hangNumName);
pdaSaveService.binding(deviceBindDTO);
// 删除产线设备对应的挂次号之前的数据
if (bsBasicClass != null) {
LambdaUpdateWrapper<BasicClazz> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(BasicClazz::getCode, bsBasicClass.getCode());
wrapper.eq(BasicClazz::getBizType, "6");
wrapper.lt(BasicClazz::getUpdateTime, bsBasicClass.getUpdateTime());
wrapper.eq(BasicClazz::getBizType, BasicClazz.TYPE_SUSPENSION_NO);
wrapper.le(BasicClazz::getUpdateTime, bsBasicClass.getUpdateTime());
wrapper.set(BasicClazz::getIsDeleted, 1);
basicClazzService.update(null, wrapper);
basicClazzService.update(wrapper);
}
return R.success();
}
@Operation(summary = "流程卡与飞靶绑定")
@PostMapping("/fbBindingCrad")
public R fbBindingCrad(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "planListIds") String planListIds) {
pdaSaveService.bindingCard(null, fsId, null, planListIds);
public R fbBindingCrad(@RequestBody DeviceBindDTO deviceBindDTO) {
pdaSaveService.bindingCard(deviceBindDTO);
return R.success();
}
@Operation(summary = "流程卡与设备绑定")
@PostMapping("/ecBindingCrad")
public R ecBindingCrad(@RequestParam(value = "ecId") Long ecId, @RequestParam(value = "planListIds") String planListIds) {
pdaSaveService.bindingCard(null, null, ecId, planListIds);
public R ecBindingCrad(@RequestBody DeviceBindDTO deviceBindDTO) {
pdaSaveService.bindingCard(deviceBindDTO);
return R.success();
}
@Operation(summary = "挂具与设备绑定")
@PostMapping("/gjBindingEc")
public R gjBindingEc(@RequestParam(value = "ecId") Long ecId, @RequestParam(value = "rsListIds") String rsListIds) {
pdaSaveService.binding(null, ecId, null, null, rsListIds);
public R gjBindingEc(@RequestBody DeviceBindDTO deviceBindDTO) {
pdaSaveService.binding(deviceBindDTO);
return R.success();
}

@ -0,0 +1,14 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.produce.pojo.entity.BsAdditionalMess;
/**
* 额外信息存储 Mapper 接口
*
* @author BladeX
*/
public interface BsAdditionalMessMapper extends BaseMapper<BsAdditionalMess> {
}

@ -24,4 +24,6 @@ public interface MacToolUseMapper extends BaseMapper<MacToolUse> {
MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id);
MacToolUse queryByParams(Long wpId, Integer rsBool, Integer fsBool, Integer ecBool);
String findMaxCodeByParams(Long rsId, Long fsId);
}

@ -91,6 +91,22 @@
<if test="ecBool == 1">and EQUIPMENT_CARD is not null</if>
order by MTN_CODE) where rownum = 1
</select>
<select id="findMaxCodeByParams" resultType="java.lang.String">
SELECT * FROM (SELECT
DISTINCT MTN_CODE
FROM
MES_MAC_TOOL_USE
<where>
FINISHED = '0'
<if test="rsId != null">
AND BS_RACK_SET = #{rsId}
</if>
<if test="fsId != null">
AND BS_FEI_BA_SET = #{fsId}
</if>
</where>
ORDER BY MTN_CODE DESC) WHERE ROWNUM = 1
</select>
</mapper>

@ -0,0 +1,14 @@
package org.springblade.desk.produce.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.BsAdditionalMess;
/**
* 额外信息存储 服务类
*
* @author BladeX
*/
public interface IBsAdditionalMessService extends BaseService<BsAdditionalMess> {
BsAdditionalMess getDataByOneData(String mtnCode, short type);
}

@ -52,4 +52,14 @@ public interface IMacToolUseService extends BaseService<MacToolUse> {
MacToolUse getHangNumIsNull(Long id);
MacToolUse queryByParams(Long id, Integer rsBool, Integer fsBool, Integer ecBool);
/**
* 根据挂具编码或者飞靶编码查询正在运行的最大绑定数据
*/
String findMaxCodeByParams(Long rsId, Long fsId);
/**
* 根据条件查询绑定的流程卡信息
*/
List<MacToolUse> listByParams(Long rsId, Long fsId, Long ecId, String hangNum);
}

@ -1,10 +1,13 @@
package org.springblade.desk.produce.service;
import com.alibaba.fastjson.JSONObject;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.produce.pojo.entity.MesEquipmentCardEntity;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO;
@ -52,7 +55,7 @@ public interface IPdaLoadService extends BaseService<WorkPlan> {
* @param deviceCode 设备编码
* @return java.lang.Object
*/
Object getEcByCode(String deviceCode);
EquipmentEntity getEcByCode(String deviceCode);
LoadSubOrderVO loadSubOrder(String cardNo);
@ -68,4 +71,6 @@ public interface IPdaLoadService extends BaseService<WorkPlan> {
boolean saveProCheck(InspectionTask inspectionTask);
List<JSONObject> getHangNum(String deviceCode);
}

@ -1,6 +1,7 @@
package org.springblade.desk.produce.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.dto.DeviceBindDTO;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
@ -21,21 +22,14 @@ public interface IPdaSaveService extends BaseService<WorkPlan> {
/**
* <p>方法名: bindingCard </p>
* <p>方法描述: 绑定卡 </p>
*
* @param rsId 挂具id
* @param planListIds 绑定数据
*/
void bindingCard(Long rsId, Long fsId, Long ecId, String planListIds);
void bindingCard(DeviceBindDTO deviceBindDTO);
/**
* <p>方法名: binding </p>
* <p>方法描述: 绑定 </p>
*
* @param rsId 挂具id
* @param ecId 设备id
* @param unFsBool 是否解绑
* @param rsListIds 绑定数据
*/
void binding(Long rsId, Long ecId, Boolean unFsBool,String hangNum,String rsListIds);
void binding(DeviceBindDTO deviceBindDTO);
/**
* <p>方法名: sjBindingCard </p>
* <p>方法描述: 绑定卡 </p>

@ -49,4 +49,8 @@ public interface IPlateAroundService extends BaseService<PlateAround> {
*/
void createPlateAround(Long userId, PlateAround plateAround, Short paType, int next, Boolean aTure);
/**
* 根据作业计划id和类型查询镀前镀后记录
*/
PlateAround getPrPlateAround(Long id, Short beforePlanOut);
}

@ -41,4 +41,6 @@ public interface IWorkPlanService extends BaseService<WorkPlan> {
List<ProduceMonitorWorkPlanVO> getProduceMonitorWorkPlanList(Long woId);
WorkPlan findMaxHostWorkUnitByWoId(Long id, int i);
void verifyMakeUnit(WorkPlan prWorkPlan);
}

@ -0,0 +1,33 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.produce.mapper.BsAdditionalMessMapper;
import org.springblade.desk.produce.pojo.entity.BsAdditionalMess;
import org.springblade.desk.produce.service.IBsAdditionalMessService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 额外信息存储 服务实现类
*
* @author BladeX
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class BsAdditionalMessServiceImpl extends BaseServiceImpl<BsAdditionalMessMapper, BsAdditionalMess> implements IBsAdditionalMessService {
@Override
public BsAdditionalMess getDataByOneData(String mtnCode, short type) {
List<BsAdditionalMess> list = this.list(Wrappers.lambdaQuery(BsAdditionalMess.class).eq(BsAdditionalMess::getOneData, mtnCode).eq(BsAdditionalMess::getType, type));
if (CollectionUtils.isEmpty(list)) {
return null;
}
return list.get(0);
}
}

@ -2,6 +2,7 @@ package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -36,6 +37,7 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
private final IRackSetService rackSetService;
private final IBsProcessSetService bsProcessSetService;
@Override
public String nextCode(int i) {
// 编码模式
@ -132,6 +134,21 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
return baseMapper.queryByParams(wpId, rsBool, fsBool, ecBool);
}
@Override
public String findMaxCodeByParams(Long rsId, Long fsId) {
return baseMapper.findMaxCodeByParams(rsId, null);
}
@Override
public List<MacToolUse> listByParams(Long rsId, Long fsId, Long ecId, String hangNum) {
return this.list(Wrappers.lambdaQuery(MacToolUse.class)
.eq(MacToolUse::getFinished, 0)
.eq(rsId != null, MacToolUse::getBsRackSet, rsId)
.eq(fsId != null, MacToolUse::getBsFeiBaSet, fsId)
.eq(ecId != null, MacToolUse::getEquipmentCard, ecId)
.eq(StringUtils.isNotBlank(hangNum), MacToolUse::getHangNum, hangNum));
}
public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance();
cal.setTime(d);

@ -14,16 +14,14 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.mapper.CraftAbilityMapper;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.IUserRightService;
import org.springblade.desk.basic.pojo.entity.*;
import org.springblade.desk.basic.service.*;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
@ -42,6 +40,7 @@ import org.springblade.desk.quality.service.IPlanTestService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@ -83,7 +82,7 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IMacToolUseService macToolUseService;
private final IPlanTestService planTestService;
private final IBasicClazzService basicClazzService;
private final IWorkOrderService workOrderService;
@ -93,7 +92,7 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IFeiBaSetService feiBaSetService;
private final IMesEquipmentCardService mesEquipmentCardService;
private final IEquipmentService equipmentService;
private final IYieldOrderService yieldOrderService;
@ -107,7 +106,12 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IWorkPlanService workPlanService;
private final IUserRightService userRightService;
private final ICenterTeamService centerTeamService;
private final IWorkCenterService workCenterService;
@Value("${request.device.prefixId}")
private String prefixId;
@Override
public WorkPlan loadBindData(Long userId, String cardNo) {
@ -117,23 +121,31 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
@Override
public RackSetEntity getBsRackSetByCode(String rsCode) {
RackSetEntity rackSet = rackSetService.getBsRackSetByCode(rsCode);
if (rackSet == null) {
//获取挂具信息
RackSetEntity bsFeiBaSet = rackSetService.getBsRackSetByCode(rsCode);
if (bsFeiBaSet == null) {
throw new ServiceException("此挂具不存在!");
}
return rackSet;
return bsFeiBaSet;
}
@Override
public FeiBaSetEntity getBsFeiBaSetByCode(String fsCode) {
return feiBaSetService.getOne(Wrappers.lambdaQuery(FeiBaSetEntity.class)
.eq(FeiBaSetEntity::getFsCode, fsCode));
//获取挂具信息
FeiBaSetEntity feiBaSet = feiBaSetService.getBsFeiBaSetByCode(fsCode);
if (feiBaSet == null) {
throw new ServiceException("此飞靶不存在!");
}
return feiBaSet;
}
@Override
public Object getEcByCode(String deviceCode) {
return mesEquipmentCardService.getOne(Wrappers.lambdaQuery(MesEquipmentCardEntity.class)
.eq(MesEquipmentCardEntity::getDeviceCode, deviceCode));
public EquipmentEntity getEcByCode(String deviceCode) {
EquipmentEntity equipmentCard = equipmentService.getDeEquipmentCardByCode(deviceCode);
if (equipmentCard == null) {
throw new ServiceException("此设备不存在!");
}
return equipmentCard;
}
@Override
@ -221,7 +233,7 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
//获取并验证车间订单
WorkOrder prWorkOrder = this.checkPrWorkOrder(cardNo);
//获取当前登录人班组
List<Long> tsIds = userRightService.getTeamId(userId);
List<Long> tsIds = relTeamSetUserService.getTeamId(userId);
//获取作业计划
WorkPlan workPlan = workPlanService.getById(prWorkOrder.getWpId());
//获取当前工序的下序
@ -254,44 +266,62 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
private void checkWorkCenter(boolean checkCurrentProcess, WorkPlan frontPrWorkPlan, WorkPlan prWorkPlan, WorkPlan nextPrWorkPlan, List<Long> tsIds, boolean checkAfterPlating) {
// todo 等待关联表开发完成
// WorkCenter bsWorkCenter = null;
// BsTeamSetEntity teamSet;
// if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START)) || nextPrWorkPlan == null) {
// if (prWorkPlan.getMakeTeam() == null) {
// throw new ServiceException("当前工序无加工班组");
// }
//
// // 根据当前工序班组查询作业中心
// teamSet = bsTeamSetService.getById(prWorkPlan.getMakeTeam());
// if (teamSet != null) {
// bsWorkCenter = centerTeam.getBsWorkCenter();
// }
// // 验证当前登录人和当前工序的班组是否一致
// this.checkMakeTeamOne(prWorkPlan, tsIds);
// if (checkAfterPlating) {
// prWorkPlanService.verifyMakeUnit(prWorkPlan);
// }
// } else {
//
// if (nextPrWorkPlan.getMakeTeam() == null) {
// throw new ServiceException("当前工序无加工班组");
// }
//
// // 根据当前工序班组查询作业中心
// centerTeam = bsCenterTeamService.getByTsId(nextPrWorkPlan.getMakeTeam().getTsId());
// if (centerTeam != null) {
// bsWorkCenter = centerTeam.getBsWorkCenter();
// }
// //验证当前登录人和当前工序的班组是否一致
// this.checkMakeTeamOne(nextPrWorkPlan, tsIds);
// if (checkAfterPlating) {
// prWorkPlanService.verifyMakeUnit(nextPrWorkPlan);
// }
// }
// if (bsWorkCenter == null) {
// throw new ServiceException("当前工序无作业中心!");
// }
WorkCenter bsWorkCenter = null;
CenterTeam centerTeam;
if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START)) || nextPrWorkPlan == null) {
if (prWorkPlan.getMakeTeam() == null) {
throw new ServiceException("当前工序无加工班组");
}
// 根据当前工序班组查询作业中心
centerTeam = centerTeamService.getByTsId(prWorkPlan.getMakeTeam());
if (centerTeam != null) {
bsWorkCenter = workCenterService.getById(centerTeam.getWcId());
}
// 验证当前登录人和当前工序的班组是否一致
this.checkMakeTeamOne(prWorkPlan, tsIds);
if (checkAfterPlating) {
workPlanService.verifyMakeUnit(prWorkPlan);
}
} else {
if (nextPrWorkPlan.getMakeTeam() == null) {
throw new ServiceException("当前工序无加工班组");
}
// 根据当前工序班组查询作业中心
centerTeam = centerTeamService.getByTsId(nextPrWorkPlan.getMakeTeam());
if (centerTeam != null) {
bsWorkCenter = workCenterService.getById(centerTeam.getWcId());
}
//验证当前登录人和当前工序的班组是否一致
this.checkMakeTeamOne(nextPrWorkPlan, tsIds);
if (checkAfterPlating) {
workPlanService.verifyMakeUnit(nextPrWorkPlan);
}
}
if (bsWorkCenter == null) {
throw new ServiceException("当前工序无作业中心!");
}
}
private void checkMakeTeamOne(WorkPlan prWorkPlan, List<Long> tsIds) {
Long teamTsId = null;
//判断是否特殊工序,如果是特殊工序验证附属班组,反之则为分派班组
//20260304 逻辑更改,若存在附属班组,则验证附属班组,不存在附属班组,验证加工班组
if (prWorkPlan.getSubsidiaryTeam() != null) {
teamTsId = prWorkPlan.getSubsidiaryTeam();
} else {
teamTsId = prWorkPlan.getMakeTeam();
}
if (tsIds == null) {
throw new ServiceException("当前登录人无对应班组!");
}
if (!tsIds.contains(teamTsId)) {
throw new ServiceException("当前工序不是登录人所在班组工序,不能操作!");
}
}
@Override
@ -314,6 +344,29 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
return inspectionTaskService.saveOrUpdate(inspectionTask);
}
@Override
public List<JSONObject> getHangNum(String deviceCode) {
List<JSONObject> objectList = new ArrayList<>();
if (deviceCode.contains(prefixId)) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("label", "钝化专用");
jsonObject.put("value", -1);
objectList.add(jsonObject);
}
List<BasicClazz> basicClazzList = basicClazzService.list(Wrappers.lambdaQuery(BasicClazz.class).eq(BasicClazz::getCode, deviceCode).eq(BasicClazz::getBizType, BasicClazz.TYPE_SUSPENSION_NO));
if (basicClazzList == null) {
return List.of();
}
for (BasicClazz basicClazz : basicClazzList) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("label", basicClazz.getName());
jsonObject.put("value", basicClazz.getId());
objectList.add(jsonObject);
}
return objectList;
}
@Override
public void handleBaoZhuangWorkPlan(List<WorkPlan> wpList, YieldOrder yo) {
if (wpList == null || wpList.size() == 0) {

@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
@ -12,18 +13,22 @@ import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.DeviceBindDTO;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.PrMacTooUseSpec;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
@ -44,6 +49,8 @@ import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
@ -61,30 +68,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IBsProcessSetService bsProcessSetService;
private final IDsProcessService dsProcessService;
private final IPrReworkProcessService prReworkProcessService;
private final IWorkPlanItemService workPlanItemService;
private final IInspectionTaskService inspectionTaskService;
private final IWorkOrderRunService workOrderRunService;
private final IDsProcessMeasuringToolService processMeasuringToolService;
private final IDsProcessProjectService dsProcessProjectService;
private final IMakeRecService makeRecService;
private final IMacToolUseService macToolUseService;
private final IPlanTestService planTestService;
private final IWorkOrderService workOrderService;
private final IRelTeamSetUserService relTeamSetUserService;
private final IRackSetService rackSetService;
private final IFeiBaSetService feiBaSetService;
@ -97,82 +84,134 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IWorkPlanLogService workPlanLogService;
private final IEquipmentService equipmentService;
private final IBsAdditionalMessService bsAdditionalMessService;
@Override
public void bindingCard(Long rsId, Long fsId, Long ecId, String planListIds) {
RackSetEntity rackSet = rackSetService.getById(rsId);
//BsFeiBaSet bsFeiBaSet = this.getFeiBaSetByFsId(fsId);
//DeEquipmentCard equipmentCard = this.getEquipmentCardByEcId(ecId);
public void bindingCard(DeviceBindDTO deviceBindDTO) {
Long rsId = deviceBindDTO.getRsId();
Long fsId = deviceBindDTO.getFsId();
Long ecId = deviceBindDTO.getEcId();
List<Long> planListIds = Func.toLongList(deviceBindDTO.getPlanListIds());
if (rsId == null && fsId == null && CollectionUtils.isEmpty(planListIds)) {
throw new ServiceException("数据格式不正确!");
}
//同槽号
RackSetEntity rackSet = this.getRackSetByRsId(rsId);
FeiBaSetEntity feiBaSet = this.getFeiBaSetByFsId(fsId);
EquipmentEntity equipment = this.getEquipmentCardByEcId(ecId);
// 同槽号
String code = null;
//rsId挂具绑定流程卡,fsId飞靶绑定流程卡
// rsId挂具绑定流程卡,fsId飞靶绑定流程卡
if (rsId != null) {
List<MacToolUse> macToolUseList = macToolUseService.list(Wrappers.<MacToolUse>query().lambda()
.eq(MacToolUse::getBsRackSet, rsId)
.eq(MacToolUse::getFinished, false)
.eq(MacToolUse::getIsDeleted, 0).orderByDesc(MacToolUse::getMtnCode)
);
if (macToolUseList.size() > 0) {
code = macToolUseList.get(0).getMtnCode();
}
code = macToolUseService.findMaxCodeByParams(rsId, null);
//如果未找到满足条件的同槽号
if (StringUtils.isBlank(code)) {
code = macToolUseService.nextCode(0);
}
//修改挂具状态
rackSet.setStatus(RackSetEntity.RS_STATUS_BOUND);
rackSet.setBindQty((short) (rackSet.getBindQty() + 1));
rackSetService.updateById(rackSet);
} else if (fsId != null) {
code = macToolUseService.findMaxCodeByParams(null, fsId);
//如果未找到满足条件的同槽号
if (StringUtils.isBlank(code)) {
code = macToolUseService.nextCode(1);
}
//修改飞靶状态
feiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_BOUND);
feiBaSet.setBindQty((short) (feiBaSet.getBindQty() + 1));
feiBaSetService.updateById(feiBaSet);
} else if (ecId != null) {
code = macToolUseService.nextCode(2);
}
//fsId 是空,逻辑不会走
//处理绑定信息
WorkPlan prWorkPlan = null;
MacToolUse mtu = null;
//绑定日期
Date nowDate = new Date();
String[] str = planListIds.split(",");
for (int i = 0; i < str.length; i++) {
Long planId = Long.parseLong(str[i]);
prWorkPlan = this.getById(planId);
WorkPlan workPlan;
MacToolUse mtu;
List<WorkPlan> workPlans = this.listByIds(planListIds);
// stream流将workPlans按照ID转换为map
Map<Long, WorkPlan> workPlanMap = workPlans.stream().collect(Collectors.toMap(WorkPlan::getId, wp -> wp));
for (Long planId : planListIds) {
workPlan = workPlanMap.get(planId);
mtu = new MacToolUse();
mtu.setMtnCode(code);
mtu.setBsRackSet(rsId);
mtu.setWpId(prWorkPlan.getId());
mtu.setCreateMan(AuthUtil.getUser().getUserId());
mtu.setUpdateTime(nowDate);
mtu.setCreateTime(nowDate);
macToolUseService.saveOrUpdate(mtu);
mtu.setWpId(planId);
this.packageMtu(mtu, rsId, fsId, ecId, code);
macToolUseService.save(mtu);
//修改作业计划绑定状态为绑定
prWorkPlan.setBindStatus(WorkPlan.BIND_STATUS_BIND);
workPlan.setBindStatus(WorkPlan.BIND_STATUS_BIND);
if (rsId == null) {
prWorkPlan.setPrintType(WorkPlan.PRINT_TYPE_PROCESS);
workPlan.setPrintType(WorkPlan.PRINT_TYPE_PROCESS);
}
this.updateById(prWorkPlan);
this.updateById(workPlan);
}
// 存储同槽额外面积 没有表,后期添加
this.setBsAdditionalMess(code);
this.setBsAdditionalMess(code, deviceBindDTO);
}
private EquipmentEntity getEquipmentCardByEcId(Long ecId) {
if (ecId == null) {
return null;
}
EquipmentEntity equipment = equipmentService.getById(ecId);
if (equipment == null) {
throw new ServiceException("此设备不存在!");
}
return equipment;
}
private FeiBaSetEntity getFeiBaSetByFsId(Long fsId) {
if (fsId == null) {
return null;
}
FeiBaSetEntity feiBaSet = feiBaSetService.getById(fsId);
if (feiBaSet == null) {
throw new ServiceException("此飞靶不存在!");
}
return feiBaSet;
}
private RackSetEntity getRackSetByRsId(Long rsId) {
if (rsId == null) {
return null;
}
RackSetEntity rackSet = rackSetService.getById(rsId);
if (rackSet == null) {
throw new ServiceException("此挂具不存在!");
}
return rackSet;
}
@Override
public void binding(Long fsId, Long ecId, Boolean unFsBool, String hangNum, String rsListIds) {
public void binding(DeviceBindDTO deviceBindDTO) {
Long fsId = deviceBindDTO.getFsId();
Long ecId = deviceBindDTO.getEcId();
List<Long> rsListIds = Func.toLongList(deviceBindDTO.getRsList());
if (CollectionUtils.isEmpty(rsListIds) && fsId == null && ecId == null) {
throw new ServiceException("数据格式不正确!");
}
//获取同槽号
String code = null;
Date nowDate = new Date();
FeiBaSetEntity frackSet = feiBaSetService.getById(fsId);
FeiBaSetEntity feiBaSet = this.getFeiBaSetByFsId(fsId);
//挂具集合不为空,则代表是挂具相关绑定,反之则是飞靶绑定设备
if (rsListIds != null) {
if (fsId != null) {
List<MacToolUse> macToolUseList = macToolUseService.list(Wrappers.<MacToolUse>query().lambda()
.eq(MacToolUse::getBsRackSet, fsId)
.eq(MacToolUse::getFinished, false)
.eq(MacToolUse::getIsDeleted, 0).orderByDesc(MacToolUse::getMtnCode)
);
if (macToolUseList.size() > 0) {
code = macToolUseList.get(0).getMtnCode();
}
code = macToolUseService.findMaxCodeByParams(null, fsId);
//修改飞靶状态
feiBaSetService.updateById(frackSet);
feiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_BOUND);
feiBaSet.setBindQty((short) (feiBaSet.getBindQty() + 1));
feiBaSetService.updateById(feiBaSet);
//如果未找到满足条件的同槽号,则自动生成一个同槽号(飞靶)
if (StringUtils.isBlank(code)) {
code = macToolUseService.nextCode(0);
code = macToolUseService.nextCode(1);
}
} else {
//如果未找到满足条件的同槽号,则自动生成一个同槽号(设备)
@ -182,51 +221,85 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
//挂具
RackSetEntity rackSet = null;
String[] str = rsListIds.split(",");
for (int i = 0; i < str.length; i++) {
Long rsId = Long.parseLong(str[i]);
for (Long rsId : rsListIds) {
rackSet = rackSetService.getById(rsId);
List<MacToolUse> macToolUseList = macToolUseService.list(Wrappers.<MacToolUse>query().lambda()
.eq(MacToolUse::getBsRackSet, rsId)
.eq(MacToolUse::getFinished, false)
.eq(MacToolUse::getIsDeleted, 0)
);
List<MacToolUse> mtuLst = macToolUseService.listByParams(rsId, null, null, null);
if (CollectionUtils.isEmpty(mtuLst)) {
throw new ServiceException("挂具" + rackSet.getRsCode() + "未绑定流程卡!");
}
//开始绑定
for (int i1 = 0; i1 < macToolUseList.size(); i1++) {
MacToolUse mtu = macToolUseList.get(i1);
mtu.setMtnCode(code);
mtu.setBsRackSet(rsId);
mtu.setUpdateTime(nowDate);
mtu.setCreateMan(AuthUtil.getUser().getUserId());
macToolUseService.updateById(mtu);
for (MacToolUse mtu : mtuLst) {
// 如果挂具绑定了飞靶或者设备,则提示,不能重复绑定
if (mtu.getBsFeiBaSet() != null || mtu.getEquipmentCard() != null) {
throw new ServiceException("挂具【" + rackSet.getRsCode() + "】已绑定" + (mtu.getBsFeiBaSet() == null ? "设备【" + mtu.getEquipmentCard() : "飞靶【" + mtu.getBsFeiBaSet()) + "】,不能重复绑定!");
}
this.packageMtu(mtu, rsId, fsId, ecId, code);
}
macToolUseService.updateBatchById(mtuLst);
// 存储同槽额外面积
this.setBsAdditionalMess(code);
this.setBsAdditionalMess(code, deviceBindDTO);
}
} else {
List<MacToolUse> macToolUseList = macToolUseService.list(Wrappers.<MacToolUse>query().lambda()
.eq(MacToolUse::getBsFeiBaSet, frackSet.getId())
.eq(MacToolUse::getIsDeleted, 0)
);
//未标记解绑飞靶,则代表正常绑定
if (unFsBool == null) {
//获取以设备为基准的同槽号
List<MacToolUse> mtuLst = macToolUseService.listByParams(null, fsId, null, null);
if (CollectionUtils.isEmpty(mtuLst)) {
throw new ServiceException("此飞靶未绑定挂具!");
}
// 未标记解绑飞靶,则代表正常绑定
if (deviceBindDTO.getUnFsBool() == null || "0".equals(deviceBindDTO.getUnFsBool())) {
// 获取以设备为基准的同槽号
code = macToolUseService.nextCode(2);
//开始绑定
for (int i = 0; i < macToolUseList.size(); i++) {
MacToolUse mtu = macToolUseList.get(i);
mtu.setMtnCode(code);
mtu.setHangNum(null);
mtu.setMtnCode(code);
mtu.setUpdateTime(nowDate);
mtu.setCreateMan(AuthUtil.getUser().getUserId());
macToolUseService.updateById(mtu);
// 挂次号必填
if (StringUtils.isBlank(deviceBindDTO.getHangNum())) {
throw new ServiceException("挂次号不能为空!");
}
// 开始绑定
for (MacToolUse mtu : mtuLst) {
// 如果飞靶绑定了设备,则提示,不能重复绑定
if (mtu.getEquipmentCard() != null) {
throw new ServiceException("飞靶【" + feiBaSet.getFsCode() + "】已绑定设备【" + mtu.getEquipmentCard() + "】,不能重复绑定!");
}
// 靶备绑定下更新同槽额外面积存储记录中的同槽编号
if (StringUtils.isNotBlank(mtu.getMtnCode())) {
BsAdditionalMess dataByOneData = bsAdditionalMessService.getDataByOneData(mtu.getMtnCode(), (short) 1);
if (dataByOneData != null && dataByOneData.getId() != null) {
dataByOneData.setOneData(code);
bsAdditionalMessService.updateById(dataByOneData);
}
}
mtu.setHangNum(deviceBindDTO.getHangNum());
this.packageMtu(mtu, mtu.getBsRackSet(), fsId, ecId, code);
}
} else {
// 开始绑定
MacToolUse newMtu = null;
for (MacToolUse mtu : mtuLst) {
newMtu = new MacToolUse();
newMtu.setWpId(mtu.getWpId());
// 直接共享产线设备的同槽(烘箱)
this.packageMtu(newMtu, mtu.getBsRackSet(), null, mtu.getEquipmentCard(), mtu.getMtnCode());
macToolUseService.save(newMtu);
//标识绑定记录状态为解绑
mtu.setFinished(1);
// 将飞拔状态改为空闲
if (mtu != null && mtu.getBsFeiBaSet() != null) {
this.unBindBsFeiBaSet(feiBaSetService.getById(mtu.getBsFeiBaSet()));
}
}
} //else 逻辑不走
//获取第一次烘箱的温度数据
// macToolUseService.haveHongXiaoTem(newMtu);
}
macToolUseService.updateBatchById(mtuLst);
}
}
private void packageMtu(MacToolUse mtu, Long rsId, Long fsId, Long ecId, String code) {
mtu.setMtnCode(code);
mtu.setBsRackSet(rsId);
mtu.setBsFeiBaSet(fsId);
mtu.setEquipmentCard(ecId);
}
@Override
public void sjBindingCard(SjEcBingCardVo sjEcBingCardVo) {
MesEquipmentCardEntity equipmentCard = null;
@ -682,8 +755,9 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
private void unBindDetail(List<MacToolUse> mtuList) {
if (mtuList == null || mtuList.size() == 0)
if (mtuList == null || mtuList.isEmpty()) {
return;
}
for (MacToolUse mtu : mtuList) {
//修改作业计划绑定状态
@ -695,11 +769,17 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
/**
* 存储同槽额外面积
*
* @param code
*/
private void setBsAdditionalMess(String code) {
private void setBsAdditionalMess(String code, DeviceBindDTO deviceBindDTO) {
if (StringUtils.isNotBlank(deviceBindDTO.getDopedParts()) || StringUtils.isNotBlank(deviceBindDTO.getNet()) || StringUtils.isNotBlank(deviceBindDTO.getRack())) {
BsAdditionalMess bsAdditionalMess = new BsAdditionalMess();
bsAdditionalMess.setOneData(code);
bsAdditionalMess.setTwoData(deviceBindDTO.getDopedParts());
bsAdditionalMess.setThreeData(deviceBindDTO.getNet());
bsAdditionalMess.setFourData(deviceBindDTO.getRack());
bsAdditionalMess.setType(BsAdditionalMess.TYPE_ONE);
bsAdditionalMessService.save(bsAdditionalMess);
}
}

@ -224,6 +224,15 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
this.save(plateAround);
}
@Override
public PlateAround getPrPlateAround(Long id, Short beforePlanOut) {
List<PlateAround> list = this.list(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, id).eq(PlateAround::getPaType, beforePlanOut).orderByDesc(PlateAround::getId));
if (CollectionUtils.isEmpty(list)) {
return null;
}
return list.get(0);
}
private void savePlateAround(BladeUser user, PlateAround plateAround, Short paType, int next, Boolean aTure) {
PlateAround newPa = null;
PlateAround oldPa=null;

@ -5,10 +5,15 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.ICenterTeamService;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessMeasuringToolEntity;
@ -74,6 +79,13 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
private final IPlanTestService planTestService;
private final IRelTeamSetUserService relTeamSetUserService;
private final ICenterTeamService centerTeamService;
private final IWorkCenterService workCenterService;
private final IPlateAroundService plateAroundService;
@Override
public void addWorkPlan(WorkOrder wo, List<WorkPlan> wpList, List<Long> deleteIds) {
if (wpList != null) {
@ -249,4 +261,36 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
public WorkPlan findMaxHostWorkUnitByWoId(Long id, int i) {
return baseMapper.findMaxHostWorkUnitByWoId(id, i);
}
@Override
public void verifyMakeUnit(WorkPlan prWorkPlan) {
// 验证工序能否接收
WorkPlan frontWp = this.getById(prWorkPlan.getFrontWpId());
if (frontWp == null) {
return;
}
//当前序作业中心为检验单位,不验证镀前出入库
if (prWorkPlan.getMakeTeam() != null) {
CenterTeam centerTeam = centerTeamService.getByTsId(prWorkPlan.getMakeTeam());
if (centerTeam != null) {
WorkCenter workCenter = workCenterService.getById(centerTeam.getWcId());
if (workCenter.getCheckout() == 1) {
return;
}
}
}
if ("1".equals(frontWp.getOem()) && "1".equals(prWorkPlan.getOem())) {
return;
}
PlateAround pa = plateAroundService.getPrPlateAround(prWorkPlan.getId(), PlateAround.BEFORE_PLAN_OUT);
if (pa == null) {
if ("1".equals(frontWp.getOem())) {
//上序外协,本序如果可以接收,验证镀前出库记录
throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!");
} else if (!frontWp.getMakeTeam().equals(prWorkPlan.getMakeTeam())) {
//加工班组不同,验证镀前出库记录
throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!");
}
}
}
}

Loading…
Cancel
Save