liweidong
liweidong-hj 1 month ago
commit 40180975a9
  1. 148
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java
  2. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApplyDetail.java
  3. 22
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java
  4. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java
  5. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/request/PlateGoodsApplySave.java
  6. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/PlateGoodsApplyVo.java
  7. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java
  8. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java
  9. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java
  10. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PipelineController.java
  11. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/TaskMapper.xml
  12. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java
  13. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsApplyController.java
  14. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyDetailMapper.java
  15. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyDetailMapper.xml
  16. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml
  17. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IPlateGoodsApplyDetailService.java
  18. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IPlateGoodsApplyService.java
  19. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java
  20. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyDetailServiceImpl.java
  21. 83
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java
  22. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java
  23. 78
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java
  24. 133
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/IotHardnessController.java
  25. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java
  26. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml
  27. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml
  28. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IWorkPlanItemThicknessService.java
  29. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  30. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankServiceImpl.java
  31. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java
  32. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java
  33. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemThicknessServiceImpl.java

@ -2,6 +2,7 @@ package org.springblade.desk.order.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
@ -20,159 +21,74 @@ public class PlateGoodsApply extends BaseEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 审批人
*/
@TableField(value = "APPROVAL_MAN")
private Long approvalMan;
/**
* 审批时间
*/
@TableField(value = "APPROVAL_TIME")
private Date approvalTime;
/**
* 审批状态
*/
@TableField(value = "APPROVAL_STATUS")
private Integer approvalStatus;
/**
* 审批结果
*/
@TableField(value = "APPROVAL_MEMO")
private String approvalMemo;
/**
* 采购Id
*/
@TableField(value = "BO_ID")
private Long boId;
/**
* 领料单Id
*/
@TableField(value = "BR_ID")
private Long brId;
/**
*
*/
@TableField(value = "AC_ID")
private Long acId;
/**
* 镀层物料额外需求上报ID
*/
@TableField(value = "PGR_ID")
private Long pgrId;
/**
* 需求单号
*/
@TableField(value = "DEMAND_CODE")
private String demandCode;
/**
* 作业中心
*/
@Schema(description = "作业中心ID")
@TableField(value = "WC_ID")
private Long wcId;
/**
* 镀层物料
*/
@Schema(description = "镀层物料编码")
@TableField(value = "GOODS_CODE")
private String goodsCode;
/**
* 镀层物料
*/
@Schema(description = "镀层物料名称")
@TableField(value = "GOODS_NAME")
private String goodsName;
/**
* 物料需求
*/
@TableField(value = "GOODS_DEMAND")
private BigDecimal goodsDemand;
/**
* 上报银钾
*/
@TableField(value = "SILVER_POTASSIUM")
private BigDecimal silverPotassium;
/**
* 银钾系数
*/
@TableField(value = "COEFFICIENT")
private BigDecimal coefficient;
/**
* 已申报定额
*/
@TableField(value = "DECLARED_QUOTA")
private BigDecimal declaredQuota;
/**
* 已申报银钾
*/
@TableField(value = "DECLARED_SILVER")
private BigDecimal declaredSilver;
/**
* 申报状态
*/
@TableField(value = "DECLARED_STATUS")
private Long declaredStatus;
/**
* 物料采购id
*/
@TableField(value = "GOODS_BO_ID")
private Long goodsBoId;
/**
* 银钾采购id
* 审批人
*/
@TableField(value = "COEFFICIENT_BO_ID")
private Long coefficientBoId;
@Schema(description = "审批人")
@TableField(value = "APPROVAL_MAN")
private Long approvalMan;
/**
* 剩余量
* 审批时间
*/
@TableField(value = "SURPLUS")
private BigDecimal surplus;
@Schema(description = "审批时间")
@TableField(value = "APPROVAL_TIME")
private Date approvalTime;
/**
* 上报银钾剩余量
* 审批状态
*/
@TableField(value = "SILVER_POTASSIUM_RESIDUE")
private BigDecimal silverPotassiumResidue;
@Schema(description = "审批状态")
@TableField(value = "APPROVAL_STATUS")
private Integer approvalStatus;
/**
* 本次添加涉及单号
* 审批结果
*/
@TableField(value = "INVOLVING_RECORD_CODE")
private String involvingRecordCode;
@Schema(description = "审批结果")
@TableField(value = "APPROVAL_MEMO")
private String approvalMemo;
/**
* 本次剩余单号余
* 本次申报添加量 = 班组预添加量
*/
@TableField(value = "INVOLVING_SURPLUS")
private String involvingSurplus;
@Schema(description = "本次申报添加量")
@TableField(value = "GOODS_ADD_TOTAL")
private BigDecimal goodsAddTotal;
/**
* 本次关联订单数量
* 本次申报物料需求单总物料需求剩余量 = 可使用定额
*/
@TableField(value = "DETAIL_ORDER_NUM")
private Integer detailOrderNum;
@Schema(description = "本次申报总物料需求剩余量")
@TableField(value = "GOODS_DEMAND_TOTAL")
private BigDecimal goodsDemandTotal;
/**
* 涉及订单要添加的数量
* 本次申报物料需求单已申报定额总量(已添加总量 = 累计结余
*/
@TableField(value = "CODE_NUM")
private String codeNum;
@Schema(description = "已申报定额总量")
@TableField(value = "DECLARED_QUOTA_TOTAL")
private BigDecimal declaredQuotaTotal;
}

@ -25,9 +25,9 @@ public class PlateGoodsApplyDetail extends BaseEntity {
private Long pgaId;
/**
* 生产订单ID
* 镀层物料需求ID
*/
@TableField(value = "YO_ID")
private Long yoId;
@TableField(value = "PGR_ID")
private Long pgrId;
}

@ -56,6 +56,12 @@ public class PlateGoodsRecord extends BaseEntity {
@TableField(value = "SILVER_POTASSIUM")
private BigDecimal silverPotassium;
/**
* 上报银钾剩余量
*/
@TableField(value = "SILVER_POTASSIUM_RESIDUE")
private Double silverPotassiumResidue;
/**
* 银钾系数
*/
@ -89,13 +95,13 @@ public class PlateGoodsRecord extends BaseEntity {
private String approvalMemo;
/**
* 已申报定额
* 已申报定额已添加量
*/
@TableField(value = "DECLARED_QUOTA")
private BigDecimal declaredQuota;
/**
* 已申报银钾
* 已申报银钾定额
*/
@TableField(value = "DECLARED_SILVER")
private BigDecimal declaredSilver;
@ -124,18 +130,6 @@ public class PlateGoodsRecord extends BaseEntity {
@TableField(value = "SURPLUS")
private BigDecimal surplus;
/**
* 上报银钾剩余量
*/
@TableField(value = "SILVER_POTASSIUM_RESIDUE")
private BigDecimal silverPotassiumResidue;
/**
* 本次添加涉及单号
*/
@TableField(value = "INVOLVING_RECORD_CODE")
private String involvingRecordCode;
/**
* 本次关联订单数量
*/

@ -160,7 +160,8 @@ public class YieldOrder extends BaseEntity {
* todo 只有字段没有动 mapper
* 零件号版本号
*/
@TableField(value = "PART_VERSION", exist = false)
// @TableField(value = "PART_VERSION", exist = false)
@TableField(value = "PART_VERSION")
private String partVersion;
/**
@ -457,4 +458,5 @@ public class YieldOrder extends BaseEntity {
*/
@TableField(value = "ACTUAL_WEIGHING")
private BigDecimal actualWeighing;
}

@ -2,6 +2,7 @@ package org.springblade.desk.order.pojo.request;
import lombok.Data;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import java.util.List;
@ -12,6 +13,11 @@ import java.util.List;
*/
@Data
public class PlateGoodsApplySave {
/**
* 物料需求申报
*/
PlateGoodsApply apply;
/**
* 化验含量明细
*/

@ -49,5 +49,5 @@ public class PlateGoodsApplyVo extends PlateGoodsApply {
*/
String approvalStatusName;
List<YieldOrderVo> yieldOrderList;
List<PlateGoodsRecordVo> recordVos;
}

@ -377,7 +377,8 @@ public class LiquidTank extends BaseEntity {
* 上次化验日期
*/
@Schema(description = "上次化验日期")
private LocalDateTime lastTest;
// private LocalDateTime lastTest;
private LocalDate lastTest;
/**
* 实测温度
*/

@ -107,4 +107,8 @@ public class InspectionTaskListVO extends InspectionTask {
// todo:
@Schema(description = "材料")
private String material = "铜";
//零件号版本号
private String partVersion;
//工单id
private Long yoId;
}

@ -1,5 +1,6 @@
package org.springblade.desk.device.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -65,6 +66,17 @@ public class MeasurementRecordsController extends BladeController {
return R.data(pages);
}
//查询合格的量具
@GetMapping("/listResult")
public R<List<MeasurementRecordsVO>> listResult() {
LambdaQueryWrapper<MeasurementRecordsEntity> query = Wrappers.<MeasurementRecordsEntity>lambdaQuery()
.eq(MeasurementRecordsEntity::getCheckResult, 1);
List<MeasurementRecordsEntity> list = mesMeasurementRecordsService.list(query);
List<MeasurementRecordsVO> vos = MeasurementRecordsWrapper.build().listVO(list);
return R.data(vos);
}
/**
* 量具计量记录 新增
*/

@ -79,18 +79,18 @@ public class PipelineController extends BladeController {
throw new ServiceException("箱条码不能为空");
}
BigDecimal estimatedWeight = pipelineService.getMaterialBoxWeight(boxBarcode);
ReturnToWarehouseDto returnToWarehouseDto = new ReturnToWarehouseDto();
returnToWarehouseDto.setBoxBarcode(boxBarcode);
R wcIdR = iOrderBoxService.getWcId(boxBarcode);
if (!wcIdR.isSuccess()) {
return wcIdR;
}
if (!wcIdR.isSuccess()) {
return wcIdR;
}
returnToWarehouseDto.setEndWcId((Long) wcIdR.getData());
R taskR = iOrderBoxService.saveTask(returnToWarehouseDto, false);
if (!taskR.isSuccess()) {
return taskR;
}
if (!taskR.isSuccess()) {
return taskR;
}
BigDecimal estimatedWeight = pipelineService.getMaterialBoxWeight(boxBarcode);
return R.data(estimatedWeight);
}

@ -10,7 +10,7 @@
FROM LM_TASK
WHERE IS_DELETED = 0
AND BOX_BARCODE = #{boxBarcode}
AND TASK_STATUS NOT IN (2, 9);
AND TASK_STATUS NOT IN (2,4,5);
</select>
<select id="selectPage" resultType="org.springblade.desk.logistics.pojo.vo.TaskVO">

@ -208,8 +208,9 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
*/
private BigDecimal getWeightByOrderIdList(List<Long> orderIdList) {
// 查询订单对应的工单列表
log.info("查询订单list:{}",orderIdList);
List<YieldOrder> orderList = iYieldOrderService.list(new LambdaQueryWrapper<YieldOrder>().in(YieldOrder::getId, orderIdList));
log.info("查询订单orderList:{}",orderIdList);
// 流式累加实际称重值(过滤null,初始值为0)
return orderList.stream()
.map(YieldOrder::getActualWeighing)
@ -263,7 +264,7 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
}
String stationCode="";
String endStationCode="";
if (!returnToWarehouseDto.getStartStationCode().isEmpty()) {
if (returnToWarehouseDto.getStartStationCode()!=null&&!returnToWarehouseDto.getStartStationCode().isEmpty()) {
List<Station> stationList = iStationService.list(new LambdaQueryWrapper<Station>().eq(Station::getStationCode, returnToWarehouseDto.getStartStationCode()));
if (stationList.isEmpty()) {
return R.fail("站点编码不存在");
@ -277,7 +278,7 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
}
Task task = new Task();
//判断箱条码是否为空,如果不为空判断是否在使用
if (!returnToWarehouseDto.getBoxBarcode().isEmpty()) {
if (returnToWarehouseDto.getBoxBarcode()!=null&&!returnToWarehouseDto.getBoxBarcode().isEmpty()) {
R taskCheckResult = checkBoxBarcodeRunningTask(returnToWarehouseDto.getBoxBarcode());
if (!taskCheckResult.isSuccess()) {
return taskCheckResult;
@ -299,17 +300,24 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
// 6. 完善任务信息并保存
task = (Task) locationResult.getData();
log.info("task:"+task.toString());
if (task.getStationId()==null&&agvSend) {
List<Location> locationList = iLocationService.list(new LambdaQueryWrapper<Location>().eq(Location::getId, task.getLocationId()));
if (!CollectionUtils.isEmpty(locationList)) {
Location location = locationList.get(0);
location.setLocationStatus(Location.STATUS_FREE);
iLocationService.updateById(location);
if (task.getStationId()==null) {
if (agvSend) {
List<Location> locationList = iLocationService.list(new LambdaQueryWrapper<Location>().eq(Location::getId, task.getLocationId()));
if (!CollectionUtils.isEmpty(locationList)) {
Location location = locationList.get(0);
location.setLocationStatus(Location.STATUS_FREE);
iLocationService.updateById(location);
}
return R.fail("结束站点被占用");
}
return R.fail("结束站点被占用");
}else {
endStationCode=iStationService.getById(task.getStationId()).getStationCode();
Station station = iStationService.getById(task.getStationId());
if (station==null) {
return R.fail("结束站点不存在");
}
endStationCode=station.getStationCode();
}
}
task.setTaskStatus(Task.STATUS_START); // 设置任务初始状态为启动
@ -317,7 +325,8 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
task.setCreateUser(AuthUtil.getUserId());
if (!returnToWarehouseDto.getBoxBarcode().isEmpty()) {
List<OrderBind> orderBindList = iOrderBindService.list(new LambdaQueryWrapper<OrderBind>().eq(OrderBind::getBoxBarcode, returnToWarehouseDto.getBoxBarcode()).eq(false, OrderBind::getBindingStatus, OrderBind.STATUS_UNBINDED));
if (orderBindList.isEmpty()) {
log.info("需要承重的list:"+orderBindList);
if (orderBindList==null||orderBindList.isEmpty()) {
task.setWeight(new BigDecimal(0));
}else {
List<Long> orderIdsList = orderBindList.stream()

@ -16,12 +16,13 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.pojo.request.PlateGoodsApplySave;
import org.springblade.desk.order.pojo.vo.PlateGoodsApplyVo;
import org.springblade.desk.order.service.IPlateGoodsApplyDetailService;
import org.springblade.desk.order.service.IPlateGoodsApplyService;
import org.springblade.desk.order.wrapper.PlateGoodsApplyWrapper;
import org.springblade.desk.order.wrapper.YieldOrderWrapper;
import org.springblade.desk.order.wrapper.PlateGoodsRecordWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -39,6 +40,7 @@ import java.util.List;
public class PlateGoodsApplyController extends BladeController {
private final IPlateGoodsApplyService plateGoodsApplyService;
private final IPlateGoodsApplyDetailService plateGoodsApplyDetailService;
/**
* 分页
@ -60,18 +62,18 @@ public class PlateGoodsApplyController extends BladeController {
@GetMapping("/detail")
@Operation(summary = "详情", description = "")
public R<PlateGoodsApplyVo> detail(String id) {
PlateGoodsApply apply = plateGoodsApplyService.getById(id);
PlateGoodsApply apply = plateGoodsApplyService.getById(id);
PlateGoodsApplyVo vo = PlateGoodsApplyWrapper.build().entityVO(apply);
// 查询关联订单列表
List<YieldOrder> yieldOrderList = plateGoodsApplyService.listDetailYieldOrder(apply.getId());
if(Func.isNotEmpty(yieldOrderList)) {
vo.setYieldOrderList(YieldOrderWrapper.build().listVO(yieldOrderList));
List<PlateGoodsRecord> recordList = plateGoodsApplyDetailService.listRecordByApplyId(apply.getId());
if (Func.isNotEmpty(recordList)) {
vo.setRecordVos(PlateGoodsRecordWrapper.build().listVO(recordList));
}
return R.data(vo);
}
}
/**
* 新增
@ -79,9 +81,10 @@ public class PlateGoodsApplyController extends BladeController {
@PostMapping("/save")
@Operation(summary = "新增", description = "")
public R save(@Valid @RequestBody PlateGoodsApplySave saveData) {
PlateGoodsApply apply = saveData.getApply();
List<AssayContentDetail> assayContentDetailList = saveData.getAssayContentDetailList();
List<Long> recordIdList = saveData.getRecordIdList();
plateGoodsApplyService.save(assayContentDetailList, recordIdList);
plateGoodsApplyService.save(apply, assayContentDetailList, recordIdList);
return R.status(true);
}

@ -3,6 +3,7 @@ package org.springblade.desk.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import java.util.List;
@ -22,4 +23,12 @@ public interface PlateGoodsApplyDetailMapper extends BaseMapper<PlateGoodsApplyD
* @return
*/
List<PlateGoodsApplyDetail> selectPage(IPage page, PlateGoodsApplyDetail entity);
/**
* 根据镀层需求上报查询明细列表
*
* @param applyId
* @return
*/
List<PlateGoodsRecord> listRecordByApplyId(Long applyId);
}

@ -6,4 +6,11 @@
<select id = "selectPage" resultType = "org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail">
</select>
<select id = "listRecordByApplyId" resultType="org.springblade.desk.order.pojo.entity.PlateGoodsRecord">
select pgr.*
from MES_PLATE_GOODS_APPLY_DETAIL pgad
left join MES_PLATE_GOODS_RECORD pgr on pgad.PGR_ID = pgr.id
where pgad.PGA_ID = #{applyId}
</select>
</mapper>

@ -5,18 +5,16 @@
<mapper namespace="org.springblade.desk.order.mapper.PlateGoodsApplyMapper">
<sql id = "baseCommonFields">
ID, TENANT_ID, CREATE_USER, CREATE_TIME, CREATE_DEPT, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, BO_ID, BR_ID, AC_ID, PGR_ID, CODE_NUM,
WC_ID, GOODS_CODE, GOODS_DEMAND, SILVER_POTASSIUM, COEFFICIENT, DECLARED_QUOTA, DECLARED_SILVER, DECLARED_STATUS,
GOODS_BO_ID, COEFFICIENT_BO_ID, PGR_CODE, SURPLUS, SILVER_POTASSIUM_RESIDUE, DEMAND_CODE, INVOLVING_RECORD_CODE,
NOT_ADD_VAL, DETAIL_ORDER_NUM, GOODS_NAME
APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, WC_ID, GOODS_CODE, GOODS_DEMAND, GOODS_NAME,
GOODS_ADD_TOTAL, GOODS_DEMAND_TOTAL, DECLARED_QUOTA_TOTAL
</sql>
<select id = "selectPage" resultType = "org.springblade.desk.order.pojo.entity.PlateGoodsApply">
SELECT <include refid = "baseCommonFields" />
FROM MES_PLATE_GOODS_APPLY
WHERE IS_DELETED = 0
<if test = "entity.demandCode != null and entity.demandCode != ''">
AND DEMAND_CODE LIKE CONCAT('%', CONCAT(#{entity.demandCode}, '%'))
<if test = "entity.goodsCode != null and entity.goodsCode != ''">
AND GOODS_CODE LIKE CONCAT('%', CONCAT(#{entity.goodsCode}, '%'))
</if>
<if test = "entity.wcId != null and entity.wcId != ''">
AND WC_ID = #{entity.wcId}

@ -3,6 +3,7 @@ package org.springblade.desk.order.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import java.util.List;
@ -24,8 +25,15 @@ public interface IPlateGoodsApplyDetailService extends BaseService<PlateGoodsApp
/**
* 根据镀层需求上报查询明细列表
*
* @param recordId
* @param applyId
* @return
*/
List<PlateGoodsApplyDetail> listByApplyId(Long recordId);
List<PlateGoodsApplyDetail> listByApplyId(Long applyId);
/**
* 根据镀层需求上报查询明细列表
*
* @param applyId
* @return
*/
List<PlateGoodsRecord> listRecordByApplyId(Long applyId);
}

@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import java.util.List;
@ -26,11 +25,12 @@ public interface IPlateGoodsApplyService extends BaseService<PlateGoodsApply> {
/**
* 保存
*
* @param apply
* @param detailList
* @param recordIdList
* @return
*/
boolean save(List<AssayContentDetail> detailList, List<Long> recordIdList);
boolean save(PlateGoodsApply apply, List<AssayContentDetail> detailList, List<Long> recordIdList);
/**
* 批量审核
@ -42,11 +42,4 @@ public interface IPlateGoodsApplyService extends BaseService<PlateGoodsApply> {
*/
boolean confirmBatch(List<Long> ids, Integer approvalStatus, String approvalMemo);
/**
* 获取详情关联的生产订单列表
*
* @param id
* @return
*/
List<YieldOrder> listDetailYieldOrder(Long id);
}

@ -3,6 +3,8 @@ package org.springblade.desk.order.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.order.mapper.MoldApplyMapper;
import org.springblade.desk.order.pojo.entity.MoldApply;
import org.springblade.desk.order.pojo.enums.MoldApplyEnum;
@ -34,7 +36,10 @@ public class MoldApplyServiceImpl extends BaseServiceImpl<MoldApplyMapper, MoldA
@Override
public boolean saveByDemand(MoldApply moldApply) {
long curUser = AuthUtil.getUserId();
moldApply.setStatus(MoldApplyEnum.STATUS_CREATE.getCode());
moldApply.setCreateUser(curUser);
moldApply.setCreateTime(DateUtil.now());
return save(moldApply);
}

@ -7,6 +7,7 @@ import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.order.mapper.PlateGoodsApplyDetailMapper;
import org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.service.IPlateGoodsApplyDetailService;
import org.springframework.stereotype.Service;
@ -27,11 +28,16 @@ public class PlateGoodsApplyDetailServiceImpl extends BaseServiceImpl<PlateGoods
}
@Override
public List<PlateGoodsApplyDetail> listByApplyId(Long recordId) {
public List<PlateGoodsApplyDetail> listByApplyId(Long applyId) {
LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(PlateGoodsApplyDetail.class)
.eq(PlateGoodsApplyDetail::getIsDeleted, CommonConstant.DELETE_FALSE)
.eq(PlateGoodsApplyDetail::getPgaId, recordId);
.eq(PlateGoodsApplyDetail::getIsDeleted, CommonConstant.DELETE_FALSE)
.eq(PlateGoodsApplyDetail::getPgaId, applyId);
List<PlateGoodsApplyDetail> dataList = baseMapper.selectList(wrapper);
return dataList;
}
@Override
public List<PlateGoodsRecord> listRecordByApplyId(Long applyId) {
return baseMapper.listRecordByApplyId(applyId);
}
}

@ -1,18 +1,23 @@
package org.springblade.desk.order.service.impl;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.mapper.PlateGoodsApplyMapper;
import org.springblade.desk.order.pojo.entity.*;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.pojo.enums.AssayContentEnum;
import org.springblade.desk.order.pojo.enums.PlateGoodsEnum;
import org.springblade.desk.order.service.*;
import org.springblade.desk.order.service.IAssayContentDetailService;
import org.springblade.desk.order.service.IAssayContentService;
import org.springblade.desk.order.service.IPlateGoodsApplyService;
import org.springblade.desk.order.service.IPlateGoodsRecordService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -60,11 +65,24 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
@Transactional(rollbackFor = Exception.class)
@Override
public boolean save(List<AssayContentDetail> assayContentDetailList, List<Long> recordIdList) {
public boolean save(PlateGoodsApply apply, List<AssayContentDetail> assayContentDetailList, List<Long> recordIdList) {
// 1. 更新化验记录相关数据
if (Func.isEmpty(assayContentDetailList)) {
return false;
}
// 初始化物料需求申报的部分数据
apply.setCreateTime(DateTime.now());
apply.setCreateUser(AuthUtil.getUserId());
apply.setUpdateTime(DateTime.now());
apply.setUpdateUser(AuthUtil.getUserId());
apply.setStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
apply.setApprovalStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
// 本次申报物料需求单总物料需求剩余量
BigDecimal goodsDemandTotal = BigDecimal.ZERO;
// 本次申报物料需求单已添加量
BigDecimal declaredQuotaTotal = BigDecimal.ZERO;
// 1.1 获取化验记录ID,更新化验记录状态为已使用
Long assayContentId = assayContentDetailList.get(0).getAcId();
assayContentService.changeStatus(Arrays.asList(assayContentId), AssayContentEnum.STATUS_USED.getCode());
@ -72,59 +90,38 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
// 1.2 报错化验记录明细
assayContentDetailService.updateBatchById(assayContentDetailList);
// 2. 计算本次总添加量
// 2. 计算本次总添加量(班组添加量)
BigDecimal addVal = assayContentDetailList.stream()
.map(detail -> detail.getAddVal() == null ? BigDecimal.ZERO : detail.getAddVal())
.reduce(BigDecimal.ZERO, BigDecimal::add);
apply.setGoodsAddTotal(addVal);
// 3. 更新需求单的相关数据
// 3.1 根据id查询需求单
List<PlateGoodsRecord> recordList = goodsRecordService.listByIds(recordIdList);
List<PlateGoodsApply> applyList = new ArrayList<>();
// 3.2 将需求单按照创建时间正序排列,
recordList = recordList.stream()
.sorted(Comparator.comparing(PlateGoodsRecord::getCreateTime, Comparator.nullsLast(Date::compareTo)))
.collect(Collectors.toList());
// 计算本次申请总添加量
BigDecimal applyTotalVal = recordList.stream()
.map(detail -> detail.getSurplus() == null ? BigDecimal.ZERO : detail.getSurplus())
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 本次剩余单号余量, 最小为0
BigDecimal notAddVal = applyTotalVal.subtract(addVal);
notAddVal = notAddVal.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : notAddVal;
// 缓存要添加的订单列表
List<PlateGoodsRecord> addRecordList = new ArrayList<>();
// 3.3. 按照创建先后顺序补充需求单的物料需求数量
for (PlateGoodsRecord plateGoodsRecord : recordList) {
// 对申请的数据进行计算
goodsDemandTotal = goodsDemandTotal.add(plateGoodsRecord.getSurplus());
declaredQuotaTotal = declaredQuotaTotal.add(plateGoodsRecord.getGoodsDemand().subtract(plateGoodsRecord.getSurplus()));
// 获取需求单剩余添加量
BigDecimal surplus = plateGoodsRecord.getSurplus();
PlateGoodsApply apply = BeanUtil.copyProperties(plateGoodsRecord, PlateGoodsApply.class);
apply.setId(null);
apply.setCreateTime(null);
apply.setCreateUser(AuthUtil.getUserId());
apply.setUpdateTime(null);
apply.setUpdateUser(AuthUtil.getUserId());
apply.setStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
apply.setApprovalMan(null);
apply.setApprovalStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
apply.setApprovalTime(null);
apply.setApprovalMemo(null);
if (addVal.compareTo(surplus) >= 0) {
// 若本次添加量,满足该订单后,还有剩余, 记录此订单,更新剩余添加量后,继续循环
plateGoodsRecord.setSurplus(BigDecimal.ZERO);
plateGoodsRecord.setStatus(PlateGoodsEnum.STATUS_DONE.getCode());
addRecordList.add(plateGoodsRecord);
apply.setPgrId(plateGoodsRecord.getId());
apply.setSurplus(BigDecimal.ZERO);
applyList.add(apply);
addVal = addVal.subtract(surplus);
if (BigDecimal.ZERO.equals(addVal)) {
break;
@ -134,35 +131,17 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
plateGoodsRecord.setSurplus(surplus.subtract(addVal));
plateGoodsRecord.setStatus(PlateGoodsEnum.STATUS_USING.getCode());
addRecordList.add(plateGoodsRecord);
apply.setPgrId(plateGoodsRecord.getId());
apply.setSurplus(surplus.subtract(addVal));
applyList.add(apply);
break;
}
}
// 4. 记录添加的需求单信息; 关联单号, 本次剩余单号余量
String addAbortRecordNo = addRecordList.stream()
.map(PlateGoodsRecord::getDemandCode)
.filter(code -> code != null && !code.trim().isEmpty())
.collect(Collectors.joining(","));
apply.setGoodsDemandTotal(goodsDemandTotal);
apply.setDeclaredQuotaTotal(declaredQuotaTotal);
for (PlateGoodsRecord plateGoodsRecord : addRecordList) {
plateGoodsRecord.setInvolvingRecordCode(addAbortRecordNo);
plateGoodsRecord.setDetailOrderNum(addRecordList.size());
}
goodsRecordService.updateBatchById(addRecordList);
saveBatch(applyList);
this.save(apply);
return true;
}
@Override
public List<YieldOrder> listDetailYieldOrder(Long id) {
PlateGoodsApply apply = this.getById(id);
// 申请明细使用需求的明细,先查询关联的需求
PlateGoodsRecord record = goodsRecordService.getById(apply.getPgrId());
// 查询关联订单列表
List<YieldOrder> yieldOrderList = goodsRecordService.listDetailYieldOrder(record.getId());
return yieldOrderList;
}
}

@ -1,5 +1,6 @@
package org.springblade.desk.order.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import org.springblade.common.utils.StringPrefixUtils;
@ -12,16 +13,15 @@ import org.springblade.desk.basic.pojo.entity.CoatingThickness;
import org.springblade.desk.basic.pojo.entity.MaterialQuota;
import org.springblade.desk.basic.service.ICoatingThicknessService;
import org.springblade.desk.basic.service.IMaterialQuotaService;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
import org.springblade.desk.dashboard.service.IDsCraftService;
import org.springblade.desk.dashboard.pojo.entity.BsPlatingEntity;
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
import org.springblade.desk.dashboard.service.IBsPlatingService;
import org.springblade.desk.dashboard.service.IDsCraftService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.dashboard.service.IDsProcessService;
import org.springblade.desk.order.constant.PlateGoodsConst;
import org.springblade.desk.order.constant.YieldOrderConst;
import org.springblade.desk.order.mapper.PlateGoodsRecordMapper;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecordDetail;
@ -31,7 +31,6 @@ import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IPlateGoodsRecordDetailService;
import org.springblade.desk.order.service.IPlateGoodsRecordService;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -85,6 +84,9 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
entity.setStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
entity.setApprovalStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
entity.setDetailOrderNum(detailList.size());
if (StringUtils.isEmpty(entity.getGoodsName())) {
entity.setGoodsName(PlateGoodsConst.GOODS_NAME_MAP.get(entity.getGoodsCode()));
}
if (this.save(entity)) {
for (PlateGoodsRecordDetail detail : detailList) {
detail.setPgrdId(entity.getId());
@ -246,8 +248,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
//将订单状态标记为数据异常,记录异常原因,并退出
this.updateYieldOrder(yieldOrder);
return false;
}
else{
} else{
//取出工艺能力
for (DsProcessEntity process : dsProcessList) {
//DS_PROCESS表id

@ -3,6 +3,7 @@
*/
package org.springblade.desk.quality.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -27,6 +28,14 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.config.RoleConfig;
import org.springblade.desk.basic.pojo.vo.UrlVO;
import org.springblade.desk.basic.util.RoleUtil;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.desk.dashboard.service.IDsPartRelationService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.dashboard.service.IDsPartVersionService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IMacToolUseService;
@ -87,7 +96,7 @@ public class InspectionTaskController extends BladeController {
public R<InspectionTaskDetailVO> detail(InspectionTask inspectionTask) {
InspectionTask detail = service.getOne(Condition.getQueryWrapper(inspectionTask));
InspectionTaskDetailVO detailDetailVO = InspectionTaskDetailWrapper.build().entityVO(detail);
;
BladeUser user = AuthUtil.getUser();
// InspectionTaskListVO detailDetail = service.detailById(inspectionTask);
service.setDetailVOValue(detailDetailVO);
return R.data(detailDetailVO);
@ -272,6 +281,23 @@ public class InspectionTaskController extends BladeController {
}
//质量记录跳转
@PostMapping(value = "/reviewQualityRecords")
public R reviewQualityRecords(@RequestBody JSONObject data) {
String deliverKey = data.getString("deliverKey");
String url = "http://192.168.242.158:80/mms/login/login_vendorJpageZljl.jsp?LOGIN158=admin&deliverNo=" + deliverKey;
return R.data(url);
}
//合格证跳转
@PostMapping(value = "/reviewQualification")
public R reviewQualification(@RequestBody JSONObject data) {
String deliverKey = data.getString("deliverKey");
String url = "http://192.168.242.158:80/mms/login/login_vendorJpage.jsp?LOGIN158=admin&deliverNo=" + deliverKey;
return R.data(url);
}
/**
* [检验任务] 同槽 检验结果应用
*/
@ -290,14 +316,56 @@ public class InspectionTaskController extends BladeController {
@GetMapping("/subPartList")
@ApiOperationSupport(order = 101)
@Operation(summary = "烧结包装防护-子件列表", description = "传入inspectionTask id")
public R subPartList(@Parameter(hidden = true) @RequestParam Long id) {
public R subPartList(Long yoId) {
List<DsPartEntity> list = new ArrayList<>();
YieldOrder yo = yieldOrderService.getById(yoId);
QueryWrapper<DsPartVersionEntity> versionqw = new QueryWrapper<>();
versionqw.eq("part_code", yo.getPartCode());
versionqw.eq("part_version", yo.getPartVersion());
DsPartVersionEntity version = dsPartVersionService.getOne(versionqw);
Long partId = version.getPartId();
// QueryWrapper<DsPartRelationEntity> relqw = new QueryWrapper<>();
// relqw.eq("CHILD_PART_ID", partId);
// List<DsPartRelationEntity> rels = dsPartRelationService.list(relqw);
// if(null != rels && rels.size()>0){
// DsPartRelationEntity rel = rels.get(0);
// DsPartEntity part = dsPartService.getById(rel.getChildPartId());
// list.add(part);
// }
QueryWrapper<DsPartRelationEntity> relmasterqw = new QueryWrapper<>();
relmasterqw.eq("PART_ID", partId);
List<DsPartRelationEntity> relmasters = dsPartRelationService.list(relmasterqw);
if(null != relmasters && relmasters.size()>0){
for(DsPartRelationEntity rel : relmasters){
DsPartEntity part = dsPartService.getById(rel.getChildPartId());
list.add(part);
}
}
// todo: 车间订单关联查询
List<InspectionTaskSubPartVO> list = new ArrayList<>();
list.add(new InspectionTaskSubPartVO());
list.add(new InspectionTaskSubPartVO());
// List<InspectionTaskSubPartVO> list = new ArrayList<>();
// list.add(new InspectionTaskSubPartVO());
// list.add(new InspectionTaskSubPartVO());
return R.data(list);
}
@Resource
IDsPartRelationService dsPartRelationService;
@Resource
IDsPartVersionService dsPartVersionService;
@Resource
IDsPartService dsPartService;
@Resource
private IYieldOrderService yieldOrderService;
@GetMapping("/toQaRecord")
@ApiOperationSupport(order = 101)
@Operation(summary = "跳转-质量记录", description = "传入inspectionTask id")

@ -3,6 +3,7 @@
*/
package org.springblade.desk.quality.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -26,6 +27,8 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.quality.constant.QAModuleConst;
import org.springblade.desk.quality.excel.IotHardnessExcel;
import org.springblade.desk.quality.pojo.entity.IotHardness;
@ -33,10 +36,14 @@ import org.springblade.desk.quality.pojo.vo.IotHardnessVO;
import org.springblade.desk.quality.service.IIotHardnessService;
import org.springblade.desk.quality.wrapper.IotHardnessWrapper;
import org.springblade.system.feign.IUserClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -62,6 +69,9 @@ public class IotHardnessController extends BladeController {
@Resource
private IUserClient iUserClient;
@Autowired
private IEquipmentService equipmentService;
/**
* [IOT硬度] 详情
*/
@ -94,6 +104,129 @@ public class IotHardnessController extends BladeController {
return R.data(pagesVO);
}
@GetMapping(value = "/queryHardnessData")
public R queryHardnessData() throws Exception {
InetAddress inetAddress = InetAddress.getLocalHost();
String ip = inetAddress.getHostAddress();
// ip = "127.0.0.1";
QueryWrapper<EquipmentEntity> qw = new QueryWrapper<>();
qw.eq("DEVICE_IP",ip);
EquipmentEntity card = equipmentService.getOne(qw);
//根据ip查询设备
if (card == null) {
return R.fail(-2, "ip未找到对应的测量仪设备!" + ip);
}
String deviceCode = card.getDeviceCode();
log.info("找到设备,设备编码: {}", deviceCode);
// 首次查询:无时间标记,设置初始标记为当前时间
// if (timeMarker == null) {
// timeMarker = new Date();
// log.info("首次查询,初始时间标记: {}", timeMarker);
// }
// 调用服务层方法查询未读数据
// 修改服务层方法,使其根据设备编码和未读状态查询
QueryWrapper<IotHardness> qwhard = new QueryWrapper<>();
qwhard.eq("EQUIPMENT_ID",card.getId());
// qwhard.eq("FLAG_READ",0);
qwhard.orderByDesc("CREATE_TIME");
List<IotHardness> qcHardnessIotList = service.list(qwhard);
// 记录查询到的数据数量
if (qcHardnessIotList != null) {
log.info("查询到 {} 条硬度数据", qcHardnessIotList.size());
} else {
log.info("未查询到硬度数据");
}
boolean hasNewData = qcHardnessIotList != null && !qcHardnessIotList.isEmpty();
List<String> list = new ArrayList<>();
List<JSONObject> resultList = new ArrayList<>();
if (hasNewData) {
log.info("设备[{}]查询到 {} 条新数据", deviceCode, qcHardnessIotList.size());
for (IotHardness iot : qcHardnessIotList) {
if(null != iot.getData()){
resultList.add(JSONObject.parseObject(iot.getData()));
}
iot.setFlagRead(1L);
service.updateById(iot);
}
// 查到数据后,重置标记(返回null,前端下次请求不带标记)
// timeMarker = null;
} else {
log.info("设备[{}]未查询到新数据", deviceCode);
}
return R.data(resultList);
}
private R getHardnessData(JSONObject data, HttpServletRequest request) throws Exception {
// LoginInfo loginUser = ControllerUtils.getCurLoginInfo(request);
// String ip = loginUser.getLoginIp();
InetAddress inetAddress = InetAddress.getLocalHost();
String ip = inetAddress.getHostAddress();
// ip = "127.0.0.1";
QueryWrapper<EquipmentEntity> qw = new QueryWrapper<>();
qw.eq("DEVICE_IP",ip);
EquipmentEntity card = equipmentService.getOne(qw);
//根据ip查询设备
if (card == null) {
return R.fail(-2, "ip未找到对应的测量仪设备!" + ip);
}
String deviceCode = card.getDeviceCode();
log.info("找到设备,设备编码: {}", deviceCode);
// 首次查询:无时间标记,设置初始标记为当前时间
// if (timeMarker == null) {
// timeMarker = new Date();
// log.info("首次查询,初始时间标记: {}", timeMarker);
// }
// 调用服务层方法查询未读数据
// 修改服务层方法,使其根据设备编码和未读状态查询
QueryWrapper<IotHardness> qwhard = new QueryWrapper<>();
qwhard.eq("EQUIPMENT_ID",card.getId());
// qwhard.eq("FLAG_READ",0);
qwhard.orderByDesc("CREATE_TIME");
List<IotHardness> qcHardnessIotList = service.list(qwhard);
// 记录查询到的数据数量
if (qcHardnessIotList != null) {
log.info("查询到 {} 条硬度数据", qcHardnessIotList.size());
} else {
log.info("未查询到硬度数据");
}
boolean hasNewData = qcHardnessIotList != null && !qcHardnessIotList.isEmpty();
List<String> list = new ArrayList<>();
List<JSONObject> resultList = new ArrayList<>();
if (hasNewData) {
log.info("设备[{}]查询到 {} 条新数据", deviceCode, qcHardnessIotList.size());
for (IotHardness iot : qcHardnessIotList) {
if(null != iot.getData()){
resultList.add(JSONObject.parseObject(iot.getData()));
}
iot.setFlagRead(1L);
service.updateById(iot);
}
// 查到数据后,重置标记(返回null,前端下次请求不带标记)
// timeMarker = null;
} else {
log.info("设备[{}]未查询到新数据", deviceCode);
}
return R.data(resultList);
}
@GetMapping("/getDataFirst")
@ApiOperationSupport(order = 20)

@ -13,6 +13,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -228,7 +229,7 @@ public class LiquidTankExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("有效期")
private LocalDateTime validDate;
private LocalDate validDate;
/**
@ -344,7 +345,7 @@ public class LiquidTankExcel implements Serializable {
@ColumnWidth(20)
// @ExcelProperty("生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON")
@ExcelProperty("生成周期类型:[1]:每周;[2]:每月;[3]:每年;")
private Long jobType;
private Integer jobType;
// private String jobTypeName;
/**
* 定时WEEK值

@ -84,8 +84,10 @@
ps.NAME as currentProcessName,ps01.NAME as nextProcessName,wo.MAKE_QTY as poQty,
yo.YP_AREA * wo.MAKE_QTY as areaTotal,yo.YP_AREA as area,yo.PRODUCT_IDENT as prodIdent,
t.*,wo.WO_CODE as woCode,
wo.PART_CODE AS partCode,
wo.PART_CODE AS prodCode,
yo.PART_CODE AS partCode,
yo.PART_VERSION AS partVersion,
yo.ID AS yoId,
yo.PART_CODE AS prodCode,
wo.TEST_QTY as orderCheckQty,
wo.LOSS_QTY as orderLossQty,
wo.SCRAP_QTY as orderScrapQty,

@ -67,18 +67,25 @@
<select id="listInit"
resultType="org.springblade.desk.quality.pojo.vo.ReviewSheetInitVO">
SELECT rs.*,
yo.PRODUCT_TYPE as prodTypeName,yo.PART_NAME as prodName,yo.PLATE as platingInfo,
par.PRODUCT_TYPE as prodTypeName,yo.PART_NAME as prodName,yo.PLATE as platingInfo,
yo.USE_DEPT as needDeptName,yo.PRODUCT_IDENT as prodIdent,wo.MAKE_QTY as poQty,
wo.WO_CODE AS woCode,wo.CARD_NO AS cardNo
wo.WO_CODE AS woCode,wo.CARD_NO AS cardNo,yo.PART_CODE AS prodCode,wo.batch_no as batchNo,yo.YO_CODE as docCode
FROM QA_REVIEW_SHEET rs
-- 车间作业计划 wp
LEFT JOIN MES_WORK_PLAN wp ON rs.WP_ID = wp.ID
-- 车间订单 wo
LEFT JOIN MES_WORK_ORDER wo ON rs.WO_ID = wo.ID
-- LEFT JOIN MES_WORK_ORDER wo ON rs.WO_ID = wo.ID
-- 生产订单 yo
-- LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID
-- 车间订单 wo
LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID
-- 生产订单 yo
LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID
-- 外协厂商 oem
LEFT JOIN BS_OEM oem ON wp.OC_ID = oem.ID
left join DS_PART par on par.PART_CODE = yo.PART_CODE
WHERE (
rs.IS_DELETED = 0
-- AND wp.IS_DELETED = 0

@ -30,4 +30,6 @@ public interface IWorkPlanItemThicknessService extends BaseService<WorkPlanThick
*/
void setVOValue(WorkPlanItemThicknessVO vo);
List<WorkPlanItemThicknessVO> listThicknessByWorkPlanItemId(Long workPlanItemId);
}

@ -425,6 +425,14 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
checkResult = InspectionTaskConst.CHECK_RESULT_NG;
}
}
// if (countOK == itemList.size()) { // 全部item 合格
// checkResult = InspectionTaskConst.CHECK_RESULT_OK;
// } else if (countNA == itemList.size()) { // 全部item NA
// checkResult = InspectionTaskConst.CHECK_RESULT_NA;
// } else if (countNO >= 0 && countNO <= itemList.size()) { // 不合格
// checkResult = InspectionTaskConst.CHECK_RESULT_NG;
// }
// 最新状态
task.setCheckResult(checkResult);
task.setStatus(checkResult);

@ -69,7 +69,7 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq
for(LiquidTankExcel excel:list) {
Long jobType = excel.getJobType();
Integer jobType = excel.getJobType();
String jobTypeWeekValue = excel.getJobTypeWeekValue();
String jobTypeMonthValue = excel.getJobTypeMonthValue();
String jobTypeYearValue = excel.getJobTypeYearValue();
@ -196,15 +196,21 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq
notice.setAfterTheoryFormulaId(afters.get(0).getId());
}
//化验人
List<User> tests = userClient.listByNameNolike(noticeExcel.getTestUserName());
if(null != tests && tests.size() > 0){
notice.setTestUserId(tests.get(0).getId());
if(noticeExcel.getTestUserName() != null && !noticeExcel.getTestUserName().trim().isEmpty()){
List<User> tests = userClient.listByNameNolike(noticeExcel.getTestUserName());
if(null != tests && tests.size() > 0){
notice.setTestUserId(tests.get(0).getId());
}
}
//工艺主管
List<User> process = userClient.listByNameNolike(noticeExcel.getProcessUserName());
if(null != process && process.size() > 0){
notice.setProcessUserId(process.get(0).getId());
if(noticeExcel.getProcessUserName() != null && !noticeExcel.getProcessUserName().trim().isEmpty()){
List<User> process = userClient.listByNameNolike(noticeExcel.getProcessUserName());
if(null != process && process.size() > 0){
notice.setProcessUserId(process.get(0).getId());
}
}
//班组
QueryWrapper<TeamSet> queryWrapperteam = new QueryWrapper<>();
queryWrapperteam.eq("TS_NAME",noticeExcel.getTeamName());
@ -242,7 +248,7 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq
if (testUI != null) {
// vo.setTestUserRealName(testUI.getUser().getRealName());
if(null != testUI.getUser()){
vo.setProcessUserRealName(testUI.getUser().getRealName());
vo.setTestUserRealName(testUI.getUser().getRealName());
}
}
UserInfo processUI = userClient.userInfo(vo.getProcessUserId()).getData();

@ -45,6 +45,7 @@ import org.springblade.system.feign.IUserClient;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -259,6 +260,11 @@ public class LiquidTankTaskServiceImpl extends BaseServiceImpl<LiquidTankTaskMap
// task = basicChangeStatus(task.getId(), LiquidTankTaskConst.S_FINISH_OK);
task = basicChangeTaskStatus(task, LiquidTankTaskConst.S_FINISH_OK);
Long tankId = task.getLiquidTankId();
LiquidTank tank = liquidTankService.getById(tankId);
tank.setLastTest(LocalDate.now());
liquidTankService.updateById(tank);
// 复检化验时间 用户填写
// 复检填报时间
task.setRepeatFillDate(LocalDateTime.now());

@ -29,10 +29,7 @@ import org.springblade.desk.quality.pojo.entity.WorkPlanItemDetail;
import org.springblade.desk.quality.pojo.vo.InspectionItemVO;
import org.springblade.desk.quality.pojo.vo.StandardVO;
import org.springblade.desk.quality.pojo.vo.WorkPlanItemVO;
import org.springblade.desk.quality.service.IInspectionItemService;
import org.springblade.desk.quality.service.IStandardService;
import org.springblade.desk.quality.service.IWorkPlanItemDetailService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.desk.quality.service.*;
import org.springblade.desk.quality.wrapper.InspectionItemWrapper;
import org.springblade.desk.quality.wrapper.StandardWrapper;
import org.springblade.desk.quality.wrapper.WorkPlanItemWrapper;
@ -110,10 +107,14 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl<WorkPlanItemMapper,
InspectionItemConst.SPECIAL_TYPE_SIZE.equals(vo.getItem().getSpecialType())
) {
vo.setWpItemDetailList(wpItemDetailService.listVOByWorkPlanItemId(vo.getId()));
vo.setThicknessList(wpItemThicknessService.listThicknessByWorkPlanItemId(vo.getId()));
}
}
}
@Resource
private IWorkPlanItemThicknessService wpItemThicknessService;
@Override
public List<WorkPlanItem> listByWorkPlanId(Long wpId) {
LambdaQueryWrapper<WorkPlanItem> qw = Wrappers.lambdaQuery();

@ -26,6 +26,7 @@ import org.springblade.desk.quality.pojo.vo.WorkPlanItemThicknessVO;
import org.springblade.desk.quality.service.IWorkPlanItemDetailService;
import org.springblade.desk.quality.service.IWorkPlanItemThicknessService;
import org.springblade.desk.quality.wrapper.WorkPlanItemDetailWrapper;
import org.springblade.desk.quality.wrapper.WorkPlanItemThicknessWrapper;
import org.springblade.system.feign.IDictClient;
import org.springblade.system.feign.IUserClient;
import org.springframework.stereotype.Service;
@ -51,4 +52,15 @@ public class WorkPlanItemThicknessServiceImpl extends BaseServiceImpl<WorkPlanIt
public void setVOValue(WorkPlanItemThicknessVO vo) {
}
@Override
public List<WorkPlanItemThicknessVO> listThicknessByWorkPlanItemId(Long workPlanItemId) {
LambdaQueryWrapper<WorkPlanThicknessDetail> qw = Wrappers.lambdaQuery();
qw.eq(WorkPlanThicknessDetail::getWorkPlanItemId, workPlanItemId);
qw.orderByAsc(WorkPlanThicknessDetail::getId);
List<WorkPlanThicknessDetail> list = list(qw);
List<WorkPlanItemThicknessVO> voList = WorkPlanItemThicknessWrapper.build().listVO(list);
return voList;
}
}

Loading…
Cancel
Save