| | |
| | | |
| | | @ApiOperation(value = "è·ååå§è®°å½æ¨¡æ¿å表") |
| | | @GetMapping("/selectStandardTemplatePageList") |
| | | public Result selectStandardTemplatePageList(Page page,StandardTemplate standardTemplate) throws Exception { |
| | | public Result selectStandardTemplatePageList(Page page,StandardTemplate standardTemplate){ |
| | | return Result.success(standardTemplateService.selectStandardTemplatePageList(page, standardTemplate)); |
| | | } |
| | | |
| | |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * @author Administrator |
| | |
| | | */ |
| | | IPage<IfsInventoryQuantitySupplierDto> getIfsByQuarter(Page<IfsInventoryQuantitySupplierDto> page, @Param("ew") QueryWrapper<IfsInventoryQuantitySupplierDto> ew, @Param("beginDeclareDate") String beginDeclareDate, @Param("endDeclareDate")String endDeclareDate); |
| | | |
| | | /** |
| | | * æ¹éæ¥è¯¢æ |
| | | * @param sampleTypeValues |
| | | * @return |
| | | */ |
| | | List<SampleDto> getStandardTree3Batch(@Param("sampleTypeValues") Set<String> sampleTypeValues); |
| | | } |
| | | |
| | | |
| | |
| | | .like(StandardProductList::getTree, tree)); |
| | | } |
| | | |
| | | boolean success = false; |
| | | int retryCount = 0; |
| | | while (!success && retryCount < 100) { |
| | | try { |
| | | standardProductListService2.saveBatch(list.stream().map(a -> { |
| | | a.setFactory(trees[0]); |
| | | a.setLaboratory(trees[1]); |
| | | a.setSampleType(trees[2]); |
| | | a.setCreateUser(userId); |
| | | a.setUpdateUser(userId); |
| | | a.setStandardMethodListId(id); |
| | | return a; |
| | | }).collect(Collectors.toList())); |
| | | ; |
| | | success = true; |
| | | } catch (Exception e) { |
| | | // å¤çéå¤ ID çè®°å½ï¼éæ°çæ ID å¹¶ç»§ç»å°è¯æå
¥ |
| | | for (StandardProductList productList : list) { |
| | | productList.setId(IdWorker.getId()); |
| | | } |
| | | try { |
| | | standardProductListService2.saveBatch(list.stream().map(a -> { |
| | | a.setFactory(trees[0]); |
| | | a.setLaboratory(trees[1]); |
| | | a.setSampleType(trees[2]); |
| | | a.setCreateUser(userId); |
| | | a.setUpdateUser(userId); |
| | | a.setStandardMethodListId(id); |
| | | return a; |
| | | }).collect(Collectors.toList())); |
| | | } catch (Exception e) { |
| | | // å¤çéå¤ ID çè®°å½ï¼éæ°çæ ID å¹¶ç»§ç»å°è¯æå
¥ |
| | | for (StandardProductList productList : list) { |
| | | productList.setId(IdWorker.getId()); |
| | | } |
| | | } |
| | | if (!success) { |
| | | throw new RuntimeException("æå
¥å¤±è´¥"); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.dto.SampleDto; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.basic.dto.FactoryDto; |
| | | import com.ruoyi.basic.dto.LaboratoryDto; |
| | |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicReference; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author Administrator |
| | |
| | | @Override |
| | | public List<FactoryDto> selectStandardTreeList() { |
| | | List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeList(); |
| | | // æ¶éææ sampleTypeDto ç value |
| | | Set<String> sampleTypeValues = new HashSet<>(); |
| | | for (FactoryDto factoryDto : factoryDtos) { |
| | | for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) { |
| | | laboratoryDto.getChildren().sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort()) |
| | | - (o2.getSort() == null ? 0 : o2.getSort())); |
| | | for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) { |
| | | // if (sampleTypeDto.getChildren().size() == 0) { |
| | | sampleTypeDto.getChildren().addAll(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue())); |
| | | // } |
| | | sampleTypeValues.add(sampleTypeDto.getValue()); |
| | | } |
| | | } |
| | | } |
| | | // æ¹éæ¥è¯¢ææ sampleTypeDto çæ°æ® |
| | | List<SampleDto> standardList = standardTreeMapper.getStandardTree3Batch(sampleTypeValues); |
| | | Map<String, List<SampleDto>> standardTreeMap = standardList.stream().collect(Collectors.groupingBy(SampleDto::getValue)); |
| | | // å°æ¥è¯¢ç»æåé
å°å¯¹åºç sampleTypeDto |
| | | for (FactoryDto factoryDto : factoryDtos) { |
| | | for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) { |
| | | for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) { |
| | | List<SampleDto> standardTreeList = standardTreeMap.get(sampleTypeDto.getValue()); |
| | | if (standardTreeList != null) { |
| | | sampleTypeDto.getChildren().addAll(standardTreeList); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return factoryDtos; |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]).eq(StandardTree::getModel, trees[4])); |
| | | } |
| | | break; |
| | | /*case 4: |
| | | standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3])); |
| | | break; |
| | | case 3: |
| | | standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2])); |
| | | break; |
| | | case 2: |
| | | standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1])); |
| | | break; |
| | | case 1: |
| | | standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0])); |
| | | break;*/ |
| | | } |
| | | return 1; |
| | | } |
| | |
| | | and st.sample = p.name |
| | | </select> |
| | | |
| | | <select id="getStandardTree3" resultType="com.ruoyi.basic.dto.SampleDto"> |
| | | select model label, |
| | | model value |
| | | from standard_tree |
| | | where sample_type = #{sampleType} |
| | | and sample is null |
| | | </select> |
| | | |
| | | <select id="getLaboratory" resultType="java.lang.String"> |
| | | select l.laboratory_name |
| | | from structure_test_object sto |
| | |
| | | ${ew.customSqlSegment} |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="getStandardTree3Batch" resultType="com.ruoyi.basic.dto.SampleDto"> |
| | | select model label, |
| | | model value |
| | | from standard_tree |
| | | where sample_type in |
| | | <foreach item="item" collection="sampleTypeValues" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | and sample is null |
| | | </select> |
| | | </mapper> |
| | |
| | | </dependency> |
| | | |
| | | <!--word转pdf--> |
| | | <!--D:\JavaWork\center-lims-after\inspect-server\src\main\resources\lib--> |
| | | <!--mvn install:install-file -Dfile=aspose-words-15.12.0-jdk16.jar -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=15.12.0 -Dpackaging=jar--> |
| | | <dependency> |
| | | <groupId>com.aspose</groupId> |
| | |
| | | <version>5.0.6</version> |
| | | </dependency> |
| | | |
| | | |
| | | |
| | | </dependencies> |
| | | |
| | | <properties> |
| | |
| | | return Result.success(insOrderService.upInsOrder(orderId, sampleId, appointed, userId,sonLaboratory)); |
| | | } |
| | | |
| | | //todo: ä¸åéè¦ä¿®æ¹ |
| | | @ApiOperation(value = "æ·»å æ£éªä¸åæ°æ®") |
| | | @PostMapping("/addInsOrder") |
| | | public Result<?> addInsOrder(String str) { |
| | | Map<String, Object> map = JSON.parseObject(str, Map.class); |
| | | JSONArray jsonArray = JSON.parseArray(map.get("list")+""); |
| | | List<SampleProductDto> list = jsonArray.toJavaList(SampleProductDto.class); |
| | | InsOrder insOrder = JSON.parseObject(JSON.toJSONString(map.get("insOrder")), InsOrder.class); |
| | | List<List<Integer>> pairing = JSON.parseArray(map.get("pairing")+""); |
| | | return Result.success(insOrderService.addInsOrder(list, insOrder, pairing)); |
| | | public Result<?> addInsOrder(@RequestBody InsPlaceOrderDto insPlaceOrderDto) { |
| | | return Result.success(insOrderService.addInsOrder(insPlaceOrderDto.getSampleList(), insPlaceOrderDto.getInsOrder())); |
| | | } |
| | | |
| | | @ApiOperation(value = "æ¥è¯¢è®¢åæé¿é¢è®¡æ¶é´") |
| | |
| | | return Result.success(insOrderService.getRetestResult(insProductId)); |
| | | } |
| | | |
| | | |
| | | |
| | | @ApiOperation(value = "éåä¸ä¸å") |
| | | @PostMapping("/addRawCopperOrder") |
| | | public Result<?> addRawCopperOrder(String str) { |
| | | Map<String, Object> map = JSON.parseObject(str, Map.class); |
| | | JSONArray jsonArray = JSON.parseArray(map.get("list")+""); |
| | | List<SampleProductDto> list = jsonArray.toJavaList(SampleProductDto.class); |
| | | CopperInsOrderDto CopperInsOrder = JSON.parseObject(JSON.toJSONString(map.get("insOrder")), CopperInsOrderDto.class); |
| | | return Result.success(insOrderService.addRawCopperOrder(list, CopperInsOrder)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "ä¿®æ¹å§æç¼å·") |
| | | @PostMapping("/updateOrderEntrustCode") |
| | | public Result<?> updateOrderEntrustCode(@RequestBody InsOrder insOrder) { |
| | |
| | | } |
| | | |
| | | @ApiOperation(value = "å é¤éå订å") |
| | | @GetMapping("/delInsOrder") |
| | | @DeleteMapping("/delInsOrder") |
| | | public Result<?> delInsOrder(Integer insOrderId) { |
| | | // æ¥è¯¢è®¢å |
| | | InsOrder order = insOrderService.getById(insOrderId); |
| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.dto.*; |
| | | import com.ruoyi.basic.pojo.IfsInventoryQuantity; |
| | | import com.ruoyi.inspect.dto.InsPlaceOrderDto; |
| | | import com.ruoyi.inspect.dto.SampleProductDto; |
| | | import com.ruoyi.inspect.pojo.InsOrder; |
| | | import com.ruoyi.inspect.pojo.RawMaterialOrderTemplate; |
| | | import com.ruoyi.inspect.service.InsOrderService; |
| | | import com.ruoyi.inspect.service.RawMaterialOrderService; |
| | | import com.ruoyi.inspect.service.RawMaterialOrderTemplateService; |
| | | import com.ruoyi.common.core.domain.Result; |
| | |
| | | @Api(tags = "åææä¸å") |
| | | public class RawMaterialOrderController { |
| | | |
| | | private InsOrderService insOrderService; |
| | | private RawMaterialOrderService rawMaterialOrderService; |
| | | private RawMaterialOrderTemplateService rawMaterialOrderTemplateService; |
| | | |
| | |
| | | |
| | | /** |
| | | * åæ¶æ¥æ£ |
| | | * @param param åææä¸å |
| | | * @param param |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "æ¤éæ¥æ£") |
| | |
| | | |
| | | @ApiOperation(value = "åææä¸åå
æ£") |
| | | @PostMapping("/addExemptionOrder") |
| | | public Result<?> addExemptionOrder(String str) { |
| | | Map<String, Object> map = JSON.parseObject(str, Map.class); |
| | | JSONArray jsonArray = JSON.parseArray(map.get("list")+""); |
| | | List<SampleProductDto> list = jsonArray.toJavaList(SampleProductDto.class); |
| | | InsOrder insOrder = JSON.parseObject(JSON.toJSONString(map.get("insOrder")), InsOrder.class); |
| | | return Result.success(rawMaterialOrderService.addExemptionOrder(list, insOrder)); |
| | | public Result<?> addExemptionOrder(@RequestBody InsPlaceOrderDto insPlaceOrderDto) { |
| | | return Result.success(rawMaterialOrderService.addExemptionOrder(insPlaceOrderDto.getSampleList(), insPlaceOrderDto.getInsOrder())); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | /** |
| | | * åæ¶æ¥æ£ |
| | | * @param id åææä¸å |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "å é¤åæææ¥æ£ä¿¡æ¯") |
| | |
| | | return Result.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | @ApiOperation(value = "éåä¸ä¸å") |
| | | @PostMapping("/addRawCopperOrder") |
| | | public Result<?> addRawCopperOrder(@RequestBody InsPlaceOrderDto insPlaceOrderDto) { |
| | | return Result.success(insOrderService.addRawCopperOrder(insPlaceOrderDto.getSampleList(), insPlaceOrderDto.getCopperInsOrder())); |
| | | } |
| | | |
| | | @ApiOperation(value = "éåä¸ä¸åå
æ£") |
| | | @PostMapping("/addRawCopperOrderExemptionOrder") |
| | | public Result<?> addRawCopperOrderExemptionOrder(String str) { |
| | | Map<String, Object> map = JSON.parseObject(str, Map.class); |
| | | JSONArray jsonArray = JSON.parseArray(map.get("list")+""); |
| | | List<SampleProductDto> list = jsonArray.toJavaList(SampleProductDto.class); |
| | | CopperInsOrderDto CopperInsOrder = JSON.parseObject(JSON.toJSONString(map.get("insOrder")), CopperInsOrderDto.class); |
| | | return Result.success(rawMaterialOrderService.addRawCopperOrderExemptionOrder(list, CopperInsOrder)); |
| | | public Result<?> addRawCopperOrderExemptionOrder(@RequestBody InsPlaceOrderDto insPlaceOrderDto) { |
| | | return Result.success(rawMaterialOrderService.addRawCopperOrderExemptionOrder(insPlaceOrderDto.getSampleList(), insPlaceOrderDto.getCopperInsOrder())); |
| | | } |
| | | |
| | | /** |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.dto; |
| | | |
| | | import com.ruoyi.inspect.pojo.InsOrder; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * ä¸å对象 |
| | | * |
| | | * @Author zhuo |
| | | * @Date 2025/2/19 |
| | | */ |
| | | @Data |
| | | public class InsPlaceOrderDto{ |
| | | |
| | | @ApiModelProperty("æ ·å") |
| | | private List<SampleProductDto> sampleList; |
| | | |
| | | @ApiModelProperty("订åä¿¡æ¯") |
| | | private InsOrder insOrder; |
| | | |
| | | @ApiModelProperty("éåä¸è®¢å") |
| | | private CopperInsOrderDto copperInsOrder; |
| | | |
| | | } |
| | |
| | | private Integer id; |
| | | |
| | | /** |
| | | * å¤é®ï¼æ£éªæ ·åins_sample表id |
| | | * å¤é®ï¼æ¯è®¢åinsOrder表id (????) |
| | | */ |
| | | private Integer insSampleId; |
| | | |
| | |
| | | //ä¿®æ¹æ£éªä¸åæ°æ® |
| | | int upInsOrder(Integer orderId,Integer sampleId, String appointed, Integer userId,String sonLaboratory); |
| | | |
| | | int addInsOrder(List<SampleProductDto> list, InsOrder insOrder, List<List<Integer>> pairing); |
| | | int addInsOrder(List<SampleProductDto> list, InsOrder insOrder); |
| | | |
| | | Map<String, Object> getInsOrder(Integer id); |
| | | |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder, List<List<Integer>> pairing) { |
| | | public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder) { |
| | | // todo: ä¸åå¤ææ½æ ·è®¡åçå¯ä¸æ§ |
| | | if (insOrder.getQuarterItemId() != null) { |
| | | Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery() |
| | |
| | | throw new ErrorException("è¯¥æ½æ ·è®¡å已被ç»å®è¿"); |
| | | } |
| | | } |
| | | |
| | | insOrder.setState(0); |
| | | |
| | | LocalDate appointed = insOrder.getAppointed(); |
| | |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @Author zhuo |
| | |
| | | throw new ErrorException("é¶ä»¶å·ä¸º" + partNo + "çåæææ²¡æå¯¹åºçæ ååºé
ç½®"); |
| | | } |
| | | RawMaterialStandardTreeDto rawMaterialStandardTreeDto = new RawMaterialStandardTreeDto(); |
| | | Set<String> sampleTypeValues = new HashSet<>(); |
| | | for (FactoryDto factoryDto : factoryDtos) { |
| | | for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) { |
| | | for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) { |
| | | if (sampleTypeDto.getChildren().size() == 0) { |
| | | sampleTypeDto.setChildren(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue())); |
| | | sampleTypeValues.add(sampleTypeDto.getValue()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // æ¹éæ¥è¯¢ææ sampleTypeDto çæ°æ® |
| | | List<SampleDto> standardList = standardTreeMapper.getStandardTree3Batch(sampleTypeValues); |
| | | Map<String, List<SampleDto>> standardTreeMap = standardList.stream().collect(Collectors.groupingBy(SampleDto::getValue)); |
| | | |
| | | for (FactoryDto factoryDto : factoryDtos) { |
| | | for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) { |
| | | for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) { |
| | | List<SampleDto> standardTreeList = standardTreeMap.get(sampleTypeDto.getValue()); |
| | | if (sampleTypeDto.getChildren().size() == 0) { |
| | | sampleTypeDto.getChildren().addAll(standardTreeList); |
| | | } |
| | | // 夿ç»å®çæ¯å¦æ¯å½åé¶ä»¶å· |
| | | if (sampleTypeDto.getPartNo() != null && sampleTypeDto.getPartNo().equals(partNo)) { |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * éåä¸ä¸åå
æ£ |
| | | * @param list |
| | |
| | | return Result.success(userService.selectUserCondition(user, type)); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åç»å½ç客æ·ä¿¡æ¯ |
| | | * @return |
| | | */ |
| | | @GetMapping("/getUserNow") |
| | | @ApiOperation(value = "è·åå½åç»å½ç客æ·ä¿¡æ¯") |
| | | public Result<?> getUserNow(){ |
| | | return Result.success(userService.getUserNow()); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | userId = SecurityUtils.getUserId().intValue(); |
| | | } catch (Exception ignored) { |
| | | } |
| | | System.out.println("æ§è¡æå
¥å¡«å
..."); |
| | | this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); |
| | | this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); |
| | | this.strictInsertFill(metaObject, "createUser", Integer.class, userId); |
| | |
| | | * @return |
| | | */ |
| | | List<User> selectUserCondition(@Param("ew") QueryWrapper<User> ew, @Param("type") String type); |
| | | |
| | | /** |
| | | * è·åå½åç»å½ç客æ·ä¿¡æ¯ |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | User getUserNow(@Param("userId") int userId); |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | List<User> selectUserCondition(User user, String type); |
| | | |
| | | /** |
| | | * è·åå½åç»å½ç客æ·ä¿¡æ¯ |
| | | * @return |
| | | */ |
| | | User getUserNow(); |
| | | } |
| | | |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.core.domain.entity.User; |
| | | import com.ruoyi.common.utils.QueryWrappers; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.system.mapper.UserMapper; |
| | | import com.ruoyi.system.service.UserService; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | public List<User> selectUserCondition(User user, String type) { |
| | | return baseMapper.selectUserCondition(QueryWrappers.queryWrappers(user), type); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åç»å½ç客æ·ä¿¡æ¯ |
| | | * @return |
| | | */ |
| | | @Override |
| | | public User getUserNow() { |
| | | return baseMapper.getUserNow(SecurityUtils.getUserId().intValue()); |
| | | } |
| | | } |
| | | |
| | |
| | | ${ew.customSqlSegment} |
| | | </if> |
| | | </select> |
| | | |
| | | <!-- è·åå½åç»å½ç¨æ·ä¿¡æ¯ --> |
| | | <select id="getUserNow" resultType="com.ruoyi.common.core.domain.entity.User"> |
| | | select u.id, |
| | | c.company, |
| | | u.name, |
| | | c.code, |
| | | u.phone, |
| | | c.id departId |
| | | from user u |
| | | left join custom c on u.company = c.id |
| | | where u.id = #{userId} |
| | | </select> |
| | | </mapper> |