5 天以前 | cuilei | ![]() |
5 天以前 | cuilei | ![]() |
5 天以前 | zhangherong | ![]() |
5 天以前 | zhangherong | ![]() |
5 天以前 | zhangherong | ![]() |
5 天以前 | cuilei | ![]() |
5 天以前 | cuilei | ![]() |
6 天以前 | lixiangyu | ![]() |
db/Ë«ÁÖлð¾æMESÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -4,7 +4,7 @@ "avatar": "", "version": "4.9.2", "createdTime": "2025-3-10 16:38:19", "updatedTime": "2025-9-9 17:51:22", "updatedTime": "2025-9-12 15:03:56", "dbConns": [], "profile": { "default": { @@ -71266,7 +71266,9 @@ "B57F92D3-3089-453E-A007-85C497CEE088", "EE37A932-3559-47C8-A1F3-1E788DE4A116", "D1A16DCC-C4AB-4717-A74C-1B52B918A87F", "378CF92C-B63B-4D7F-84DF-5D2F84CE4753" "378CF92C-B63B-4D7F-84DF-5D2F84CE4753", "9F7C10B2-9B87-4E80-AF35-D054CEEF11FA", "C4D7D8D8-A80F-4A15-B253-50CF701ADF78" ], "refViews": [], "refDiagrams": [], src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
@@ -1,8 +1,7 @@ package org.jeecg.modules.cms.controller; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
@@ -3,6 +3,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -12,6 +13,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.micrometer.core.annotation.Timed; import liquibase.pro.packaged.G; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; @@ -43,10 +45,10 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: åå ·é¢ç¨å * @Author: jeecg-boot * @Date: 2025-07-28 * @Version: V1.0 * @Description: åå ·é¢ç¨å * @Author: jeecg-boot * @Date: 2025-07-28 * @Version: V1.0 */ @Api(tags = "åå ·é¢ç¨å") @RestController @@ -58,14 +60,12 @@ @Autowired private ICuttingReceiveDetailService cuttingReceiveDetailService; @Autowired private ICuttingInventoryService cuttingInventoryService; /** * å页å表æ¥è¯¢ * * @param cuttingReceive * @param pageNo * @param pageSize * @param req * @return */ //@AutoLog(value = "åå ·é¢ç¨å-å页å表æ¥è¯¢") @ApiOperation(value = "åå ·é¢ç¨å-å页å表æ¥è¯¢", notes = "åå ·é¢ç¨å-å页å表æ¥è¯¢") @@ -75,16 +75,13 @@ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper<CuttingReceive> queryWrapper = QueryGenerator.initQueryWrapper(cuttingReceive, req.getParameterMap()); Page<CuttingReceive> page = new Page<CuttingReceive>(pageNo, pageSize); Page<CuttingReceive> page = new Page<>(pageNo, pageSize); IPage<CuttingReceive> pageList = cuttingReceiveService.page(page, queryWrapper); return Result.OK(pageList); } /** * æ·»å * * @param jSONObject * @return */ @AutoLog(value = "åå ·é¢ç¨å-æ·»å ") @ApiOperation(value = "åå ·é¢ç¨å-æ·»å ", notes = "åå ·é¢ç¨å-æ·»å ") @@ -99,23 +96,32 @@ // å é¤åæå ³èçæç»æ°æ® List<CuttingReceiveDetail> cuttingReceiveDetailList = cuttingReceiveDetailService.lambdaQuery().eq(CuttingReceiveDetail::getOrderId, cuttingReceive.getId()).list(); cuttingReceiveDetailService.removeBatchByIds(cuttingReceiveDetailList); // éæ°æ·»å æ°çæç»æ°æ® JSONArray jsonArray = jSONObject.getJSONArray("detailData"); List<CuttingReceiveDetail> list = jsonArray.toJavaList(CuttingReceiveDetail.class); for (int i = 0; i < list.size(); i++) { CuttingReceiveDetail temp = list.get(i); for (CuttingReceiveDetail temp : list) { temp.setOrderId(cuttingReceive.getId()); cuttingReceiveDetailService.save(temp); } // æ´æ°åºååå ·ç¶æä¸º"å·²åºåº" if (!list.isEmpty()) { // æ¶éææéè¦æ´æ°ç¶æçåºåID List<String> inventoryIds = list.stream() .map(CuttingReceiveDetail::getInventoryId) // å设CuttingReceiveDetail䏿inventoryIdåæ®µ .filter(id -> id != null && !id.isEmpty()) .collect(Collectors.toList()); if (!inventoryIds.isEmpty()) { // æ´æ°åºåç¶æä¸º"å·²åºåº" cuttingInventoryService.updateStatus(inventoryIds, "å¾ åºåº"); } } return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * * @param cuttingReceive * @return */ @AutoLog(value = "åå ·é¢ç¨å-ç¼è¾") @ApiOperation(value = "åå ·é¢ç¨å-ç¼è¾", notes = "åå ·é¢ç¨å-ç¼è¾") @@ -128,44 +134,35 @@ /** * éè¿idå é¤ * * @param id * @return */ @AutoLog(value = "åå ·é¢ç¨å-éè¿idå é¤") @ApiOperation(value = "åå ·é¢ç¨å-éè¿idå é¤", notes = "åå ·é¢ç¨å-éè¿idå é¤") //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name = "id", required = true) String id) { public Result<String> delete(@RequestParam(name = "id") String id) { cuttingReceiveService.removeById(id); return Result.OK("å 餿å!"); } /** * æ¹éå é¤ * * @param ids * @return */ @AutoLog(value = "åå ·é¢ç¨å-æ¹éå é¤") @ApiOperation(value = "åå ·é¢ç¨å-æ¹éå é¤", notes = "åå ·é¢ç¨å-æ¹éå é¤") //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { public Result<String> deleteBatch(@RequestParam(name = "ids") String ids) { this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("æ¹éå 餿å!"); } /** * éè¿idæ¥è¯¢ * * @param id * @return */ //@AutoLog(value = "åå ·é¢ç¨å-éè¿idæ¥è¯¢") @ApiOperation(value = "åå ·é¢ç¨å-éè¿idæ¥è¯¢", notes = "åå ·é¢ç¨å-éè¿idæ¥è¯¢") @GetMapping(value = "/queryById") public Result<CuttingReceive> queryById(@RequestParam(name = "id", required = true) String id) { public Result<CuttingReceive> queryById(@RequestParam(name = "id") String id) { CuttingReceive cuttingReceive = cuttingReceiveService.getById(id); if (cuttingReceive == null) { return Result.error("æªæ¾å°å¯¹åºæ°æ®"); @@ -175,9 +172,6 @@ /** * 导åºexcel * * @param request * @param cuttingReceive */ //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:exportXls") @RequestMapping(value = "/exportXls") @@ -187,10 +181,6 @@ /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ //@RequiresPermissions("cms_cutting_receive:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) @@ -200,9 +190,6 @@ /** * æ ¹æ®é¢ç¨idæ¥è¯¢é¢ç¨æç» * * @param orderId * @return */ @GetMapping("/detailList") public Result<?> detailList(@RequestParam("orderId") String orderId) { @@ -212,8 +199,6 @@ /** * éæ©åºååå ·çå表 * * @return */ @GetMapping("/getInventoryToolList") public Result<?> getInventoryToolList(@RequestParam("pageNo") Integer pageNo, @@ -222,4 +207,12 @@ IPage<Map<String, Object>> inventoryTooList = cuttingReceiveService.getInventoryToolList(pageNo, pageSize, params); return Result.ok(inventoryTooList); } @GetMapping("/submit") @Timed(value = "cutting.inbound.submit", description = "åå ·å ¥åºæäº¤èæ¶") public Result<?> submit(@RequestParam("orderId") String orderId) { return cuttingReceiveService.submit(orderId); } //TODO: @GetMapping("/handleBack") } src/main/java/org/jeecg/modules/cms/entity/CuttingReceive.java
@@ -59,6 +59,7 @@ /**é¢ç¨åç¶æ*/ @Excel(name = "é¢ç¨åç¶æ", width = 15) @ApiModelProperty(value = "é¢ç¨åç¶æ") @Dict(dicCode = "order_status") private String orderStatus; /**é¢ç¨äºº*/ @Excel(name = "é¢ç¨äºº", width = 15) src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveDetailMapper.xml
@@ -9,9 +9,10 @@ t1.cutting_id cuttingId, t1.workpiece_material workpieceMaterial, t1.used_life usedLife, t2.cutting_barcode cuttingCBarcode, t2.cutting_barcode cuttingBarcode, t2.inventory_status inventoryStatus, t2.current_life currentLife, t2.id inventoryId, t3.cutting_code cuttingCode, t3.cutting_name cuttingName FROM src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
@@ -17,5 +17,6 @@ public interface ICuttingInventoryService extends IService<CuttingInventory> { IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page); void updateStatus(List<String> ids, String status); } src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java
@@ -1,6 +1,7 @@ package org.jeecg.modules.cms.service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.cms.entity.CuttingReceive; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,4 +16,5 @@ public interface ICuttingReceiveService extends IService<CuttingReceive> { IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params); Result<?> submit(String orderId); } src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java
@@ -89,6 +89,13 @@ // æ¡ç çæè§å示ä¾ï¼åå ·ID + åºå·(4ä½) + éæºæ° return cuttingId + String.format("%04d", index + 1) + (int) (Math.random() * 10000); } /** * æäº¤å ¥åºå * * @param orderId å ¥åºåID * @return æäº¤ç»æ */ @Override @Timed(value = "cutting.inbound.submit", description = "åå ·å ¥åºæäº¤èæ¶") public synchronized Result<?> submit(String orderId) { @@ -160,8 +167,4 @@ return Result.error("æäº¤å¤±è´¥: " + e.getMessage()); } } } src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
@@ -1,21 +1,19 @@ package org.jeecg.modules.cms.service.impl; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.cms.entity.CuttingInventory; import org.jeecg.modules.cms.mapper.CuttingInventoryMapper; import org.jeecg.modules.cms.mapper.CuttingToolMapper; import org.jeecg.modules.cms.service.ICuttingInventoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; /** * @Description: åå ·åºå @@ -30,4 +28,15 @@ IPage<Map<String, Object>> result = baseMapper.statisticsByCuttingIdAndStatus(page); return result; } @Override @Transactional(rollbackFor = Exception.class) public void updateStatus(List<String> ids, String status) { if (ids != null && !ids.isEmpty() && StringUtils.isNotBlank(status)) { UpdateWrapper<CuttingInventory> updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", ids); updateWrapper.set("inventory_status", status); // æ ¹æ®å®é æ°æ®åºå段åè°æ´ this.update(updateWrapper); } } } src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java
@@ -2,13 +2,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.micrometer.core.annotation.Timed; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.cms.entity.CuttingReceive; import org.jeecg.modules.cms.entity.CuttingReceiveDetail; import org.jeecg.modules.cms.mapper.CuttingReceiveMapper; import org.jeecg.modules.cms.service.ICuttingInventoryService; import org.jeecg.modules.cms.service.ICuttingReceiveDetailService; import org.jeecg.modules.cms.service.ICuttingReceiveService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.ArrayList; import java.util.List; import java.util.Map; /** @@ -17,12 +26,66 @@ * @Date: 2025-07-28 * @Version: V1.0 */ @Slf4j @Service public class CuttingReceiveServiceImpl extends ServiceImpl<CuttingReceiveMapper, CuttingReceive> implements ICuttingReceiveService { @Autowired private ICuttingInventoryService cuttingInventoryService; @Autowired private ICuttingReceiveDetailService cuttingReceiveDetailService; @Override public IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params) { IPage<Map> pageData = new Page<Map>(pageNo, pageSize); return super.getBaseMapper().getInventoryToolList(pageData,params); } @Override @Timed(value = "cutting.receive.submit", description = "åå ·é¢ç¨æäº¤èæ¶") public synchronized Result<?> submit(String orderId) { long startTime = System.currentTimeMillis(); try { // 1. æ´æ°é¢ç¨åç¶æ CuttingReceive cuttingReceive = this.getById(orderId); if (cuttingReceive == null) { return Result.error("æªæ¾å°å¯¹åºçé¢ç¨å"); } // æ£æ¥é¢ç¨åç¶æï¼åªå è®¸ç¶æä¸º"1"çé¢ç¨åæäº¤ if (!"1".equals(cuttingReceive.getOrderStatus())) { return Result.error("åªæç¶æä¸ºæªæäº¤çé¢ç¨åæè½æ§è¡æäº¤æä½"); } cuttingReceive.setOrderStatus("2"); // 设置为已é¢ç¨ç¶æ boolean updateResult = this.updateById(cuttingReceive); if (!updateResult) { return Result.error("æ´æ°é¢ç¨åç¶æå¤±è´¥ï¼å¯è½å·²è¢«å ¶ä»ç¨æ·å¤ç"); } // 2. è·åé¢ç¨æç» List<CuttingReceiveDetail> detailList = cuttingReceiveDetailService.lambdaQuery() .eq(CuttingReceiveDetail::getOrderId, orderId) .list(); // 3. æ¶éææéè¦æ´æ°ç¶æçåºåID List<String> inventoryIds = new ArrayList<>(); for (CuttingReceiveDetail detail : detailList) { if (detail.getInventoryId() != null && !detail.getInventoryId().isEmpty()) { inventoryIds.add(detail.getInventoryId()); } } // 4. æ¹éæ´æ°åºåç¶æä¸º"å·²åºåº" if (!inventoryIds.isEmpty()) { cuttingInventoryService.updateStatus(inventoryIds, "å·²åºåº"); } long endTime = System.currentTimeMillis(); log.info("åå ·é¢ç¨æäº¤å®æï¼èæ¶: {} ms", (endTime - startTime)); return Result.ok("æäº¤æå"); } catch (Exception e) { long endTime = System.currentTimeMillis(); log.error("æäº¤é¢ç¨å失败ï¼orderId: " + orderId + "ï¼èæ¶: " + (endTime - startTime) + " ms", e); return Result.error("æäº¤å¤±è´¥: " + e.getMessage()); } } } src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java
@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.util.TranslateDictTextUtils; import org.jeecg.modules.eam.constant.BusinessCodeConst; @@ -109,6 +110,7 @@ String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.INSPECTION_ORDER_CODE_RULE); eamInspectionOrderRequest.setOrderNum(codeSeq); eamInspectionOrderRequest.setCreationMethod(String.valueOf(OrderCreationMethodEnum.MANUAL)); eamInspectionOrderRequest.setDelFlag(CommonConstant.DEL_FLAG_0); eamInspectionOrderService.addInspectionOrder(eamInspectionOrderRequest); return Result.OK("æ·»å æåï¼"); } src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java
@@ -18,7 +18,8 @@ public interface LswMaterialInventoryMapper extends BaseMapper<LswMaterialInventory> { List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(@Param("materialNumberList") List<String> bomMaterialNumberList, @Param("factoryId") String factoryId); @Param("factoryId") String factoryId, @Param("heatFlag") String heatFlag); /** * åºåç»è®¡ src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml
@@ -13,7 +13,11 @@ <foreach collection="materialNumberList" item="item" separator="," open="(" close=")"> #{item} </foreach> <if test="heatFlag != null and heatFlag != ''"> AND t2.heat_treatment_flag = #{heatFlag} </if> AND t2.warehouse_id = #{factoryId} AND t2.inventory_status = 'NORMAL' AND t1.del_flag = 0 GROUP BY t1.material_number, src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java
@@ -16,7 +16,7 @@ */ public interface ILswMaterialInventoryService extends IService<LswMaterialInventory> { /** éè¿ç©æç¼ç å线边åºidæ¥è¯¢ç©æåºå */ List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId); List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId, String heatFlag); /** * åºåç»è®¡ src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java
@@ -43,8 +43,8 @@ private IFactoryService factoryService; @Override public List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId) { return lswMaterialInventoryMapper.selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, factoryId); public List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId, String heatFlag) { return lswMaterialInventoryMapper.selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, factoryId, heatFlag); } @Override src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java
@@ -13,18 +13,31 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.base.entity.Factory; import org.jeecg.modules.base.enums.ProductionTypeEnum; import org.jeecg.modules.base.service.IFactoryService; import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamInspectionOrder; import org.jeecg.modules.eam.entity.EamInspectionOrderDetail; import org.jeecg.modules.eam.entity.EamProcessCheck; import org.jeecg.modules.eam.service.*; import org.jeecg.modules.mes.dto.MesProductionWorkOrderRepublishRequest; import org.jeecg.modules.mes.dto.MesProductionWorkScheduleRequest; import org.jeecg.modules.mes.entity.MesKittingCompletenessCheck; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; import org.jeecg.modules.mes.enums.ProductionWorkOrderStatus; import org.jeecg.modules.mes.service.IMesKittingCompletenessCheckService; import org.jeecg.modules.mes.service.IMesProductionWorkOrderService; import org.jeecg.modules.mes.utils.CommonUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; @@ -44,6 +57,20 @@ public class MesProductionWorkOrderController extends JeecgController<MesProductionWorkOrder, IMesProductionWorkOrderService> { @Autowired private IMesProductionWorkOrderService mesProductionWorkOrderService; @Autowired private IMesKittingCompletenessCheckService mesKittingCompletenessCheckService; @Autowired private IEamInspectionOrderService eamInspectionOrderService; @Autowired private IEamInspectionOrderDetailService eamInspectionOrderDetailService; @Autowired private IEamProcessCheckService eamProcessCheckService; @Autowired private IEamProcessCheckDetailService eamProcessCheckDetailService; @Autowired private IEamEquipmentService eamEquipmentService; @Autowired private IFactoryService factoryService; /** * å页å表æ¥è¯¢ @@ -148,8 +175,8 @@ public Result<String> publish(@RequestParam("ids") String ids) { List<String> idList = Arrays.asList(ids.split(",")); List<MesProductionWorkOrder> list = mesProductionWorkOrderService.list(new LambdaQueryWrapper<MesProductionWorkOrder>() .in(MesProductionWorkOrder::getId, idList) .eq(MesProductionWorkOrder::getDelFlag, CommonConstant.DEL_FLAG_0)).stream() .in(MesProductionWorkOrder::getId, idList) .eq(MesProductionWorkOrder::getDelFlag, CommonConstant.DEL_FLAG_0)).stream() .filter(i -> !ProductionWorkOrderStatus.NEW.name().equals(i.getWorkOrderStatus())) .collect(Collectors.toList()); if (!list.isEmpty()) { @@ -169,7 +196,7 @@ } @AutoLog(value = "æäº§å·¥å-éåå¸æäº§è®¡å") @ApiOperation(value="æäº§å·¥å-éåå¸æäº§è®¡å", notes="éåå¸æäº§è®¡å") @ApiOperation(value = "æäº§å·¥å-éåå¸æäº§è®¡å", notes = "éåå¸æäº§è®¡å") //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:republish") @PostMapping(value = "/republish") public Result<String> republish(@RequestBody MesProductionWorkOrderRepublishRequest request) { @@ -189,7 +216,7 @@ } @AutoLog(value = "æäº§å·¥å-é½å¥æ§æ£æ¥") @ApiOperation(value="æäº§å·¥å-é½å¥æ§æ£æ¥", notes="é½å¥æ§æ£æ¥") @ApiOperation(value = "æäº§å·¥å-é½å¥æ§æ£æ¥", notes = "é½å¥æ§æ£æ¥") //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:workOrderCompletenessCheck") @GetMapping(value = "/workOrderCompletenessCheck") public Result<List<MesKittingCompletenessCheck>> workOrderCompletenessCheck(@RequestParam("id") String id) { @@ -200,6 +227,14 @@ if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(workOrder.getWorkOrderStatus())) { return Result.error("å½åå·¥åç¶æä¸è½è¿è¡é½å¥æ§æ£æ¥ï¼"); } Factory factory = factoryService.getById(workOrder.getFactoryId()); String productionType = factory.getProductionType(); if (ProductionTypeEnum.HEATTREATMENT.name().equals(productionType)) { //çå¤ç产线 List<MesKittingCompletenessCheck> list = mesProductionWorkOrderService.workOrderCompletenessCheckOnHeatTreatment(workOrder); return Result.ok(list); } //å ¶ä½äº§çº¿ List<MesKittingCompletenessCheck> list = mesProductionWorkOrderService.workOrderCompletenessCheck(workOrder); return Result.ok(list); } @@ -210,17 +245,116 @@ @GetMapping(value = "/execute") public Result<?> execute(@RequestParam("id") String id) { MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(id); if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(workOrder.getWorkOrderStatus()) && !CommonConstant.DEFAULT_1.equals(workOrder.getCompletenessCheckFlag()) && !CommonConstant.DEFAULT_1.equals(workOrder.getEquipmentInspectionFlag()) && !CommonConstant.DEFAULT_1.equals(workOrder.getProcessInspectionFlag())) { if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(workOrder.getWorkOrderStatus())) { return Result.error("å½åå·¥åç¶æä¸è½æ§è¡ï¼"); } //æ£æ¥æ¯å¦åè¿é½å¥æ§æ£æ¥ãå·¥èºç¹æ£ã设å¤ç¹æ£ if (!completeCheck(workOrder)) { return Result.error("请å 宿é½å¥æ§æ£æ¥ãå·¥èºç¹æ£ã设å¤ç¹æ£ï¼"); } MesProductionWorkOrder executeOrder = new MesProductionWorkOrder() .setId(id) .setWorkOrderStatus(ProductionWorkOrderStatus.EXECUTING.name()); mesProductionWorkOrderService.updateById(executeOrder); return Result.ok("æ§è¡æåï¼"); } private boolean completeCheck(MesProductionWorkOrder workOrder) { List<MesKittingCompletenessCheck> completenessCheckList = mesKittingCompletenessCheckService.list(new LambdaQueryWrapper<MesKittingCompletenessCheck>() .eq(MesKittingCompletenessCheck::getWorkOrderId, workOrder.getId())); if (completenessCheckList.isEmpty()) { return false; } List<EamInspectionOrder> inspectionOrderList = eamInspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>() .eq(EamInspectionOrder::getWorkOrderId, workOrder.getId())); if (inspectionOrderList.isEmpty()) { return false; } List<EamProcessCheck> processCheckList = eamProcessCheckService.list(new LambdaQueryWrapper<EamProcessCheck>() .eq(EamProcessCheck::getWorkOrderId, workOrder.getId())); if (processCheckList.isEmpty()) { return false; } return true; } @AutoLog(value = "æäº§å·¥å-工忧è¡åæ£æ¥") @ApiOperation(value = "æäº§å·¥å-工忧è¡åæ£æ¥", notes = "æäº§å·¥å-工忧è¡åæ£æ¥") //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:execute") @GetMapping(value = "/checkBeforeExecute") public Result<?> checkBeforeExecute(@RequestParam("id") String id) { MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(id); if (workOrder == null) { throw new JeecgBootException("å·¥åä¸åå¨ï¼"); } Map<String, Object> resMap = new HashMap<>(); //é½å¥æ§æ£æ¥ List<MesKittingCompletenessCheck> completenessCheckList = mesKittingCompletenessCheckService.list(new LambdaQueryWrapper<MesKittingCompletenessCheck>() .eq(MesKittingCompletenessCheck::getWorkOrderId, id)); if (completenessCheckList.isEmpty()) { //æªæ§è¡è¿é½å¥æ§æ£æ¥ resMap.put("completenessCheckFlag", false); } else { List<MesKittingCompletenessCheck> unCompletenessList = completenessCheckList.stream().filter(i -> !CommonConstant.DEFAULT_1.equals(i.getCheckFlag())) .collect(Collectors.toList()); if (unCompletenessList.isEmpty()) { //é½å¥æ§æ£æ¥å ¨é¨éè¿ resMap.put("completenessCheckFlag", true); } else { List<String> unCompletenessListMaterial = unCompletenessList.stream() .map(i -> i.getMaterialNumber() + "[" + i.getMaterialName() + "]").collect(Collectors.toList()); //å卿ªéè¿ resMap.put("completenessCheckFlag", false); resMap.put("unCompletenessCheckList", unCompletenessListMaterial); } } //设å¤ç¹æ£ List<EamInspectionOrder> inspectionOrderList = eamInspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>() .eq(EamInspectionOrder::getWorkOrderId, workOrder.getId())); if (inspectionOrderList.isEmpty()) { //æªæ§è¡è¿è®¾å¤ç¹æ£ resMap.put("inspectionFlag", false); } else { List<String> unInspectEquipmentList = eamEquipmentService.list(new LambdaQueryWrapper<EamEquipment>() .eq(EamEquipment::getOrgId, workOrder.getFactoryId()) .eq(EamEquipment::getDelFlag, CommonConstant.DEL_FLAG_0) .apply("NOT EXISTS (SELECT 1 FROM eam_inspection_order t WHERE t.equipment_id = eam_equipment.id AND t.work_order_id = {0})", workOrder.getId()) .apply("EXISTS (SELECT 1 FROM eam_maintenance_standard t WHERE t.equipment_id = eam_equipment.id AND t.del_flag = {0} " + "AND t.standard_status = {1} AND t.maintenance_category = {2})", CommonConstant.DEL_FLAG_0, MaintenanceStandardStatusEnum.NORMAL.name(), MaintenanceCategoryEnum.POINT_INSPECTION.name())) .stream().map(e -> e.getEquipmentCode() + "[" + e.getEquipmentName() + "]").collect(Collectors.toList()); if (unInspectEquipmentList.isEmpty()) { //å ¨é¨è®¾å¤é½å·²ç¹æ£ resMap.put("equipmentInspectFlag", true); } else { //å卿ªç¹æ£çè®¾å¤ resMap.put("equipmentInspectFlag", false); resMap.put("unInspectEquipmentList", unInspectEquipmentList); } } //å·¥èºç¹æ£ List<EamProcessCheck> processCheckList = eamProcessCheckService.list(new LambdaQueryWrapper<EamProcessCheck>() .eq(EamProcessCheck::getWorkOrderId, workOrder.getId())); if (processCheckList.isEmpty()) { //æªæ§è¡è¿å·¥èºç¹æ£ resMap.put("processCheckFlag", false); } else { List<String> unCheckEquipmentList = eamEquipmentService.list(new LambdaQueryWrapper<EamEquipment>() .eq(EamEquipment::getOrgId, workOrder.getFactoryId()) .eq(EamEquipment::getDelFlag, CommonConstant.DEL_FLAG_0) .apply("EXISTS (SELECT 1 FROM eam_equipment_process_parameters t WHERE t.equipment_id = eam_equipment.id)") .apply("NOT EXISTS (SELECT 1 FROM eam_process_check t WHERE t.equipment_id = eam_equipment.id AND t.work_order_id = {0})", workOrder.getId())) .stream().map(e -> e.getEquipmentCode() + "[" + e.getEquipmentName() + "]").collect(Collectors.toList()); if (unCheckEquipmentList.isEmpty()) { //å ¨é¨è®¾å¤é½å·²ç¹æ£ resMap.put("processCheckFlag", true); } else { //å卿ªç¹æ£çè®¾å¤ resMap.put("processCheckFlag", false); resMap.put("unCheckEquipmentList", unCheckEquipmentList); } } return Result.ok(resMap); } /** @@ -310,4 +444,20 @@ return super.importExcel(request, response, MesProductionWorkOrder.class); } /** * ç©ææå¨éæ©æäº§å·¥åå表æ¥è¯¢ * * @param pageNo * @param pageSize * @return */ @ApiOperation(value = "æäº§å·¥å-ç©ææå¨å·¥åå表", notes = "æäº§å·¥å-ç©ææå¨å·¥åå表") @GetMapping(value = "/queryWorkOrderByTransfer") public Result<IPage<MesProductionWorkOrder>> queryWorkOrderByTransfer(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page<MesProductionWorkOrder> page = new Page<>(pageNo, pageSize); IPage<MesProductionWorkOrder> pageList = mesProductionWorkOrderService.queryWorkOrderByTransfer(page); return Result.OK(pageList); } } src/main/java/org/jeecg/modules/mes/mapper/MesProductionWorkOrderMapper.java
@@ -1,15 +1,12 @@ package org.jeecg.modules.mes.mapper; import java.util.List; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: æäº§å·¥å @@ -21,4 +18,11 @@ IPage<MesProductionWorkOrder> queryPageList(Page<MesProductionWorkOrder> page, @Param(Constants.WRAPPER) Wrapper<MesProductionWorkOrder> queryWrapper); /** * ç©ææå¨å·¥åæ¥è¯¢ * @param page * @return */ IPage<MesProductionWorkOrder> queryWorkOrderByTransfer(Page<MesProductionWorkOrder> page); } src/main/java/org/jeecg/modules/mes/mapper/xml/MesProductionWorkOrderMapper.xml
@@ -15,4 +15,14 @@ LEFT JOIN base_shift t3 ON t1.shift_id = t3.id ${ew.customSqlSegment} </select> <select id="queryWorkOrderByTransfer" resultType="org.jeecg.modules.mes.entity.MesProductionWorkOrder"> SELECT t1.* FROM mes_production_work_order t1 LEFT JOIN base_factory t2 ON t1.factory_id = t2.id where t1.work_order_status = 'PUBLISHED' and t2.production_type in ('ASSEMBLE', 'HEATTREATMENT') and t1.plan_quantity > 0 order by t1.create_time desc </select> </mapper> src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java
@@ -23,4 +23,13 @@ IPage<MesProductionWorkOrder> queryPageList(Page<MesProductionWorkOrder> page, Map<String, String[]> parameterMap); List<MesKittingCompletenessCheck> workOrderCompletenessCheck(MesProductionWorkOrder workOrder); List<MesKittingCompletenessCheck> workOrderCompletenessCheckOnHeatTreatment(MesProductionWorkOrder workOrder); /** * ç©ææå¨å·¥åæ¥è¯¢ * @param page * @return */ IPage<MesProductionWorkOrder> queryWorkOrderByTransfer(Page<MesProductionWorkOrder> page); } src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
@@ -234,7 +234,7 @@ List<String> bomMaterialNumberList = processBillMaterialsDetails.stream() .map(PmsProcessBillMaterialsDetail::getMaterialNumber).collect(Collectors.toList()); Map<String, LswMaterialInventoryVo> lswMaterialInventoryMap = lswMaterialInventoryService .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId()).stream() .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId(), null).stream() .collect(Collectors.toMap(LswMaterialInventoryVo::getMaterialNumber, v1 -> v1, (v1, v2) -> v1)); List<MesKittingCompletenessCheck> completenessCheckResultList = CollectionUtil.newArrayList(); //æ ¹æ®è®¢åBOMæç»ååºé½å¥æ£æ¥ç»æ @@ -260,4 +260,37 @@ }); return completenessCheckResultList; } @Override public List<MesKittingCompletenessCheck> workOrderCompletenessCheckOnHeatTreatment(MesProductionWorkOrder workOrder) { //æ¥è¯¢å·¥åæå±äº§çº¿å¯¹åºççº¿è¾¹ä» LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.list(new LambdaQueryWrapper<LineSideWarehouse>() .eq(LineSideWarehouse::getFactoryId, workOrder.getFactoryId()) .eq(LineSideWarehouse::getDelFlag, CommonConstant.DEL_FLAG_0) .eq(LineSideWarehouse::getWarehouseStatus, CommonConstant.DEFAULT_1)) .stream().findFirst().orElse(null); if (lineSideWarehouse == null) { throw new JeecgBootException("该产线æªé 置线边ä»ï¼"); } //æ¥è¯¢å·¥åçå¤çç©æå¯¹åºæ¯å¯å¨çº¿è¾¹ä»çåºå LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryService.selectLineSideMaterialInventoryByMaterialNumber(Collections .singletonList(workOrder.getMaterialNumber()), lineSideWarehouse.getId(), CommonConstant.DEFAULT_0) .stream().findFirst().orElse(null); if (materialInventoryVo == null) { throw new JeecgBootException("线边åºç©æä¸åå¨ï¼"); } MesKittingCompletenessCheck completenessCheck = new MesKittingCompletenessCheck() .setMaterialNumber(materialInventoryVo.getMaterialNumber()) .setMaterialName(materialInventoryVo.getMaterialName()) .setRequiredQuantity(workOrder.getPlanQuantity()) .setActualQuantity(materialInventoryVo.getStockQuantity()) .setProductionUnit("PC") .setCheckFlag(materialInventoryVo.getStockQuantity().compareTo(workOrder.getPlanQuantity()) > 0 ? CommonConstant.DEFAULT_1 : CommonConstant.DEFAULT_0); return Collections.singletonList(completenessCheck); } @Override public IPage<MesProductionWorkOrder> queryWorkOrderByTransfer(Page<MesProductionWorkOrder> page) { return this.getBaseMapper().queryWorkOrderByTransfer(page); } } src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsDetailMapper.java
@@ -24,4 +24,12 @@ * @return */ List<PmsProcessBillMaterialsDetail> queryByMaterialNumber(String materialNumber); /** * ç©ææå¨éæ©ç©æä½¿ç¨ * æ ¹æ®çå¤çæ¯å¯ç©ææ¥è¯¢ * @param materialNumber çå¤çç©æç¼ç * @return */ List<PmsProcessBillMaterialsDetail> queryByMaterialNumberOnly(String materialNumber); } src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsDetailMapper.xml
@@ -23,4 +23,9 @@ and t1.material_id = t2.id) </select> <select id="queryByMaterialNumberOnly" resultType="org.jeecg.modules.pms.entity.PmsProcessBillMaterialsDetail"> select DISTINCT t1.material_number, t1.material_name, t1.production_unit from pms_process_bill_materials_detail t1 where t1.material_number = #{materialNumber} </select> </mapper> src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsDetailServiceImpl.java
@@ -54,6 +54,11 @@ if (StringUtils.isBlank(materialNumber)) { return Collections.emptyList(); } return this.getBaseMapper().queryByMaterialNumber(materialNumber); List<PmsProcessBillMaterialsDetail> list = this.getBaseMapper().queryByMaterialNumber(materialNumber); if (CollectionUtil.isEmpty(list)) { //妿æ¯çå¤çï¼åä»£è¡¨éæ©æäº§å·¥åçäº§çæ¯å¯ return this.getBaseMapper().queryByMaterialNumberOnly(materialNumber); } return list; } }