pangyang 3 weeks ago
commit 882abd5de4
  1. 4
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java
  3. 59
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/AfterPlateInVO.java
  4. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/BeforePlatInVO.java
  5. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  6. 79
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
  7. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/StationController.java
  8. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IStationService.java
  9. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StationServiceImpl.java
  10. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java
  11. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/PlateAroundMapper.java
  12. 33
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/PlateAroundMapper.xml
  13. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java

@ -31,8 +31,8 @@ public interface LauncherConstant {
/**
* nacos dev 地址
*/
String NACOS_DEV_ADDR = "192.168.249.27:8848";
// String NACOS_DEV_ADDR = "127.0.0.1:8848";
// String NACOS_DEV_ADDR = "192.168.249.27:8848";
String NACOS_DEV_ADDR = "127.0.0.1:8848";
/**R
* nacos prod 地址

@ -11,4 +11,9 @@ public interface BizTypeConstant {
* 镀层物料添加量申报
*/
String GOODS_APPLY = "镀层物料添加量申报";
/**
* 工艺任务转派
*/
String CRAFT_TASK_REDEPLOY = "工艺任务转派";
}

@ -2,21 +2,66 @@ package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import java.util.Date;
/**
* 镀前镀后 视图实体类
*
* @author litao
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AfterPlateInVO extends WorkPlan {
public class AfterPlateInVO {
@Schema(description = "0-转工 1-入库")
@Schema(description = "移交类型:0-转工 1-入库")
private Integer hrTypeBool;
@Schema(description = "转交部门")
private String useDept;
@Schema(description = "下级B号")
private String roamNoNext;
@Schema(description = "流转编号")
private String roamNo;
@Schema(description = "作业计划id")
private Long wpId;
@Schema(description = "车间订单ID")
private Long woId;
@Schema(description = "车间订单号")
private String woCode;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "流程卡号")
private String cardNo;
@Schema(description = "入库班组/供应商id")
private Long teamId;
@Schema(description = "入库班组/供应商")
private String teamCode;
@Schema(description = "入库工序号")
private String processCode;
@Schema(description = "入库工序名称")
private String processName;
@Schema(description = "上序号")
private String nextProcessCode;
@Schema(description = "上序名称")
private String nextProcessName;
@Schema(description = "上序班组/供应商id")
private String nextTeamCode;
@Schema(description = "上序班组/供应商")
private Long nextTeamId;
@Schema(description = "入库数量")
private String inQuantity;
}

@ -13,6 +13,9 @@ import org.springblade.desk.produce.pojo.entity.WorkPlan;
@Data
public class BeforePlatInVO {
@Schema(description = "镀前入库id")
private Long id;
@Schema(description = "作业计划id")
private Long wpId;

@ -167,6 +167,9 @@
<if test="dsPart.partCode != null and dsPart.partCode != ''">
AND p.PART_CODE LIKE '%' || #{dsPart.partCode} || '%'
</if>
<if test="dsPart.partName != null and dsPart.partName != ''">
AND p.PART_NAME LIKE '%' || #{dsPart.partName} || '%'
</if>
<if test="dsPart.sinTerType != null and dsPart.sinTerType != ''">
AND p.SIN_TER_TYPE = #{dsPart.sinTerType}
</if>

@ -35,6 +35,8 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.desk.basic.service.ICraftAbilityService;
import org.springblade.desk.basic.service.impl.WorkCenterServiceImpl;
import org.springblade.desk.common.constant.BizTypeConstant;
import org.springblade.desk.common.service.IMesNotifyMessageService;
import org.springblade.desk.dashboard.constant.*;
import org.springblade.desk.dashboard.pojo.dto.DsTaskingDTO;
import org.springblade.desk.dashboard.pojo.entity.*;
@ -160,6 +162,9 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
@Autowired
IReviewSheetService reviewSheetService;
@Autowired
IMesNotifyMessageService mesNotifyMessageService;
@Override
public IPage<DsTaskingVO> selectAssignList(IPage<DsTaskingVO> page, DsTaskingVO dsTasking) {
List<DsTaskingVO> dsTaskingVOS = baseMapper.selectDsTaskingPage(page, dsTasking);
@ -614,21 +619,83 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
return false;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean taskRedeploy(DsTaskingDTO tasking) {
// 1. 参数校验
if (tasking == null || tasking.getId() == null) {
throw new ServiceException("任务ID不能为空");
}
if (StringUtils.isEmpty(tasking.getCraftMan())) {
throw new ServiceException("转派目标工艺员不能为空");
}
// 2. 查询原任务信息
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(tasking.getId());
// if(!TaskingConstant.TASK_STATUS_ALREADY.equals(dsTaskingEntity.getTaskStatus())){
// throw new ServiceException("任务状态: 非待接收 禁止转派");
if (dsTaskingEntity == null) {
throw new ServiceException("任务不存在");
}
// 3. 校验任务状态
// if (!TaskingConstant.TASK_STATUS_ALREADY.equals(dsTaskingEntity.getTaskStatus())) {
// throw new ServiceException("任务状态为非待接收状态,禁止转派");
// }
//工艺分派人
// 4. 获取当前操作人(工艺分派人
String assignMan = AuthUtil.getUser().getUserName();
//工艺员
String craftMan = userClient.userInfo(Func.toLong(tasking.getCraftMan())).getData().getUser().getName();
// 5. 校验目标工艺员是否存在
UserInfo craftUserInfo = userClient.userInfo(Func.toLong(tasking.getCraftMan())).getData();
if (craftUserInfo == null || craftUserInfo.getUser() == null) {
throw new ServiceException("目标工艺员不存在");
}
String craftMan = craftUserInfo.getUser().getName();
Long craftManId = craftUserInfo.getUser().getId();
// 6. 记录转派前的信息(便于日志记录)
String oldCraftMan = dsTaskingEntity.getCraftMan();
// 7. 更新任务信息
dsTaskingEntity.setAssignMan(assignMan);
dsTaskingEntity.setCraftMan(craftMan);
dsTaskingEntity.setAssignTime(new Date());
taskingMapper.updateById(dsTaskingEntity);
int updateResult = taskingMapper.updateById(dsTaskingEntity);
if (updateResult != 1) {
throw new ServiceException("任务转派失败,请重试");
}
// 8. 发送转派消息通知
// 建议同时通知原工艺员和现工艺员
try {
// 通知新工艺员
mesNotifyMessageService.saveMsg(
BizTypeConstant.CRAFT_TASK_REDEPLOY,
"您有新的任务转派,请及时处理",
String.valueOf(tasking.getId()),
craftManId
);
// 可选:通知原工艺员任务已被转派
if (!StringUtils.isEmpty(oldCraftMan)) {
mesNotifyMessageService.saveMsg(
BizTypeConstant.CRAFT_TASK_REDEPLOY,
"您的任务已被转派",
String.valueOf(tasking.getId()),
Long.valueOf(oldCraftMan)
);
}
// 可选:记录操作日志
log.info("任务转派成功,任务ID:{},原工艺员:{},新工艺员:{},操作人:{}",
tasking.getId(), oldCraftMan, craftMan, assignMan);
} catch (Exception e) {
log.error("发送转派消息失败,任务ID:{}", tasking.getId(), e);
// 消息发送失败不影响主流程,但需要记录日志
}
return true;
}

@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import oracle.jdbc.proxy.annotation.Post;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.desk.dashboard.pojo.entity.BsCraftAbilityEntity;
import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO;
import org.springblade.desk.logistics.pojo.entity.Station;
import org.springblade.desk.logistics.pojo.vo.StationVO;
@ -61,6 +63,16 @@ public class StationController {
return R.data(pages);
}
/**
* 站点 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 1)
@Operation(summary = "修改", description = "传入station")
public R update(@Valid @RequestBody Station station) {
return R.status(stationService.updateStation(station));
}
}

@ -66,4 +66,11 @@ public interface IStationService extends BaseService<Station> {
* @return
*/
IPage<StationVO> getStationList(IPage<StationVO> page, Station station);
/**
* 设置 空闲 占用
* @param station
* @return
*/
boolean updateStation(Station station);
}

@ -28,6 +28,7 @@ package org.springblade.desk.logistics.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
@ -101,4 +102,20 @@ public class StationServiceImpl extends BaseServiceImpl<StationMapper, Station>
return page.setRecords(stationList);
}
@Override
public boolean updateStation(Station station) {
Station stationVO = this.getById(station.getId());
if(null == stationVO){
throw new ServiceException("站点不存在");
}
boolean update = this.updateById(station);
if(!update){
throw new ServiceException("站点修改失败");
}
return true;
}
}

@ -424,6 +424,20 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec
log.info("任务{}不需要送到库位,直接完成", taskCode);
log.info("终点位置为站点信息:{},直接完成", taskExecuteRecord.getEndPos());
Station station1 = stationService.getByStationCode(taskExecuteRecord.getStartPos());
// 起点位置为站点 将站点状态改为空闲
if(null != station1){
station1.setStationStatus(Station.STATUS_FREE);
boolean update = stationService.updateById(station1);
if (update) {
log.info("站点释放成功:{}", station1.getStationCode());
return true;
} else {
log.error("站点释放失败:{}", station1.getStationCode());
return false;
}
}
// 直接更新任务状态为完成
task.setTaskStatus(Task.STATUS_FINISHED);
boolean taskUpdate = taskService.updateById(task);

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.dto.PlateAroundDto;
import org.springblade.desk.produce.pojo.entity.PlateAround;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.AfterPlateInVO;
import org.springblade.desk.produce.pojo.vo.BeforePlatInVO;
import org.springblade.desk.produce.pojo.vo.PlateAroundVO;
@ -23,7 +24,7 @@ public interface PlateAroundMapper extends BaseMapper<PlateAround> {
BeforePlatInVO getBeforePlatOutCardNo(Long id, List<Long> tsIds, Long userId);
WorkPlan getAfterPlatInCardNo(Long id, List<Long> tsIds);
AfterPlateInVO getAfterPlatInCardNo(Long id, List<Long> tsIds);
List<PlateAround> listByWoCardNo(String cardNo);
}

@ -97,6 +97,7 @@
</select>
<select id="getBeforePlatOutCardNo" resultType="org.springblade.desk.produce.pojo.vo.BeforePlatInVO">
SELECT
pa.ID AS id,
a.ID AS wpId,
c.WO_CODE AS woCode,
c.BATCH_NO AS batchNo,
@ -135,13 +136,37 @@
and c.ID = #{id}
</where>
</select>
<select id="getAfterPlatInCardNo" resultType="org.springblade.desk.produce.pojo.entity.WorkPlan">
SELECT a.* FROM MES_WORK_PLAN a
INNER JOIN MES_WORK_PLAN b ON a.NEXT_WP_ID = b.ID
<select id="getAfterPlatInCardNo" resultType="org.springblade.desk.produce.pojo.vo.AfterPlateInVO">
SELECT
yo.USE_DEPT AS useDept,
yo.ROAM_NO AS roamNo,
yo.ROAM_NO_NEXT AS roamNoNext,
a.id AS wpId,
c.id AS woId,
c.wo_code AS woCode,
c.BATCH_NO AS batchNo,
c.CARD_NO AS cardNo,
c.MAKE_QTY AS inQuantity,
a.MAKE_TEAM AS teamId,
ts.TS_NAME AS teamCode,
a.ORDERS AS processCode,
ps.NAME AS processName,
b.MAKE_TEAM AS nextTeamId,
ts2.TS_NAME AS nextTeamCode,
b.ORDERS AS nextProcessCode,
ps2.NAME AS nextProcessName
FROM
MES_WORK_PLAN a
INNER JOIN MES_WORK_PLAN b ON a.FRONT_WP_ID = b.ID
INNER JOIN MES_WORK_ORDER c ON a.WO_ID = c.ID
INNER JOIN MES_YIELD_ORDER yo ON c.YO_ID = yo.ID
LEFT JOIN MES_PLATE_AROUND d ON a.ID = d.WP_ID
LEFT JOIN BS_TEAM_SET ts ON a.MAKE_TEAM = ts.id
LEFT JOIN BS_PROCESS_SET ps ON a.pps_id = ps.id
LEFT JOIN BS_TEAM_SET ts2 ON b.MAKE_TEAM = ts2.id
LEFT JOIN BS_PROCESS_SET ps2 ON b.pps_id = ps2.id
<where>
where a.STATUS = 2 and c.ID = #{id} and a.next_wp_id is null and a.make_team in
a.STATUS = 2 and c.ID = #{id} and a.next_wp_id is null and a.make_team in
<foreach collection="tsIds" item="tsId" open="(" separator="," close=")">
#{tsId}
</foreach>

@ -122,15 +122,13 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
if (wo == null) {
throw new ServiceException("车间订单不存在!");
}
WorkPlan wp = baseMapper.getAfterPlatInCardNo(wo.getId(), getTsIds());
if (wp == null) {
AfterPlateInVO afterPlateInVO = baseMapper.getAfterPlatInCardNo(wo.getId(), getTsIds());
if (afterPlateInVO == null) {
throw new ServiceException("未找到镀后入库工序,无法入库!");
}
//判断是转工还是入库
WorkOrder workOrder = workOrderService.getById(wp.getWoId());
WorkOrder workOrder = workOrderService.getById(afterPlateInVO.getWoId());
YieldOrder pjYieldOrder = yieldOrderService.getById(workOrder.getYoId());
AfterPlateInVO afterPlateInVO = new AfterPlateInVO();
BeanUtils.copyProperties(wp, afterPlateInVO);
//返工的订单判定入库类型特殊处理
if (StringUtils.isNotBlank(workOrder.getReworkMemo()) && "1".equals(workOrder.getReInStore())) {
if (workOrder.getReworkMemo().contains("转") && workOrder.getReworkMemo().contains("现场")
@ -147,13 +145,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
afterPlateInVO.setHrTypeBool(1);
}
}
//zxh 20241213 增加为pjyieldorder.roamname赋值
// pjYieldOrder.setRoamName(dsPartService.findNameByRoamNo(pjYieldOrder.getPartCode(), pjYieldOrder.getRoamNo()));
//zxh 20250509 增加为pjyieldorder.nextroamname赋值
// if (pjYieldOrder.getNextRoam()!=null) {
// pjYieldOrder.setNextRoamName(dsPartService.findNameByRoamNo(pjYieldOrder.getPartCode(), pjYieldOrder.getNextRoam()));
// }
long count = this.count(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, afterPlateInVO.getId()).eq(PlateAround::getPaType, PlateAround.AFTER_PLAN_IN));
long count = this.count(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, afterPlateInVO.getWpId()).eq(PlateAround::getPaType, PlateAround.AFTER_PLAN_IN));
if (count > 0) {
throw new ServiceException("此订单已存在镀后入库记录!");
}
@ -275,7 +267,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
}
private void savePlateAround(BladeUser user, PlateAround plateAround, Short paType, int next, Boolean aTure) {
PlateAround newPa = null;
PlateAround newPa = new PlateAround();
PlateAround oldPa;
Date date = new Date();
WorkPlan wp = workPlanMapper.selectById(plateAround.getWpId());
@ -283,7 +275,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
plateAround.setPaType(paType);
if (aTure) {
plateAround.setPaCode(this.nextCode(paType, next));
plateAround.setMakeTime(new Date());
plateAround.setMakeTime(date);
plateAround.setMakeMan(user.getUserId());
}
this.updatePrPlateAround(plateAround);

Loading…
Cancel
Save