diff --git a/blade-ops/blade-develop/pom.xml b/blade-ops/blade-develop/pom.xml index 8782bc69..1839b9d0 100644 --- a/blade-ops/blade-develop/pom.xml +++ b/blade-ops/blade-develop/pom.xml @@ -41,10 +41,6 @@ org.springblade blade-dict-api - - org.springblade - blade-develop-api - diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java index ed0c0ea6..e8aa51cd 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java @@ -31,7 +31,6 @@ import java.util.Map; @EqualsAndHashCode(callSuper = true) public class WorkPlan extends BaseEntity { /** - * TODO 工序状态要调整到常量类中 * 工序状态:未开始 */ public static Integer STATUS_NO_START = 1; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java index b5fe77dd..0a395d65 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java @@ -32,7 +32,7 @@ public class ByCardNoByPlanVO { private String batchNo; @Schema(description = "工序ID") - private Long ppsId; + private String ppsId; @Schema(description = "当前工序") private String ppsName; @@ -41,7 +41,7 @@ public class ByCardNoByPlanVO { private Double workQty; @Schema(description = "班组id") - private Long tsId; + private String tsId; @Schema(description = "班组名称") private String tsName; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java index 29e010b8..2eee8bb1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java @@ -47,6 +47,7 @@ import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -91,6 +92,11 @@ public class BasicClazzController extends BladeController { @Operation(summary = "list分页", description = "传入BasicClazz Obj") public R> list(@Parameter(hidden = true) @RequestParam Map basicClazz, Query query) { + basicClazz = basicClazz + .entrySet() + .stream() + .filter(entry -> Objects.nonNull(entry.getValue())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); QueryWrapper qw = Condition.getQueryWrapper(basicClazz, BasicClazz.class); IPage pages = service.page(Condition.getPage(query), qw); IPage pagesVO = BasicClazzWrapper.build().pageVO(pages); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java index 2ba8a0bb..c7fcc3e1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java @@ -123,6 +123,9 @@ public class BsAssignController extends BladeController { @ApiOperationSupport(order = 3) @Operation(summary = "分页", description = "传入bsAssign") public R> page(BsAssignVO bsAssign, Query query) { + query.setDescs(null); + query.setAscs(null); + IPage pages = bsAssignService.selectBsAssignPage(Condition.getPage(query), bsAssign); List list = pages.getRecords(); for(BsAssignVO vo:list){ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java index df40334f..a4da8226 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java @@ -121,8 +121,10 @@ public class CraftAbilityController extends BladeController { @ApiOperationSupport(order = 2) @Operation(summary = "分页", description = "传入CraftAbility") public R> list(@Parameter(hidden = true) @RequestParam Map craftAbility, Query query) { - - + craftAbility.remove("descs"); + craftAbility.remove("ascs"); + query.setDescs(null); + query.setAscs(null); Date startTime = null; Date endTime = null; @@ -143,7 +145,7 @@ public class CraftAbilityController extends BladeController { if(null != startTime && null != endTime){ qw.between("UPDATE_TIME", startTime,endTime); } - qw.orderByAsc("CA_CODE"); + qw.last("ORDER BY UPDATE_TIME DESC "); IPage pages = craftAbilityService.page(Condition.getPage(query), qw); IPage pagesVO = CraftAbilityWrapper.build().pageVO(pages); pagesVO.getRecords() diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java index edfe2c75..c31a69aa 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java @@ -84,7 +84,12 @@ public class LocallyPlatedPartController extends BladeController { @Operation(summary = "list分页", description = "传入LocallyPlatedPart Obj") public R> list(@Parameter(hidden = true) @RequestParam Map locallyPlatedPart, Query query) { + locallyPlatedPart.remove("descs"); + locallyPlatedPart.remove("ascs"); + query.setDescs(null); + query.setAscs(null); QueryWrapper qw = Condition.getQueryWrapper(locallyPlatedPart, LocallyPlatedPart.class); + qw.last("ORDER BY UPDATE_TIME DESC "); IPage pages = service.page(Condition.getPage(query), qw); IPage pagesVO = LocallyPlatedPartWrapper.build().pageVO(pages); pagesVO.getRecords() diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java index c3bcde56..e3e85705 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java @@ -247,8 +247,10 @@ public class TeamSetController extends BladeController { @Operation(summary = "list分页", description = "传入TeamSet Obj") public R> list(@Parameter(hidden = true) @RequestParam Map map, Query query) { - - + map.remove("descs"); + map.remove("ascs"); + query.setDescs(null); + query.setAscs(null); // List ids = new ArrayList<>(); // if(map.containsKey("dispatcherRealName")){ // List users = iUserClient.userListByName(Func.toStr(map.get("dispatcherRealName"))); @@ -269,7 +271,7 @@ public class TeamSetController extends BladeController { qw.eq(map.containsKey(TeamSet.COL_DISPATCHER), TeamSet.COL_DISPATCHER, (Func.toLong(map.get(TeamSet.COL_DISPATCHER)))); qw.in(map.containsKey("ids"), "ID", Func.toLong(map.get("ids"))); - + qw.last("ORDER BY UPDATE_TIME DESC "); // page IPage pages = service.page(Condition.getPage(query), qw); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java index 9a76ed7d..f52455b5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java @@ -93,6 +93,11 @@ public class WorkCenterController extends BladeController { @Operation(summary = "list分页", description = "传入WorkCenter Obj") public R> list(@Parameter(hidden = true) @RequestParam Map workCenter, Query query) { + query.setDescs(null); + query.setAscs(null); + workCenter.remove("descs"); + workCenter.remove("ascs"); + QueryWrapper qw = Condition.getQueryWrapper(workCenter, WorkCenter.class); qw.like(workCenter.containsKey("wcCode"), WorkCenter.COL_WC_CODE, Func.toStr(workCenter.get("wcCode"))); @@ -103,6 +108,7 @@ public class WorkCenterController extends BladeController { qw.like(workCenter.containsKey("team"), WorkCenter.COL_TEAM, Func.toStr(workCenter.get("team"))); qw.like(workCenter.containsKey("teamId"), WorkCenter.COL_TEAM_ID, Func.toStr(workCenter.get("teamId"))); + qw.last("ORDER BY UPDATE_TIME DESC "); IPage pages = service.page(Condition.getPage(query), qw); IPage pagesVO = WorkCenterWrapper.build().pageVO(pages); List vos = pagesVO.getRecords(); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/AssignMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/AssignMapper.xml index 219c199c..2f369035 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/AssignMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/AssignMapper.xml @@ -57,6 +57,7 @@ AND center_id = #{bsAssign.centerId} + ORDER BY UPDATE_TIME DESC diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java index 4a521853..2b69e162 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java @@ -1,5 +1,6 @@ package org.springblade.desk.energy.util; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; @@ -7,10 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.secure.BladeUser; import org.springframework.beans.factory.annotation.Value; -import org.springblade.desk.energy.pojo.entity.BsTowerEntity; -import org.springblade.desk.energy.pojo.entity.RpParameterSet; import org.springblade.desk.energy.service.*; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -18,9 +16,13 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import java.util.ArrayList; import java.util.Date; import java.util.List; +/** + * @author 石玖洲 + */ @Service @RequiredArgsConstructor public class HttpRequestService { @@ -42,6 +44,15 @@ public class HttpRequestService { @Value("${request.lims.url}") private String limsUrl; + @Value("${request.iot.orgId}") + private String orgId; + + @Value("${request.iot.systemId}") + private String systemId; + + @Value("${request.equ.url}") + private String equUrl; + /** *

Description: 获取看板废水废气酸雾塔实时数据新接口

* @@ -170,4 +181,64 @@ public class HttpRequestService { } return null; } + + /** + *

Description: 获取产线每日实际用水用电量(历史数据)

+ * + * @param deviceId 设备id + * @param params + * @param startTime 开始时间 + * @param endTime 结束时间 + * @Author qjh + * @Date: 2023/1/6 10:10 + */ + public List getEneUsed(String deviceId, ArrayList params, String startTime, String endTime) { + // 头信息 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + JSONObject object = new JSONObject(); + object.put("orgId", orgId); + object.put("systemId", systemId); + object.put("params", params); // 设备对应的参数信息 + object.put("deviceId", deviceId); // 设备编码 + object.put("startTime", startTime); // 开始时间(入炉) + object.put("endTime", endTime); // 结束时间(出炉) + HttpEntity entity = new HttpEntity<>(object, headers); + ResponseEntity responseEntity = null; + try { + responseEntity = httpClientTemplate.postForEntity(iotNewUrl + "/deviceForZhgd/deviceDataHistoryByParams", entity, JSONObject.class); + JSONObject result = responseEntity.getBody(); + if (result != null && result.getInteger("code").equals(0)) { + List jsonList = JSONArray.parseArray(result.getJSONArray("result").toJSONString(), JSONObject.class); + if (jsonList != null && !jsonList.isEmpty()) { + return jsonList; + } + } else { + log.error("获取用水用电量、烧结解绑获取数据接口调用失败!" + result.getString("message") + "设备编码" + deviceId + "参数" + object); + } + } catch (Exception e) { + log.error("获取用水用电量、烧结解绑获取数据接口调用失败!" + e.getMessage() + "设备编码" + deviceId + "参数" + object); + } + return null; + } + + public JSONObject getParams(String deviceCode) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add("appId", "1358950685609828353"); + JSONObject json = new JSONObject(); + json.put("deviceCode", deviceCode); // 设备编码 + HttpEntity entity = new HttpEntity<>(json, headers); + ResponseEntity responseEntity = httpClientTemplate.postForEntity(equUrl + "/api/device/device/prodLineInfo", entity, JSONObject.class); + JSONObject object = responseEntity.getBody(); + if (object.getInteger("code").equals(0)) { + JSONObject data = object.getJSONObject("data"); + if (data != null) { + return data; + } + } else { + log.error("获取设备对应的参数数据接口调用失败!" + "设备编码" + deviceCode); + } + return null; + } } \ No newline at end of file diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java deleted file mode 100644 index c14baa33..00000000 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.springblade.desk.logistics.controller; - -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import lombok.AllArgsConstructor; -import org.springblade.core.tool.api.R; -import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO; -import org.springblade.desk.logistics.service.IPrWorkOrderService; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * @author 石玖洲 - * @Description - * @create 2026-04-22 15:00 - */ -@RestController -@AllArgsConstructor -@RequestMapping("/prWorkOrder") -@Tag(name = "车间订单->视图", description = "车间订单->视图") -public class PrWorkOrderController { - - @Resource - private IPrWorkOrderService prWorkOrderService; - @PostMapping(value = "/queryAllocationMess") - @ApiOperationSupport(order = 1) - @Operation(summary = "加载配套信息", description = "filterContext 查询参数") - private R> queryAllocationMess(@RequestBody AllocationMessPageDTO allocationMessPageDTO) { - return R.data(prWorkOrderService.queryAllocationMess(allocationMessPageDTO)); - } -} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java index 25734adb..f885ed67 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java @@ -26,15 +26,7 @@ package org.springblade.desk.logistics.service; import com.baomidou.mybatisplus.extension.service.IService; -import org.springblade.core.mp.base.BaseService; -import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO; import org.springblade.desk.logistics.pojo.entity.PrWorkOrder; -import org.springblade.desk.logistics.pojo.entity.WeighData; -import org.springblade.desk.logistics.pojo.vo.AllocationMessVO; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; /** * 车间订单 服务类 @@ -43,11 +35,4 @@ import java.util.Map; * @since 2025-11-12 */ public interface IPrWorkOrderService extends IService { - - /** - * 查询分配信息 - * @param dto 查询条件 - * @return 分配信息 - */ - Map queryAllocationMess(AllocationMessPageDTO dto); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java index d25a927e..42b7916e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java @@ -26,14 +26,8 @@ package org.springblade.desk.logistics.service; import com.baomidou.mybatisplus.extension.service.IService; -import org.springblade.core.mp.base.BaseService; -import org.springblade.core.secure.BladeUser; -import org.springblade.desk.logistics.pojo.entity.PrWorkOrder; import org.springblade.desk.logistics.pojo.entity.PrWorkPlan; -import java.util.List; -import java.util.Map; - /** * 车间订单序号 服务类 * @@ -41,24 +35,4 @@ import java.util.Map; * @since 2025-11-12 */ public interface IPrWorkPlanService extends IService { - - /** - * 根据订单id查询 - * @param woId 订单id - * @return 是否符合转试条件 - */ - Boolean isTransferTest(Long woId); - - /** - * 试转项目列表 - * @return 试转项目列表 - */ - List> trialItemList(); - - /** - * 发起试转 - * @param data 试转数据 - * @param user 用户 - */ - void launchTest(Map data, BladeUser user) throws Exception; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java index d769cec2..58cae3a1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java @@ -26,26 +26,13 @@ package org.springblade.desk.logistics.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import jakarta.annotation.Resource; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.desk.logistics.mapper.PrWorkOrderMapper; -import org.springblade.desk.logistics.mapper.WeighDataMapper; -import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO; import org.springblade.desk.logistics.pojo.entity.PrWorkOrder; -import org.springblade.desk.logistics.pojo.entity.WeighData; -import org.springblade.desk.logistics.pojo.vo.AllocationMessVO; import org.springblade.desk.logistics.service.IPrWorkOrderService; -import org.springblade.desk.logistics.service.IWeighDataService; -import org.springblade.erpdata.feign.IErpDataLogisticsClient; import org.springframework.stereotype.Service; -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - /** * 车间订单、 服务实现类 * @@ -56,18 +43,4 @@ import java.util.Map; @Slf4j @AllArgsConstructor public class PrWorkOrderServiceImpl extends ServiceImpl implements IPrWorkOrderService { - - @Resource - private IErpDataLogisticsClient erpDataLogisticsClient; - - @Override - public Map queryAllocationMess(AllocationMessPageDTO dto) { - List allocationMessList = erpDataLogisticsClient.queryAllocationMess(dto).getData(); - int totalAllocationMessNum = erpDataLogisticsClient.queryAllocationMessNum(dto).getData(); - Map result = new HashMap<>(3); - result.put("current",dto.getPageNum()); - result.put("record",allocationMessList); - result.put("total",totalAllocationMessNum); - return result; - } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java index 9fb27963..4a7c2951 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java @@ -1,35 +1,13 @@ package org.springblade.desk.logistics.service.impl; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import jakarta.annotation.Resource; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springblade.common.exception.BusinessException; -import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.secure.BladeUser; -import org.springblade.desk.basic.mapper.BasicClazzMapper; -import org.springblade.desk.basic.pojo.entity.BasicClazz; -import org.springblade.desk.energy.util.HttpRequestService; import org.springblade.desk.logistics.mapper.PrWorkPlanMapper; import org.springblade.desk.logistics.pojo.entity.PrWorkPlan; import org.springblade.desk.logistics.service.IPrWorkPlanService; -import org.springblade.desk.quality.pojo.entity.PlanTest; -import org.springblade.desk.quality.pojo.entity.WorkPlanItem; -import org.springblade.desk.quality.service.IPlanTestService; -import org.springblade.desk.quality.service.IWorkPlanItemService; -import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; -import java.util.*; -import java.util.stream.Collectors; - /** * 车间订单、 服务实现类 * @@ -40,158 +18,4 @@ import java.util.stream.Collectors; @Slf4j @AllArgsConstructor public class PrWorkPlanServiceImpl extends ServiceImpl implements IPrWorkPlanService { - - private final IWorkPlanItemService prWorkPlanItemService; - - @Resource - private final BasicClazzMapper basicClazzMapper; - - @Resource - private final IErpDataProduceClient erpDataProduceClient; - - private final IPlanTestService planTestService; - - @Resource - private final PrWorkPlanMapper prWorkplanMapper; - - private final HttpRequestService httpRequestService; - - @Override - public Boolean isTransferTest(Long woId) { - List prWorkPlanItems = prWorkPlanItemService.listByWoId(woId); - - // 没有试验项目,不能转试 - if (!(prWorkPlanItems != null && !prWorkPlanItems.isEmpty())) { - return false; - } - - boolean flag = false; - for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) { - // 如果试验项目中包含 承压检测 则代表可以发起转试 24/8/5 牛营杰确认 - if ("承压检测".equals(prWorkPlanItem.getItemName())) { - if (prWorkPlanItem.getCheckResult() == -1) { - flag = true; - } - } - } - return flag; - } - - @Override - public List> trialItemList() { - // 构造 SQL 查询语句 - List basicClazzList = basicClazzMapper.selectList(new LambdaQueryWrapper() - .eq(BasicClazz::getBizType, 11)); - List nameList = basicClazzList.stream().map(BasicClazz::getName).collect(Collectors.toList()); - List> mapList = erpDataProduceClient.trialItemList(nameList).getData(); - // 转换查询结果 - List> result = new ArrayList<>(); - if (mapList != null && !mapList.isEmpty()) { - for (Map map : mapList) { - Map item = new HashMap<>(); - item.put("value", map.get("key") != null ? map.get("key") : ""); - item.put("label", map.get("value") != null ? map.get("value") : ""); - result.add(item); - } - } - return result; - } - - @Override - public void launchTest(Map data, BladeUser user) throws Exception { - // 提取参数 - String batchNo = (String) data.get("batchNo"); - Integer quantity = Integer.parseInt(data.get("quantity").toString()); - String woCode = (String) data.get("woCode"); - String remark = (String) data.get("remark"); - String partCode = (String) data.get("partCode"); - String productType = (String) data.get("productType"); - String partName = (String) data.get("partName"); - Object testListObj = data.get("testList"); - JSONArray testList = (JSONArray) JSON.toJSON(testListObj); - Long woId = Long.parseLong(data.get("woId").toString()); - - // 生成转试单号 - String pptCode = generatePptCode(); - - // 获取相关工序 - PrWorkPlan prWorkPlan = findRelevantWorkPlan(woId); - - // 处理每个测试项 - processTestItems(testList, batchNo, quantity, woCode, remark, partCode, partName, productType, pptCode, prWorkPlan, user); - } - - private String generatePptCode() { - Calendar c = Calendar.getInstance(); - Date currentDate = new Date(); - c.setTime(currentDate); - String year = String.valueOf(c.get(Calendar.YEAR)); - int month = c.get(Calendar.MONTH) + 1; - String formattedMonth = month < 10 ? "0" + month : String.valueOf(month); - - PlanTest latestData = planTestService.getLatestData(currentDate); - StringBuilder pptCode = new StringBuilder("LCR" + year + "-" + formattedMonth); - - if (latestData != null && latestData.getId() != null) { - if (StringUtils.isNotBlank(latestData.getCode())) { - String numStr = String.valueOf(Integer.parseInt(latestData.getCode().substring(10)) + 1); - pptCode.append("0".repeat(Math.max(0, 6 - numStr.length()))); - pptCode.append(numStr); - } - } else { - pptCode.append("000001"); - } - return pptCode.toString(); - } - - private PrWorkPlan findRelevantWorkPlan(Long woId) { - List prWorkPlanItems = prWorkPlanItemService.listByWoId(woId); - PrWorkPlan prWorkPlan = null; - for (WorkPlanItem item : prWorkPlanItems) { - if ("承压检测".equals(item.getItemName()) || "承压测试".equals(item.getItemName()) || "承压测试检测".equals(item.getItemName())) { - if (item.getCheckResult() == -1) { - prWorkPlan = prWorkplanMapper.selectById(item.getWpId()); - } - } - } - return prWorkPlan; - } - - private void processTestItems(JSONArray testList, String batchNo, Integer quantity, String woCode, String remark, - String partCode, String partName, String productType, String pptCode, - PrWorkPlan prWorkPlan, BladeUser user) throws Exception { - for (int i = 0; i < testList.size(); i++) { - JSONObject object = testList.getObject(i, JSONObject.class); - String value = object.getString("value"); - String label = object.getString("label"); - - JSONObject response = httpRequestService.launchTest( - batchNo, quantity, woCode, remark, value, label, i + 1, user, partCode, partName, productType, pptCode - ); - - if (response != null) { - saveTestRecord(prWorkPlan, user, value, label, pptCode, response, i + 1); - } else { - throw new BusinessException("LIMS系统接口调用失败,请联系相关负责人处理。"); - } - } - } - - private void saveTestRecord(PrWorkPlan prWorkPlan, BladeUser user, String testKey, String testName, - String pptCode, JSONObject response, int sequence) { - PlanTest prPlanTest = new PlanTest(); - prPlanTest.setWpId(prWorkPlan.getPpsId()); - prPlanTest.setTestUserId(user.getUserId()); - prPlanTest.setTestUserName(user.getUserName()); - prPlanTest.setTestTime(LocalDateTime.now()); - prPlanTest.setTestNo((long) sequence); - prPlanTest.setWpCode(testKey); - prPlanTest.setTestName(testName); - prPlanTest.setTestStatus("已送"); - prPlanTest.setCode(pptCode); - prPlanTest.setErpId(response.getString("id")); - prPlanTest.setDataId(response.getString("str1")); - planTestService.save(prPlanTest); - } - } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java index 20914ed7..fcac541c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java @@ -4,21 +4,16 @@ 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.servlet.http.HttpServletRequest; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; -import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; -import org.springblade.desk.logistics.service.IPrWorkPlanService; import org.springblade.desk.produce.pojo.vo.WorkPlanVO; import org.springblade.desk.produce.service.IWorkPlanService; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Map; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * 车间作业计划 控制器 @@ -34,8 +29,6 @@ public class PrWorkPlanController extends BladeController { private final IWorkPlanService workPlanService; - private final IPrWorkPlanService prWorkPlanService; - /** * 车间作业计划 */ @@ -46,30 +39,4 @@ public class PrWorkPlanController extends BladeController { IPage pages = workPlanService.queryWorkPlan(Condition.getPage(query), cardNo); return R.data(pages); } - - /** - * [转试记录] 判断是否符合转试条件 - */ - @PostMapping("/isTransferTest") - @ApiOperationSupport(order = 72) - @Operation(summary = "是否符合转试条件", description = "Long woId 订单id") - public R isTransferTest(@RequestParam("woId") Long woId) { - return R.data(prWorkPlanService.isTransferTest(woId)); - } - - @PostMapping("/trialItemList") - @ApiOperationSupport(order = 73) - @Operation(summary = "获取转试的试验计划", description = "无需传参") - public R>> trialItemList() { - return R.data(prWorkPlanService.trialItemList()); - } - - @PostMapping("/launchTest") - @ApiOperationSupport(order = 73) - @Operation(summary = "发起试验计划", description = "无需传参") - public R launchTest(@RequestBody Map data, HttpServletRequest request) throws Exception { - BladeUser user = AuthUtil.getUser(); - prWorkPlanService.launchTest(data, user); - return R.success(); - } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java index 12c80bbc..74fb8390 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java @@ -75,4 +75,9 @@ public interface IMacToolUseService extends BaseService { MacToolUse queryByCode(String mtnCode); GoodsVO getMaterialMess(String goodsCode); + + /** + * 获取设备所需参数 + */ + void setSjDataCapture(MesQcProduceRunEntity qcProduceRun, Boolean aTrue); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index 1f677bac..69a561e7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -2,7 +2,9 @@ package org.springblade.desk.produce.service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; +import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO; import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.vo.BatchPrepareVO; @@ -238,4 +240,32 @@ public interface IWorkOrderService extends BaseService { List findCubByYoId(Long yoId); void saveAdjust(Long woId, Long oldTsId, Long newTsId, Long userId); + + /** + * 根据订单id查询 + * @param woId 订单id + * @return 是否符合转试条件 + */ + Boolean isTransferTest(Long woId); + + /** + * 试转项目列表 + * @return 试转项目列表 + */ + List> trialItemList(); + + /** + * 发起试转 + * @param data 试转数据 + * @param user 用户 + * @throws Exception + */ + void launchTest(Map data, BladeUser user) throws Exception; + + /** + * 查询分配信息 + * @param dto 查询条件 + * @return 分配信息 + */ + Map queryAllocationMess(AllocationMessPageDTO dto); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index 58df74fb..b93f6f2a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -1,10 +1,14 @@ package org.springblade.desk.produce.service.impl; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; 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 com.google.common.collect.Lists; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; @@ -14,6 +18,7 @@ import org.springblade.desk.device.pojo.entity.EquipmentEntity; import org.springblade.desk.device.pojo.entity.RackSetEntity; import org.springblade.desk.device.service.IEquipmentService; import org.springblade.desk.device.service.IRackSetService; +import org.springblade.desk.energy.util.HttpRequestService; import org.springblade.desk.produce.mapper.MacToolUseMapper; import org.springblade.desk.produce.pojo.dto.MesMacToolUseDTO; import org.springblade.desk.produce.pojo.entity.MacToolUse; @@ -25,9 +30,11 @@ import org.springblade.desk.produce.pojo.vo.MacToolUseVO; import org.springblade.desk.produce.pojo.vo.MesMacToolUseVO; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.service.IMacToolUseService; +import org.springblade.desk.produce.service.IMesQcProduceRunService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -50,6 +57,15 @@ public class MacToolUseServiceImpl extends BaseServiceImpl eneUsed; + ArrayList params = Lists.newArrayList(); // 参数 + String prodLineLevel = null; // 温度上下浮动值 + List jsonList = null; // 根据参数获取到的设备参数信息 + Double heat = 0d; // 最高温度 + if (qcProduceRun.getTempSlot() != null && Double.parseDouble(qcProduceRun.getTempSlot()) > 0) { + heat = Double.valueOf(qcProduceRun.getTempSlot()); + } + Double vacuity = 1000000d; // 真空度 + if (qcProduceRun.getDataFourteen() != null && Double.parseDouble(qcProduceRun.getDataFourteen()) < vacuity) { + vacuity = Double.valueOf(qcProduceRun.getDataFourteen()); + } + Double setHeat = 20000d; // 设定温度 + List aaaList = new ArrayList<>(); // 温度大于200 得集合 + // 获取设备所需参数 + JSONObject deviceParams = this.getDeviceParams(qcProduceRun); + if (deviceParams != null) { + prodLineLevel = deviceParams.getString("prodLineLevel"); + if (org.apache.commons.lang3.StringUtils.isBlank(prodLineLevel)) { + prodLineLevel = "0"; + } + jsonList = JSONArray.parseArray(deviceParams.getJSONArray("prodLineMeasurePoint").toJSONString(), JSONObject.class); + if (jsonList != null && jsonList.size() > 0) { + // 处理参数 + for (JSONObject jsonObject : jsonList) { + params.add(jsonObject.getString("attrCode")); + } + String startTime = qcProduceRun.getInDate(); + // 获取当前时间字符串格式 + String endTime = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"); + if (unBind) { + endTime = qcProduceRun.getOutDate(); + } + // 获取数据 + eneUsed = httpRequestService.getEneUsed(qcProduceRun.getDeviceId(), params, startTime, endTime); + // 处理数据 + if (eneUsed != null && !eneUsed.isEmpty()) { + // 只有一个温度并且等于实际温度1 + Map eUMap = jsonList.stream().map(cbsSupplier -> new AbstractMap.SimpleEntry<>(cbsSupplier.getString("attrName"), cbsSupplier)) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + // 获取设定温度 + if (eUMap.get(sdwd01) != null && eneUsed.get(0).getString(eUMap.get(sdwd01).getString("attrCode")) != null) { + setHeat = Double.valueOf(eneUsed.get(0).getString(eUMap.get(sdwd01).getString("attrCode"))); + } else if (qcProduceRun.getDataTwo() != null) { + setHeat = Double.valueOf(qcProduceRun.getDataTwo()); + } + if (eUMap.get(heat2) != null) { // 如果实际温度2存在代表分区 + for (JSONObject jsonObject : eneUsed) { + if (jsonObject.getString(eUMap.get(heat2).getString("attrCode")) == null) return; + // 获取最高温度 + heat = this.setMaxHeat(eUMap, jsonObject, heat); + } + qcProduceRun.setTempSlot(String.valueOf(heat)); + } else { // 如果实际温度2不存在代表不是分区 + for (JSONObject jsonObject : eneUsed) { + if (jsonObject.getString(eUMap.get(heat1).getString("attrCode")) == null) return; + if (org.apache.commons.lang3.StringUtils.isBlank(jsonObject.getString(eUMap.get(heat1).getString("attrCode")))) + continue; + Double value = Double.valueOf(jsonObject.getString(eUMap.get(heat1).getString("attrCode"))); + // 获取最高温度 + if (value > heat) { + heat = value; + } + // 存储温度大于200 的数据 用与获取真空度 + if (value > 200) { + aaaList.add(jsonObject); + } + // 存储保温开始时间 + if (org.apache.commons.lang3.StringUtils.isBlank(qcProduceRun.getDataThirteen())) { + if (value >= setHeat) { + qcProduceRun.setDataThirteen(String.valueOf(jsonObject.getString("timestamp"))); + } + } else if (value < setHeat && org.apache.commons.lang3.StringUtils.isNotBlank(qcProduceRun.getDataThirteen()) && org.apache.commons.lang3.StringUtils.isBlank(qcProduceRun.getDataTwelve())) { + // 存储保温结束时间 + qcProduceRun.setDataTwelve(String.valueOf(jsonObject.getString("timestamp"))); + } + } + if (aaaList.size() > 0 && eUMap.get(sjzkd) != null) { + for (JSONObject jsonObject : aaaList) { + if (Double.valueOf(jsonObject.getString(eUMap.get(sjzkd).getString("attrCode"))) < vacuity) { + vacuity = Double.valueOf(jsonObject.getString(eUMap.get(sjzkd).getString("attrCode"))); + } + } + // 真空度 + qcProduceRun.setDataFourteen(new DecimalFormat("#.000000").format(vacuity)); + } + qcProduceRun.setTempSlot(String.valueOf(heat)); + } + // 获取链速 + if (eUMap.get(ls) != null) { + if (eneUsed.get(0).getString(eUMap.get(ls).getString("attrCode")) != null) { + String string = eneUsed.get(0).getString(eUMap.get(ls).getString("attrCode")); + qcProduceRun.setVSpeed(string); + } + } + // 获取露点 + if (eUMap.get(ld) != null) { + if (eneUsed.get(0).getString(eUMap.get(ld).getString("attrCode")) != null) { + String string = eneUsed.get(0).getString(eUMap.get(ld).getString("attrCode")); + qcProduceRun.setDataEleven(string); + } + } + } + } + } + mesQcProduceRunService.updateById(qcProduceRun); + } + + private Double setMaxHeat(Map eUMap, JSONObject jsonObject, Double heat) { + if (eUMap.get(heat1) != null) { + if (jsonObject.getString(eUMap.get(heat1).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat1).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat1).getString("attrCode"))); + } + } + if (eUMap.get(heat2) != null) { + if (jsonObject.getString(eUMap.get(heat2).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat2).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat2).getString("attrCode"))); + } + } + if (eUMap.get(heat3) != null) { + if (jsonObject.getString(eUMap.get(heat3).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat3).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat3).getString("attrCode"))); + } + } + if (eUMap.get(heat4) != null) { + if (jsonObject.getString(eUMap.get(heat4).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat4).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat4).getString("attrCode"))); + } + } + if (eUMap.get(heat5) != null) { + if (jsonObject.getString(eUMap.get(heat5).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat5).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat5).getString("attrCode"))); + } + } + if (eUMap.get(heat6) != null) { + if (jsonObject.getString(eUMap.get(heat6).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat6).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat6).getString("attrCode"))); + } + } + if (eUMap.get(heat7) != null) { + if (jsonObject.getString(eUMap.get(heat7).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat7).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat7).getString("attrCode"))); + } + } + if (eUMap.get(heat8) != null) { + if (jsonObject.getString(eUMap.get(heat8).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat8).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat8).getString("attrCode"))); + } + } + if (eUMap.get(heat9) != null) { + if (jsonObject.getString(eUMap.get(heat9).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat9).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat9).getString("attrCode"))); + } + } + if (eUMap.get(heat10) != null) { + if (jsonObject.getString(eUMap.get(heat10).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat10).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat10).getString("attrCode"))); + } + } + if (eUMap.get(heat11) != null) { + if (jsonObject.getString(eUMap.get(heat11).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat11).getString("attrCode"))) > heat) { + heat = Double.valueOf(jsonObject.getString(eUMap.get(heat11).getString("attrCode"))); + } + } + return heat; + } + + private JSONObject getDeviceParams(MesQcProduceRunEntity qcProduceRun) { + return httpRequestService.getParams(qcProduceRun.getDeviceId()); + } + public static final int time2Integer(Date d) { Calendar cal = Calendar.getInstance(); cal.setTime(d); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index 2291e130..8aef9aa4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -515,8 +515,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl Integer.parseInt(dto.getDetailIndex()))).toList(); dsRbFilePreserveSlot.setChildrenList(childrenList); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 115880e4..c2cb00d1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -1,6 +1,8 @@ package org.springblade.desk.produce.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -13,6 +15,7 @@ import net.sourceforge.barbecue.Barcode; import net.sourceforge.barbecue.BarcodeFactory; import net.sourceforge.barbecue.BarcodeImageHandler; import org.apache.commons.lang3.StringUtils; +import org.springblade.common.exception.BusinessException; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; @@ -21,6 +24,7 @@ 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.constant.FlowConst; +import org.springblade.desk.basic.pojo.entity.BasicClazz; import org.springblade.desk.basic.pojo.entity.BsAssignEntity; import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity; import org.springblade.desk.basic.pojo.entity.WorkCenter; @@ -36,6 +40,9 @@ 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.energy.util.HttpRequestService; +import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO; +import org.springblade.desk.logistics.pojo.vo.AllocationMessVO; import org.springblade.desk.order.mapper.YieldOrderMapper; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; @@ -52,12 +59,14 @@ import org.springblade.desk.quality.mapper.InspectionTaskMapper; import org.springblade.desk.quality.pojo.entity.*; import org.springblade.desk.quality.service.*; import org.springblade.desk.util.date.DateUtils; +import org.springblade.erpdata.feign.IErpDataLogisticsClient; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springblade.system.cache.DictCache; import org.springblade.system.cache.UserCache; import org.springblade.system.pojo.entity.User; import org.springframework.beans.BeanUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,6 +111,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl selectWorkOrderPage(IPage page, WorkOrderDTO workOrder) { return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); @@ -2602,4 +2622,153 @@ public class WorkOrderServiceImpl extends BaseServiceImpl prWorkPlanItems = workPlanItemService.listByWoId(woId); + + // 没有试验项目,不能转试 + if (!(prWorkPlanItems != null && !prWorkPlanItems.isEmpty())) { + return false; + } + + boolean flag = false; + for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) { + // 如果试验项目中包含 承压检测 则代表可以发起转试 24/8/5 牛营杰确认 + if ("承压检测".equals(prWorkPlanItem.getItemName())) { + if (prWorkPlanItem.getCheckResult() == -1) { + flag = true; + } + } + } + return flag; + } + + @Override + public List> trialItemList() { + // 构造 SQL 查询语句 + List basicClazzList = basicClazzService.list(new LambdaQueryWrapper() + .eq(BasicClazz::getBizType, 11)); + List nameList = basicClazzList.stream().map(BasicClazz::getName).collect(Collectors.toList()); + List> mapList = erpDataProduceClient.trialItemList(nameList).getData(); + // 转换查询结果 + List> result = new ArrayList<>(); + if (mapList != null && !mapList.isEmpty()) { + for (Map map : mapList) { + Map item = new HashMap<>(); + item.put("value", map.get("key") != null ? map.get("key") : ""); + item.put("label", map.get("value") != null ? map.get("value") : ""); + result.add(item); + } + } + return result; + } + + @Override + public Map queryAllocationMess(AllocationMessPageDTO dto) { + List allocationMessList = erpDataLogisticsClient.queryAllocationMess(dto).getData(); + int totalAllocationMessNum = erpDataLogisticsClient.queryAllocationMessNum(dto).getData(); + Map result = new HashMap<>(3); + result.put("current",dto.getPageNum()); + result.put("record",allocationMessList); + result.put("total",totalAllocationMessNum); + return result; + } + + @Override + public void launchTest(Map data, BladeUser user) throws Exception { + // 提取参数 + String batchNo = (String) data.get("batchNo"); + Integer quantity = Integer.parseInt(data.get("quantity").toString()); + String woCode = (String) data.get("woCode"); + String remark = (String) data.get("remark"); + String partCode = (String) data.get("partCode"); + String productType = (String) data.get("productType"); + String partName = (String) data.get("partName"); + Object testListObj = data.get("testList"); + JSONArray testList = (JSONArray) JSON.toJSON(testListObj); + Long woId = Long.parseLong(data.get("woId").toString()); + + // 生成转试单号 + String pptCode = generatePptCode(); + + // 获取相关工序 + WorkPlan workPlan = findRelevantWorkPlan(woId); + + // 处理每个测试项 + processTestItems(testList, batchNo, quantity, woCode, remark, partCode, partName, productType, pptCode, workPlan, user); + } + + private String generatePptCode() { + Calendar c = Calendar.getInstance(); + Date currentDate = new Date(); + c.setTime(currentDate); + String year = String.valueOf(c.get(Calendar.YEAR)); + int month = c.get(Calendar.MONTH) + 1; + String formattedMonth = month < 10 ? "0" + month : String.valueOf(month); + + PlanTest latestData = planTestService.getLatestData(currentDate); + StringBuilder pptCode = new StringBuilder("LCR" + year + "-" + formattedMonth); + + if (latestData != null && latestData.getId() != null) { + if (org.apache.commons.lang3.StringUtils.isNotBlank(latestData.getCode())) { + String numStr = String.valueOf(Integer.parseInt(latestData.getCode().substring(10)) + 1); + pptCode.append("0".repeat(Math.max(0, 6 - numStr.length()))); + pptCode.append(numStr); + } + } else { + pptCode.append("000001"); + } + return pptCode.toString(); + } + + private WorkPlan findRelevantWorkPlan(Long woId) { + List prWorkPlanItems = workPlanItemService.listByWoId(woId); + WorkPlan prWorkPlan = null; + for (WorkPlanItem item : prWorkPlanItems) { + if ("承压检测".equals(item.getItemName()) || "承压测试".equals(item.getItemName()) || "承压测试检测".equals(item.getItemName())) { + if (item.getCheckResult() == -1) { + prWorkPlan = workPlanService.getById(item.getWpId()); + } + } + } + return prWorkPlan; + } + + private void processTestItems(JSONArray testList, String batchNo, Integer quantity, String woCode, String remark, + String partCode, String partName, String productType, String pptCode, + WorkPlan workPlan, BladeUser user) throws Exception { + for (int i = 0; i < testList.size(); i++) { + JSONObject object = testList.getObject(i, JSONObject.class); + String value = object.getString("value"); + String label = object.getString("label"); + + JSONObject response = httpRequestService.launchTest( + batchNo, quantity, woCode, remark, value, label, i + 1, user, partCode, partName, productType, pptCode + ); + + if (response != null) { + saveTestRecord(workPlan, user, value, label, pptCode, response, i + 1); + } else { + throw new BusinessException("LIMS系统接口调用失败,请联系相关负责人处理。"); + } + } + } + + private void saveTestRecord(WorkPlan workPlan, BladeUser user, String testKey, String testName, + String pptCode, JSONObject response, int sequence) { + PlanTest prPlanTest = new PlanTest(); + prPlanTest.setWpId(workPlan.getId()); + prPlanTest.setTestUserId(user.getUserId()); + prPlanTest.setTestUserName(user.getUserName()); + prPlanTest.setTestTime(LocalDateTime.now()); + prPlanTest.setTestNo((long) sequence); + prPlanTest.setWpCode(testKey); + prPlanTest.setTestName(testName); + prPlanTest.setTestStatus("已送"); + prPlanTest.setCode(pptCode); + prPlanTest.setErpId(response.getString("id")); + prPlanTest.setDataId(response.getString("str1")); + planTestService.save(prPlanTest); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java index 4d1b047d..a4f85869 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java @@ -193,23 +193,23 @@ public class WorkPlanServiceImpl extends BaseServiceImpl paList = prPlateAroundService.listByWpId(wpId); -// WorkPlan workPlan = this.getById(wpId); -// if (!paList.isEmpty()) { -// for (PrPlateAround prPlateAround : paList) { -// // 如果有出库记录,删除上序的入库记录 -// if (PrPlateAround.BEFORE_PLAN_OUT.equals(prPlateAround.getPaType())) { -// if (workPlan.getFrontWpId() != null) { -// PrPlateAround prPlateAround1 = prPlateAroundService.getPrPlateAround(prWorkPlan.getFrontWorkPlan().getWpId(), PrPlateAround.BEFORE_PLAT_IN); -// if (prPlateAround1 != null && prPlateAround1.getPaId() != null) { -// prPlateAroundService.delete(prPlateAround1.getPaId()); -// } -// } -// } -// prPlateAroundService.delete(prPlateAround.getPaId()); -// } -// } + // 删除镀前出入库记录 + List paList = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, wpId)); + WorkPlan workPlan = this.getById(wpId); + if (!paList.isEmpty()) { + for (PlateAround prPlateAround : paList) { + // 如果有出库记录,删除上序的入库记录 + if (PlateAround.BEFORE_PLAN_OUT.equals(prPlateAround.getPaType())) { + if (workPlan.getFrontWpId() != null) { + PlateAround prPlateAround1 = plateAroundMapper.selectOne(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, workPlan.getFrontWpId()).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAT_IN)); + if (prPlateAround1 != null) { + plateAroundMapper.deleteById(prPlateAround1.getId()); + } + } + } + plateAroundMapper.deleteById(prPlateAround.getId()); + } + } this.removeById(wpId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/PlanTestController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/PlanTestController.java index 9ca096ef..c3027b09 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/PlanTestController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/PlanTestController.java @@ -10,6 +10,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Configuration; import jakarta.validation.Valid; @@ -24,6 +25,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.logistics.pojo.dto.AllocationMessPageDTO; +import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.quality.constant.QAModuleConst; import org.springblade.desk.quality.excel.PlanTestExcel; import org.springblade.desk.quality.pojo.entity.PlanTest; @@ -52,6 +55,8 @@ public class PlanTestController extends BladeController { private final IPlanTestService service; + private IWorkOrderService workOrderService; + /** * [转试记录] 详情 */ @@ -278,4 +283,37 @@ public class PlanTestController extends BladeController { service.testPlanIncomplete(); return R.success(); } + + /** + * [转试记录] 判断是否符合转试条件 + */ + @PostMapping("/isTransferTest") + @ApiOperationSupport(order = 72) + @Operation(summary = "是否符合转试条件", description = "Long woId 订单id") + public R isTransferTest(@RequestParam("woId") Long woId) { + return R.data(workOrderService.isTransferTest(woId)); + } + + @PostMapping("/trialItemList") + @ApiOperationSupport(order = 73) + @Operation(summary = "获取转试的试验计划", description = "无需传参") + public R>> trialItemList() { + return R.data(workOrderService.trialItemList()); + } + + @PostMapping("/launchTest") + @ApiOperationSupport(order = 73) + @Operation(summary = "发起试验计划", description = "无需传参") + public R launchTest(@RequestBody Map data, HttpServletRequest request) throws Exception { + BladeUser user = AuthUtil.getUser(); + workOrderService.launchTest(data, user); + return R.success(); + } + + @PostMapping(value = "/queryAllocationMess") + @ApiOperationSupport(order = 1) + @Operation(summary = "加载配套信息", description = "filterContext 查询参数") + private R> queryAllocationMess(@RequestBody AllocationMessPageDTO allocationMessPageDTO) { + return R.data(workOrderService.queryAllocationMess(allocationMessPageDTO)); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java index fdc8816c..c75101ae 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java @@ -15,8 +15,6 @@ import org.apache.commons.lang3.StringUtils; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.desk.energy.util.HttpRequestService; -import org.springblade.desk.logistics.mapper.PrWorkOrderMapper; -import org.springblade.desk.logistics.pojo.entity.PrWorkOrder; import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkPlan; @@ -76,9 +74,6 @@ public class PlanTestServiceImpl extends BaseServiceImpl prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper() - .eq(PrWorkOrder::getWpId, planTest.getWpId())); + List prWorkOrderList = workOrderMapper.selectList(new LambdaQueryWrapper() + .eq(WorkOrder::getWpId, planTest.getWpId())); if (prWorkOrderList == null || prWorkOrderList.isEmpty()){ return null; } @@ -188,8 +183,8 @@ public class PlanTestServiceImpl extends BaseServiceImpl prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper() - .eq(PrWorkOrder::getWpId, prPlanTest.getWpId())); + List prWorkOrderList = workOrderMapper.selectList(new LambdaQueryWrapper() + .eq(WorkOrder::getWpId, prPlanTest.getWpId())); JSONObject obj = httpRequestService.testRec(prWorkOrderList.get(0).getWoCode(), prPlanTest.getErpId(),prPlanTest.getDataId()); if (obj != null) { JSONObject data = obj.getJSONObject("data"); diff --git a/blade-service/blade-scheduling/pom.xml b/blade-service/blade-scheduling/pom.xml index 8915f1b8..4b65ed54 100644 --- a/blade-service/blade-scheduling/pom.xml +++ b/blade-service/blade-scheduling/pom.xml @@ -51,6 +51,12 @@ 4.6.0.RELEASE compile + + org.springblade + blade-erpdata-api + 4.6.0.RELEASE + compile + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java index 369d4b77..b2612926 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java @@ -45,10 +45,10 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.ObjectUtil; -import org.springblade.scheduling.scheduling.dto.WorkOrderDto; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; -import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel; import org.springblade.scheduling.pojo.vo.WorkOrderVO; +import org.springblade.scheduling.scheduling.dto.WorkOrderDto; +import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel; import org.springblade.scheduling.scheduling.excel.WorkOrderExcel; import org.springblade.scheduling.scheduling.service.IWorkOrderService; import org.springblade.scheduling.scheduling.vo.WorkPlanVO; @@ -330,5 +330,4 @@ public class WorkOrderController extends BladeController { workOrderService.test(); return R.success(); } - } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java index 797aaa11..7157efc5 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java @@ -28,6 +28,8 @@ package org.springblade.scheduling.scheduling.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springblade.core.secure.BladeUser; +import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.scheduling.pojo.vo.WorkOrderVO; import org.springblade.scheduling.scheduling.dto.WorkOrderDto; @@ -36,6 +38,7 @@ import org.springblade.scheduling.scheduling.excel.WorkOrderExcel; import org.springblade.scheduling.scheduling.vo.WorkPlanVO; import java.util.List; +import java.util.Map; /** * 车间订单表 服务类 @@ -48,7 +51,7 @@ public interface IWorkOrderService extends BaseService { * 自定义分页 * * @param page 分页参数 - * @param WorkOrder 查询参数 + * @param workOrder 查询参数 * @return IPage */ IPage selectWorkOrderPage(IPage page, WorkOrderVO workOrder); @@ -117,5 +120,4 @@ public interface IWorkOrderService extends BaseService { IPage selectProcessExecuteDetailPage(IPage page, WorkPlanVO workPlan); void test(); - } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index c2b69bb5..4df8be2c 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -34,6 +34,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fasterxml.jackson.core.type.TypeReference; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -110,6 +111,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl