src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java
@@ -6,6 +6,7 @@ import lombok.Data; import java.time.LocalDateTime; import java.util.List; @Data public class DeviceMaintenanceDto { @@ -66,4 +67,14 @@ @ApiModelProperty("å建人åç§°") private String createUserName; @ApiModelProperty("é¢ç¨å¤ä»¶ids") private String sparePartsIds; private String sparePartsNames; @ApiModelProperty("å¾çURLæ°ç»") private List<UploadImageDTO> imagesFile; } src/main/java/com/ruoyi/device/dto/DeviceRepairDto.java
@@ -69,6 +69,10 @@ @TableField(fill = FieldFill.INSERT) private Long tenantId; @ApiModelProperty("é¢ç¨å¤ä»¶ids") private String sparePartsIds; private String sparePartsNames; } src/main/java/com/ruoyi/device/dto/UploadImageDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.ruoyi.device.dto; import lombok.Data; @Data public class UploadImageDTO { private String name; private String type; private String url; } src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -3,13 +3,16 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.device.dto.UploadImageDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.List; @Data @TableName("device_maintenance") @@ -84,4 +87,13 @@ @ApiModelProperty("ç§æ·id") @TableField(fill = FieldFill.INSERT) private Long tenantId; @ApiModelProperty("é¢ç¨å¤ä»¶ids") private String sparePartsIds; /** * å¾çURLæ°ç» */ @TableField(value = "images_file", typeHandler = JacksonTypeHandler.class) private List<UploadImageDTO> imagesFile; } src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
@@ -73,4 +73,8 @@ private Long tenantId; @ApiModelProperty("é¢ç¨å¤ä»¶ids") private String sparePartsIds; } src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -4,26 +4,34 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.xiaoymin.knife4j.core.util.StrUtil; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.dto.DeviceMaintenanceDto; import com.ruoyi.device.dto.DeviceRepairDto; import com.ruoyi.device.execl.DeviceMaintenanceExeclDto; import com.ruoyi.device.mapper.DeviceMaintenanceMapper; import com.ruoyi.device.pojo.DeviceMaintenance; import com.ruoyi.device.service.IDeviceMaintenanceService; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper; import com.ruoyi.measuringinstrumentledger.pojo.SpareParts; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.*; import java.util.stream.Collectors; @Service public class DeviceMaintenanceServiceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements IDeviceMaintenanceService { @Autowired private SparePartsMapper sparePartsMapper; @Autowired private DeviceMaintenanceMapper deviceMaintenanceMapper; @@ -31,7 +39,44 @@ @Override public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) { return deviceMaintenanceMapper.queryPage(page, deviceMaintenanceDto); IPage<DeviceMaintenanceDto> deviceMaintenanceDtoIPage = deviceMaintenanceMapper.queryPage(page, deviceMaintenanceDto); List<DeviceMaintenanceDto> records = deviceMaintenanceDtoIPage.getRecords(); if (!CollectionUtils.isEmpty(records)) { // 1. è·åææå¯ä¸çå¤ä»¶ID Set<String> allIds = records.stream() .map(DeviceMaintenanceDto::getSparePartsIds) .filter(StrUtil::isNotBlank) .flatMap(ids -> Arrays.stream(StringUtils.split(ids, ","))) .map(String::trim) .filter(StrUtil::isNotBlank) .collect(Collectors.toSet()); if (!allIds.isEmpty()) { // 2. æ¥è¯¢å¹¶å建IDå°åç§°çæ å° Map<Long, String> idToNameMap = sparePartsMapper.selectBatchIds(new ArrayList<>(allIds)) .stream() .collect(Collectors.toMap( SpareParts::getId, SpareParts::getName, (v1, v2) -> v1 )); // 3. 为æ¯ä¸ªè®°å½è®¾ç½®å¤ä»¶åç§° records.forEach(record -> { String names = Optional.ofNullable(record.getSparePartsIds()) .filter(StrUtil::isNotBlank) .map(ids -> Arrays.stream(StringUtils.split(ids, ",")) .map(String::trim) .map(Long::valueOf) .map(idToNameMap::get) .filter(Objects::nonNull) .collect(Collectors.joining(","))) .orElse(""); record.setSparePartsNames(names); }); } } return deviceMaintenanceDtoIPage; } @Override src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -1,8 +1,11 @@ package com.ruoyi.device.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.xiaoymin.knife4j.core.util.StrUtil; import com.google.common.collect.Lists; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.dto.DeviceDefectRecordDto; @@ -15,15 +18,20 @@ import com.ruoyi.device.service.IDeviceLedgerService; import com.ruoyi.device.service.IDeviceRepairService; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper; import com.ruoyi.measuringinstrumentledger.pojo.SpareParts; import com.ruoyi.measuringinstrumentledger.service.SparePartsService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.*; import java.util.stream.Collectors; @Service @AllArgsConstructor @@ -36,10 +44,51 @@ private DeviceRepairMapper deviceRepairMapper; @Autowired private IDeviceLedgerService deviceLedgerService; @Autowired private SparePartsMapper sparePartsMapper; @Override public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) { IPage<DeviceRepairDto> deviceRepairDtoIPage = deviceRepairMapper.queryPage(page, deviceRepairDto); return deviceRepairMapper.queryPage(page, deviceRepairDto); List<DeviceRepairDto> records = deviceRepairDtoIPage.getRecords(); if (!CollectionUtils.isEmpty(records)) { // 1. è·åææå¯ä¸çå¤ä»¶ID Set<String> allIds = records.stream() .map(DeviceRepairDto::getSparePartsIds) .filter(StrUtil::isNotBlank) .flatMap(ids -> Arrays.stream(StringUtils.split(ids, ","))) .map(String::trim) .filter(StrUtil::isNotBlank) .collect(Collectors.toSet()); if (!allIds.isEmpty()) { // 2. æ¥è¯¢å¹¶å建IDå°åç§°çæ å° Map<Long, String> idToNameMap = sparePartsMapper.selectBatchIds(new ArrayList<>(allIds)) .stream() .collect(Collectors.toMap( SpareParts::getId, SpareParts::getName, (v1, v2) -> v1 )); // 3. 为æ¯ä¸ªè®°å½è®¾ç½®å¤ä»¶åç§° records.forEach(record -> { String names = Optional.ofNullable(record.getSparePartsIds()) .filter(StrUtil::isNotBlank) .map(ids -> Arrays.stream(StringUtils.split(ids, ",")) .map(String::trim) .map(Long::valueOf) .map(idToNameMap::get) .filter(Objects::nonNull) .collect(Collectors.joining(","))) .orElse(""); record.setSparePartsNames(names); }); } } return deviceRepairDtoIPage; } @Override @@ -48,7 +97,7 @@ deviceRepair.setDeviceName(byId.getDeviceName()); deviceRepair.setDeviceModel(byId.getDeviceModel()); boolean save = this.save(deviceRepair); if (save){ if (save) { return AjaxResult.success(); } return AjaxResult.error(); @@ -63,7 +112,7 @@ deviceDefectRecordDto.setDeviceLedgerId(id); deviceDefectRecordDto.setStatus("严é缺é·"); List<DeviceDefectRecordDto> records = deviceDefectRecordService.listPage(new Page<>(1, -1), deviceDefectRecordDto).getRecords(); if (!records.isEmpty()){ if (!records.isEmpty()) { records.forEach(deviceDefectRecord -> { deviceDefectRecord.setStatus("æ£å¸¸"); deviceDefectRecordService.updateByDDR(deviceDefectRecord); @@ -81,21 +130,21 @@ ArrayList<DeviceRepairExeclDto> deviceLedgerExeclDtos = new ArrayList<>(); supplierManageList.stream().forEach(deviceRepair -> { DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); BeanUtils.copyProperties(deviceRepair, deviceRepairExeclDto); deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾ ç»´ä¿®" : deviceRepair.getStatus() == 1 ? "å®ç»" : "失败"); deviceLedgerExeclDtos.add(deviceRepairExeclDto); }); ExcelUtil<DeviceRepairExeclDto> util = new ExcelUtil<DeviceRepairExeclDto>(DeviceRepairExeclDto.class); util.exportExcel(response, deviceLedgerExeclDtos, "è®¾å¤æ¥ä¿®å¯¼åº"); }else { } else { ArrayList<Long> arrayList = new ArrayList<>(); Arrays.stream(ids).map(arrayList::add); List<DeviceRepair> supplierManageList = deviceRepairMapper.selectBatchIds(arrayList); ArrayList<DeviceRepairExeclDto> deviceLedgerExeclDtos = new ArrayList<>(); supplierManageList.stream().forEach(deviceRepair -> { DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); BeanUtils.copyProperties(deviceRepair, deviceRepairExeclDto); deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾ ç»´ä¿®" : deviceRepair.getStatus() == 1 ? "å®ç»" : "失败"); deviceLedgerExeclDtos.add(deviceRepairExeclDto); src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java
@@ -58,4 +58,10 @@ return AjaxResult.success(sparePartsService.removeById(id)); } @GetMapping("getByIdDeviceId") @ApiOperation("å¤ä»¶åç±»-æ¥è¯¢") public AjaxResult getByDeviceId(Long deviceLedgerId){ return AjaxResult.success(sparePartsService.getByDeviceId(deviceLedgerId)); } } src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java
@@ -8,7 +8,11 @@ import io.lettuce.core.dynamic.annotation.Param; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface SparePartsMapper extends BaseMapper<SpareParts> { IPage<SparePartsDto> listPage(Page page,@Param("spareParts") SpareParts spareParts); List<SparePartsDto> getByDeviceId(@Param("id") Long id); } src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java
@@ -13,4 +13,6 @@ IPage<SparePartsDto> listPage(Page page, SpareParts spareParts); List<SparePartsDto> getTree(); List<SparePartsDto> getByDeviceId(Long id); } src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java
@@ -15,10 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; @Service @@ -52,6 +49,11 @@ return buildTree(records); } @Override public List<SparePartsDto> getByDeviceId(Long id) { return sparePartsMapper.getByDeviceId(id); } /** * å°æå¹³ç»ææ°æ®è½¬æ¢ä¸ºæ å½¢ç»æ src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -81,43 +81,45 @@ productProcessRoute.setBomId(processRoute.getBomId()); productProcessRouteMapper.insert(productProcessRoute); //æ°å¢ç产订åä¸çå·¥èºè·¯çº¿å表 List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); //æ·»å æåºï¼æ§è¡æåä¸éå·¥åºçå·¥å List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()).orderByDesc(ProcessRouteItem::getDragSort)); // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); for (ProcessRouteItem processRouteItem : processRouteItems) { ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); productProcessRouteItem.setProductOrderId(productOrder.getId()); productProcessRouteItem.setProductRouteId(productProcessRoute.getId()); productProcessRouteItem.setDragSort(processRouteItem.getDragSort()); int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); if (lastNo.startsWith(datePrefix)) { String seqStr = lastNo.substring(datePrefix.length()); try { sequenceNumber = Integer.parseInt(seqStr) + 1; } catch (NumberFormatException e) { sequenceNumber = 1; } ProcessRouteItem processRouteItem = processRouteItems.get(0); // for (ProcessRouteItem processRouteItem : processRouteItems) { ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); productProcessRouteItem.setProductOrderId(productOrder.getId()); productProcessRouteItem.setProductRouteId(productProcessRoute.getId()); productProcessRouteItem.setDragSort(processRouteItem.getDragSort()); int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); if (lastNo.startsWith(datePrefix)) { String seqStr = lastNo.substring(datePrefix.length()); try { sequenceNumber = Integer.parseInt(seqStr) + 1; } catch (NumberFormatException e) { sequenceNumber = 1; } } // çæå®æ´çå·¥åå· String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setProductOrderId(productOrder.getId()); ProductOrder order = productOrderMapper.selectById(productOrder.getId()); productWorkOrder.setPlanQuantity(order.getQuantity()); productWorkOrder.setWorkOrderNo(workOrderNoStr); productWorkOrder.setStatus(1); productWorkOrderMapper.insert(productWorkOrder); } // çæå®æ´çå·¥åå· String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setProductOrderId(productOrder.getId()); ProductOrder order = productOrderMapper.selectById(productOrder.getId()); productWorkOrder.setPlanQuantity(order.getQuantity()); productWorkOrder.setWorkOrderNo(workOrderNoStr); productWorkOrder.setStatus(1); productWorkOrderMapper.insert(productWorkOrder); // } } return productOrderMapper.updateById(productOrder); } @@ -149,11 +151,11 @@ //妿已ç»å¼å§ç产,ä¸è½å é¤ //æ¥è¯¢ç产订åä¸çå·¥å List<ProductWorkOrder> productWorkOrders = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery().in(ProductWorkOrder::getProductOrderId, ids)); if (productWorkOrders.size()>0){ if (productWorkOrders.size() > 0) { //夿æ¯å¦ææ¥å·¥æ°æ® List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList(Wrappers.<ProductionProductMain>lambdaQuery() .in(ProductionProductMain::getWorkOrderId, productWorkOrders.stream().map(ProductWorkOrder::getId).collect(Collectors.toList()))); if (productionProductMains.size()>0){ if (productionProductMains.size() > 0) { throw new RuntimeException("ç产订åå·²ç»å¼å§ç产,ä¸è½å é¤"); } //å é¤å·¥å src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -329,8 +329,8 @@ stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode()); //å é¤ä¸éè¦è´¨æ£çåæ ¼å ¥åº stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode()); //å é¤æå ¥å¯¹åºçåºåºè®°å½ stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode()); //å é¤æå ¥å¯¹åºçåºåºè®°å½ 䏿§è¡åºåºï¼å¯¹åºçå é¤åºåºä¹ä¸æ§è¡ // stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode()); // å é¤ä¸»è¡¨ productionProductMainMapper.deleteById(productionProductMain.getId()); return true; src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -85,7 +85,6 @@ private StockUtils stockUtils; @Autowired private ProductStructureMapper productStructureMapper; @Autowired @@ -104,14 +103,14 @@ // queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId()) // .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType()); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct); if(!CollectionUtils.isEmpty(salesLedgerProducts)){ if (!CollectionUtils.isEmpty(salesLedgerProducts)) { salesLedgerProducts.forEach(item -> { // åè´§ä¿¡æ¯ ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>() .eq(ShippingInfo::getSalesLedgerProductId, item.getId()) .orderByDesc(ShippingInfo::getCreateTime) .last("limit 1")); if(shippingInfo != null){ if (shippingInfo != null) { item.setShippingDate(shippingInfo.getShippingDate()); item.setShippingCarNumber(shippingInfo.getShippingCarNumber()); item.setShippingStatus(shippingInfo.getStatus()); @@ -131,8 +130,8 @@ BigDecimal noInvoiceNum = BigDecimal.ZERO; BigDecimal noInvoiceAmount = BigDecimal.ZERO; for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) { if(ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()){ invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum()); if (ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()) { invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum()); invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount()); } } @@ -166,7 +165,7 @@ //å é¤åè´§ä¿¡æ¯ List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>() .in(ShippingInfo::getSalesLedgerProductId, Arrays.asList(ids))); if(!CollectionUtils.isEmpty(shippingInfos)){ if (!CollectionUtils.isEmpty(shippingInfos)) { shippingInfoService.delete(shippingInfos.stream().map(ShippingInfo::getId).collect(Collectors.toList())); } @@ -203,12 +202,12 @@ @Transactional(rollbackFor = Exception.class) public int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct) { // å¾ åæ¬¾ï¼ä»æ¬¾ if(salesLedgerProduct.getType().equals(1)){ if (salesLedgerProduct.getType().equals(1)) { salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal())); //æªå¼ç¥¨æ°é+éé¢ salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity()); salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); }else{ } else { salesLedgerProduct.setPendingTicketsTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getTicketsTotal())); // æªæ¥ç¥¨æ°é+éé¢ salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity()); @@ -279,7 +278,7 @@ List<ProcessRoute> processRoutes = processRouteMapper.selectList(new QueryWrapper<ProcessRoute>().lambda() .eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()) .orderByDesc(ProcessRoute::getCreateTime)); if (processRoutes.size()>0){ if (processRoutes.size() > 0) { ProcessRoute processRoute = processRoutes.get(0); //æ°å¢ç产订åå·¥èºè·¯çº¿ä¸»è¡¨ ProductProcessRoute productProcessRoute = new ProductProcessRoute(); @@ -289,45 +288,46 @@ productProcessRoute.setBomId(processRoute.getBomId()); productProcessRouteMapper.insert(productProcessRoute); //æ°å¢ç产订åå·¥èºè·¯çº¿å表 List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()).orderByDesc(ProcessRouteItem::getDragSort)); // çæå½åæ¥æçåç¼ï¼å¹´ææ¥â ProcessRouteItem processRouteItem = processRouteItems.get(0); String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); for (ProcessRouteItem processRouteItem : processRouteItems) { ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); productProcessRouteItem.setProductOrderId(productOrder.getId()); productProcessRouteItem.setProductRouteId(productProcessRoute.getId()); productProcessRouteItem.setDragSort(processRouteItem.getDragSort()); int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); if (lastNo.startsWith(datePrefix)) { String seqStr = lastNo.substring(datePrefix.length()); try { sequenceNumber = Integer.parseInt(seqStr) + 1; } catch (NumberFormatException e) { sequenceNumber = 1; } // for (ProcessRouteItem processRouteItem : processRouteItems) { ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); productProcessRouteItem.setProductOrderId(productOrder.getId()); productProcessRouteItem.setProductRouteId(productProcessRoute.getId()); productProcessRouteItem.setDragSort(processRouteItem.getDragSort()); int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); if (lastNo.startsWith(datePrefix)) { String seqStr = lastNo.substring(datePrefix.length()); try { sequenceNumber = Integer.parseInt(seqStr) + 1; } catch (NumberFormatException e) { sequenceNumber = 1; } } // çæå®æ´çå·¥åå· String workOrderNoStr ="GD"+ String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setProductOrderId(productOrder.getId()); productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity()); productWorkOrder.setWorkOrderNo(workOrderNoStr); productWorkOrder.setStatus(1); productWorkOrderMapper.insert(productWorkOrder); } // çæå®æ´çå·¥åå· String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setProductOrderId(productOrder.getId()); productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity()); productWorkOrder.setWorkOrderNo(workOrderNoStr); productWorkOrder.setStatus(1); productWorkOrderMapper.insert(productWorkOrder); } // } productOrder.setRouteId(processRoute.getId()); productOrderMapper.updateById(productOrder); } @@ -431,9 +431,9 @@ IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPage(page, salesLedgerProduct); salesLedgerProductDtoIPage.getRecords().forEach(item -> { // å¤æç¶æ if(item.getTaxInclusiveTotalPrice().compareTo(item.getInvoiceTotal()) == 0){ if (item.getTaxInclusiveTotalPrice().compareTo(item.getInvoiceTotal()) == 0) { item.setStatusName("已宿仿¬¾"); }else{ } else { item.setStatusName("æªå®æä»æ¬¾"); } }); @@ -445,9 +445,9 @@ IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPagePurchaseLedger(page, salesLedgerProduct); salesLedgerProductDtoIPage.getRecords().forEach(item -> { // å¤æç¶æ if(item.getTaxInclusiveTotalPrice().compareTo(item.getTicketsTotal()) == 0){ if (item.getTaxInclusiveTotalPrice().compareTo(item.getTicketsTotal()) == 0) { item.setStatusName("已宿仿¬¾"); }else{ } else { item.setStatusName("æªå®æä»æ¬¾"); } }); @@ -488,6 +488,7 @@ throw new RuntimeException("å¨ææ´æ°ä¸»è¡¨éé¢å¤±è´¥", e); } } @Override public R judgmentInventory(SalesLedgerProduct salesLedgerProduct) { //è·åäº§åææ°çå·¥èºè·¯çº¿ @@ -506,7 +507,7 @@ //æéæ°é BigDecimal multiply = salesLedgerProduct.getQuantity().multiply(productStructureDto.getUnitQuantity()); BigDecimal subtract =stockInventory.getQualitity().subtract(stockInventory.getLockedQuantity()).subtract(multiply).divide(BigDecimal.ONE, 2, RoundingMode.CEILING); BigDecimal subtract = stockInventory.getQualitity().subtract(stockInventory.getLockedQuantity()).subtract(multiply).divide(BigDecimal.ONE, 2, RoundingMode.CEILING); if (subtract.compareTo(BigDecimal.ZERO) <= 0) { count++; stringBuffer.append(productStructureDto.getProductName()) @@ -517,9 +518,9 @@ .append(System.lineSeparator()); } } if (count>0) { if (count > 0) { return R.fail(stringBuffer.toString()); }else { } else { return R.ok(); } } src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
@@ -5,8 +5,28 @@ <mapper namespace="com.ruoyi.device.mapper.DeviceMaintenanceMapper"> <select id="queryPage" resultType="com.ruoyi.device.dto.DeviceMaintenanceDto"> select dm.id, <resultMap id="deviceMaintenanceResultMap" type="com.ruoyi.device.dto.DeviceMaintenanceDto"> <id property="id" column="id"/> <result property="deviceLedgerId" column="device_ledger_id"/> <result property="maintenancePlanTime" column="maintenance_plan_time"/> <result property="maintenanceActuallyTime" column="maintenance_actually_time"/> <result property="status" column="status"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> <result property="createUser" column="create_user"/> <result property="updateUser" column="update_user"/> <result property="tenantId" column="tenant_id"/> <result property="maintenanceActuallyName" column="maintenance_actually_name"/> <result property="deviceName" column="device_name"/> <result property="deviceModel" column="device_model"/> <result property="createUserName" column="create_user_name"/> <result property="imagesFile" column="images_file" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/> </resultMap> <select id="queryPage" resultMap="deviceMaintenanceResultMap"> select dm.id, dm.device_ledger_id, dm.maintenance_plan_time, dm.maintenance_actually_time, @@ -20,31 +40,28 @@ dm.maintenance_actually_name, dl.device_name, dl.device_model, su.nick_name as create_user_name su.nick_name as create_user_name, dm.spare_parts_ids su.nick_name as create_user_name, dm.images_file from device_maintenance dm left join device_ledger dl on dm.device_ledger_id = dl.id left join sys_user su on dm.create_user = su.user_id <where> 1 = 1 <if test="deviceMaintenanceDto.deviceName != null"> <if test="deviceMaintenanceDto.deviceName != null and deviceMaintenanceDto.deviceName != ''"> and dl.device_name like concat('%',#{deviceMaintenanceDto.deviceName},'%') </if> <if test="deviceMaintenanceDto.deviceModel != null"> <if test="deviceMaintenanceDto.deviceModel != null and deviceMaintenanceDto.deviceModel != ''"> and dl.device_model like concat('%',#{deviceMaintenanceDto.deviceModel},'%') </if> <if test="deviceMaintenanceDto.status != null"> and dm.status = #{deviceMaintenanceDto.status} </if> <if test="deviceMaintenanceDto.maintenanceActuallyName != null"> <if test="deviceMaintenanceDto.maintenanceActuallyName != null and deviceMaintenanceDto.maintenanceActuallyName != ''"> and dm.maintenance_actually_name like concat('%',#{deviceMaintenanceDto.maintenanceActuallyName},'%') </if> <if test="deviceMaintenanceDto.maintenancePlanTime != null"> and dm.maintenance_plan_time like concat('%',#{deviceMaintenanceDto.maintenancePlanTime},'%') </if> <if test="deviceMaintenanceDto.maintenanceActuallyTime != null"> and dm.maintenance_actually_time like concat('%',#{deviceMaintenanceDto.maintenanceActuallyTime},'%') </if> <if test="deviceMaintenanceDto.maintenanceActuallyTime != null"> <if test="deviceMaintenanceDto.maintenanceActuallyTime != null and deviceMaintenanceDto.maintenanceActuallyTime != ''"> and dm.maintenance_actually_time >= str_to_date(#{deviceMaintenanceDto.maintenanceActuallyTime}, '%Y-%m-%d') and dm.maintenance_actually_time < date_add(str_to_date(#{deviceMaintenanceDto.maintenanceActuallyTime}, '%Y-%m-%d'), interval 1 day) </if> src/main/resources/mapper/device/DeviceRepairMapper.xml
@@ -21,7 +21,8 @@ dr.update_user, dr.tenant_id, dl.device_name, dl.device_model dl.device_model, dr.spare_parts_ids from device_repair dr left join device_ledger dl on dr.device_ledger_id = dl.id <where> src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml
@@ -11,4 +11,9 @@ </if> </where> </select> <select id="getByDeviceId" resultType="com.ruoyi.measuringinstrumentledger.dto.SparePartsDto"> SELECT * FROM spare_parts WHERE status = 'æ£å¸¸' AND FIND_IN_SET(#{id}, device_ids) > 0 </select> </mapper>