From f1ba10159c6872b859e5ab1255ed17ae644d94d7 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期二, 26 十一月 2024 14:34:23 +0800 Subject: [PATCH] 前端联调修改 --- inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderPlanDTO.java | 1 inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java | 1 inspect-server/src/main/resources/mapper/InsSampleMapper.xml | 99 ++++---------------------------- inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java | 3 - inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 4 + inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 66 ++++++++++++---------- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java | 6 + 7 files changed, 59 insertions(+), 121 deletions(-) diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderPlanDTO.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderPlanDTO.java index a66a416..ffd5d64 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderPlanDTO.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderPlanDTO.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; @Data diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java index 95a341a..88a8580 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java @@ -11,9 +11,6 @@ @Data public class InsProductResultDto { - //璁㈠崟id - private Integer orderId; - //鏍峰搧id private Integer sampleId; diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java index 8e2ec17..e7fd46d 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java @@ -312,6 +312,9 @@ if (ObjectUtils.isNotEmpty(sampleId)) { insOrderFile.setInsSampleId(sampleId); } + if (ObjectUtils.isNotEmpty(sonLaboratory)) { + insOrderFile.setSonLaboratory(sonLaboratory); + } insOrderFile.setFileName(filename); if (contentType != null && contentType.startsWith("image/")) { // 鏄浘鐗� @@ -401,7 +404,7 @@ } else { InsOrderState insOrderState = new InsOrderState(); insOrderState.setInsOrderId(insSample.getInsOrderId()); - insOrderState.setInsOrderId(insSample.getId()); + insOrderState.setInsSampleId(insSample.getId()); insOrderState.setLaboratory(sonLaboratory); insOrderState.setInsState(0); insOrderState.setNum(1);//鍒濆鏄涓�娆� @@ -684,16 +687,15 @@ throw new ErrorException("棰戠巼涓嶈兘涓虹┖"); } Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); + //鏌ヨ鏍峰搧淇℃伅 + InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId()); //鏌ヨ妫�楠屽崟淇℃伅 - InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId()); InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() - .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId()) + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId()) .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory()) .orderByDesc(InsOrderState::getId) .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� - //鏌ヨ鏍峰搧淇℃伅 - InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId()); List<Integer> list = new ArrayList<>(); /*鏂板妫�楠岄」鐩楠屽�艰褰曡〃(閲囧彇鍏堝垹鍚庡)*/ insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery() @@ -799,10 +801,10 @@ insSampleMapper.updateById(insSample); } /*鍒ゆ柇璇ョ珯鐐圭殑妫�楠岄」鐩槸鍚﹀叏閮ㄥ凡妫�*/ - int count = insProductMapper.selectInsProductCountByOrderId(insProductResultDtos.getOrderId()); + int count = insProductMapper.selectInsProductCountByOrderId(insSample.getInsOrderId()); if (count == 0) { insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate() - .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId()) + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId()) .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory()) .set(InsOrderState::getInsState, 2)); @@ -958,7 +960,7 @@ .set(InsOrderState::getCreateTime, LocalDateTime.now())); break; case 1: - //缁х画璇曢獙:璇ョ珯鐐逛换鍔$粨鏉�(鍙互鍐嶆鎵爜妫�楠�)锛� + //缁х画璇曢獙:璇ユ牱鍝佽绔欑偣浠诲姟缁撴潫(鍙互鍐嶆鎵爜妫�楠�)锛� insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) .eq(InsOrderState::getInsSampleId, sampleId) @@ -1039,6 +1041,11 @@ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() .eq(InsProduct::getInsSampleId, insSample.getId()) .eq(InsProduct::getSonLaboratory, submitPlanDto.getLaboratory()) + .and(wrapper -> wrapper + .isNull(InsProduct::getInsResult) + .or() + .eq(InsProduct::getInsResult, 2) + ) .eq(InsProduct::getState, 1)); if (insProducts.size() > 0) { String str = ""; @@ -1104,7 +1111,7 @@ map.put("safe", 0);//鏄惁淇濆瘑娑堟伅.0鍚� map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚� map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚� - qywxApi.send(map); + //qywxApi.send(map); //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜� InsSampleUser insSampleUser = new InsSampleUser(); insSampleUser.setUserId(submitPlanDto.getVerifyUser()); @@ -1151,27 +1158,26 @@ } for (AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours : submitPlanDto.getAuxiliaryOutputWorkingHoursList()) { InsProduct insProduct = insProductMapper.selectById(auxiliaryOutputWorkingHours.getInsProductId()); - if (isWithinRange) { - //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮 - auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙� - auxiliaryOutputWorkingHours.setWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//闈炲姞鐝伐鏃� - auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲� - } else { - //鍔犵彮 - auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿 - auxiliaryOutputWorkingHours.setOvertimeWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//鍔犵彮宸ユ椂 - auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺 - } - auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡 - LocalDateTime localDateTime = LocalDateTime.now(); - DateTime parse = DateUtil.parse(localDateTime.format(formatter)); - auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡 - auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ - auxiliaryOutputWorkingHours.setCheck(userId);//todo 妫�娴嬩汉(鍚庨潰瑕佸幓鎺夌敱鍓嶇浼犲叆) - auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours); + if (isWithinRange) { + //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮 + auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙� + auxiliaryOutputWorkingHours.setWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//闈炲姞鐝伐鏃� + auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲� + } else { + //鍔犵彮 + auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿 + auxiliaryOutputWorkingHours.setOvertimeWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//鍔犵彮宸ユ椂 + auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺 + } + auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡 + LocalDateTime localDateTime = LocalDateTime.now(); + DateTime parse = DateUtil.parse(localDateTime.format(formatter)); + auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡 + auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ + auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours); } } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java index 249dd00..892207d 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java @@ -461,8 +461,10 @@ .eq(InsProductResult::getInsProductId, insProduct.getId()).isNull(InsProductResult::getNum)); insProduct.setInsProductResult(insProductResult); } - BeanUtils.copyProperties(insSample,sampleProductDto); - sampleProductDto.setInsProduct(insProducts); + SampleProductDto dto = new SampleProductDto(); + dto.setInsProduct(insProducts); + BeanUtils.copyProperties(insSample,dto); + sampleProductDto=dto; } List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList()); List<InsProductUser> insProductUsers = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery() diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java index a02595d..8a506b9 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java @@ -360,7 +360,9 @@ if (insReportDto.getState() == 1) { List<InsReportDto1> insReportDto1s = insReportDto.getInsReportDto1s(); for (InsReportDto1 insReportDto1 : insReportDto1s) { - wordUtils.generateReport(insReportDto.getId(), insReportDto1); + if (ObjectUtils.isNotEmpty(insReportDto1.getInsReportDto2s())){ + wordUtils.generateReport(insReportDto.getId(), insReportDto1); + } } } } else { diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java index 3281af3..5c9043f 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java @@ -31,6 +31,7 @@ private String checkName; private Integer userId; + private String userNameId; @ValueTableShow(value = 8,name = "妫�楠屽紑濮嬫椂闂�") private String insTime; diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml index 646b25e..673b974 100644 --- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml @@ -30,11 +30,12 @@ SELECT a.*, ios.ins_state, + ios.laboratory son_laboratory, ios.verify_tell, verify_user, ios.id orderStateId, ios.create_time, - (SELECT ins_time FROM ins_order_state WHERE ins_order_id = a.id AND laboratory = a.son_laboratory and + (SELECT ins_time FROM ins_order_state WHERE ins_order_id = a.id AND laboratory = son_laboratory and ins_order_state.ins_sample_id=a.sampleId ORDER BY ins_time DESC LIMIT 1) AS ins_time , iou.submit_time , ios.sort, @@ -55,14 +56,16 @@ isa.sample sample, isa.sample_code sampleCode, userName, + userNameId, checkName, - ip.son_laboratory, - io.laboratory + io.laboratory, + io.state FROM ins_order io LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id LEFT JOIN ( SELECT ins_sample_id,GROUP_CONCAT( DISTINCT uu.name SEPARATOR ',') AS userName + ,GROUP_CONCAT( DISTINCT uu.id SEPARATOR ',') AS userNameId FROM ins_sample_user u LEFT JOIN user uu ON u.user_id = uu.id WHERE son_laboratory=#{sonLaboratory} and u.state=0 @@ -77,18 +80,13 @@ GROUP BY ins_sample_id ORDER BY ins_sample_id )isu2 ON isu2.ins_sample_id = isa.id - LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id WHERE io.state = 1 and send_time is not null <if test="userName !=null and userName!=''"> and ( (userName like CONCAT ('%', #{userName},'%') ) or (checkName like CONCAT ('%', #{userName},'%') ) ) </if> - and ip.son_laboratory=#{sonLaboratory} - GROUP BY - ip.son_laboratory, - io.id ) a - ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory and ios.ins_sample_id=a.sampleId + ON ios.ins_order_id = a.id AND ios.laboratory = #{sonLaboratory} and ios.ins_sample_id=a.sampleId LEFT JOIN ins_order_user iou ON ios.id = iou.ins_order_state_id and ios.num=iou.num ORDER BY ios.sort, @@ -98,6 +96,7 @@ ) b where ins_state is not null and son_laboratory=#{sonLaboratory} + and state =1 <if test="laboratory!=null and laboratory!=''"> and laboratory=#{laboratory} </if> @@ -110,7 +109,7 @@ <select id="inspectionOrderDetailsTaskSwitching" resultType="com.yuanchu.mom.vo.InsOrderPlanTaskSwitchVo"> select * from( SELECT - a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,verify_user + a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,verify_user,ios.laboratory son_laboratory FROM ins_order_state ios LEFT JOIN @@ -126,9 +125,9 @@ isa.sample_code sampleCode, isu.user_id, user.name userName, - ip.son_laboratory, io.ins_time, - io.laboratory + io.laboratory, + io.state FROM ins_order io LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id @@ -143,7 +142,6 @@ ) ORDER BY ins_sample_id, id ) isu ON isu.ins_sample_id = isa.id - LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id LEFT JOIN user ON isu.user_id = user.id WHERE io.state = 1 @@ -152,11 +150,8 @@ and (isu.user_id = #{userId} OR isu.user_id is NULL ) </if> OR isu.user_id is NULL - GROUP BY - ip.son_laboratory, - io.id ) a - ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory and a.sampleId=ios.ins_sample_id + ON ios.ins_order_id = a.id AND ios.laboratory = #{sonLaboratory} and a.sampleId=ios.ins_sample_id left join (SELECT td.user_id order_user_id, td.ins_sample_id FROM ins_sample_user td,(SELECT max(id) id FROM ins_sample_user where son_laboratory=#{sonLaboratory} GROUP BY ins_sample_id) md where td.id = md.id @@ -167,9 +162,7 @@ ) isu2 on isu2.ins_sample_id = a.sampleId where ins_state is not null - <if test="laboratory != null and laboratory != ''"> - and a.laboratory=#{laboratory} - </if> + and state=1 ORDER BY a.type DESC, a.id @@ -229,15 +222,6 @@ left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null) s) - order by case - when man_hour_group is NULL then 1 - when man_hour_group = '' then 1 - else 0 end, - CASE - WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� - WHEN man_hour_group REGEXP '[0-9]+' - THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� - , id asc </select> <select id="getInsOrderAndSample" resultMap="sampleDto"> select isa.*, @@ -424,39 +408,14 @@ ip.create_time ip_create_time, ip.update_time ip_update_time, template_id, - ipr.ins_value, - ipr.com_value, - ipr.equip_value, - ipr.before_check, - ipr.after_check, - ipr2.frequency, - ipr2.often, - ipr2.port, - ipr2.angle, - ipr2.value, - ipr2.result, - ipr2.equip_value equipValue2, - ipr2.equip_name equipName2, + ip.method_s from ins_sample isa left join ins_order_state ios on isa.id = ios.ins_sample_id left join ins_product ip on isa.id = ip.ins_sample_id - left join ins_product_result ipr on ip.id = ipr.ins_product_id - left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id where isa.ins_order_id = #{id} and ip.standard_method_list_id is not null and state = 1 - and (ipr2.num = ios.num or ipr2.num is null) - and (ipr.num = ios.num or ipr.num is null) - order by case - when man_hour_group is NULL then 1 - when man_hour_group = '' then 1 - else 0 end, - CASE - WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� - WHEN man_hour_group REGEXP '[0-9]+' - THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� - , id asc </select> <select id="selectSampleProductListByOrder2Id2" resultMap="sampleDto"> select isa.*, @@ -498,37 +457,13 @@ ip.create_time ip_create_time, ip.update_time ip_update_time, template_id, - ipr.ins_value, - ipr.com_value, - ipr.equip_value, - ipr.before_check, - ipr.after_check, - ipr2.frequency, - ipr2.often, - ipr2.port, - ipr2.angle, - ipr2.value, - ipr2.result, - ipr2.equip_value equipValue2, - ipr2.equip_name equipName2, ip.method_s from ins_sample isa left join ins_order_state ios on isa.id = ios.ins_sample_id left join ins_product ip on isa.id = ip.ins_sample_id - left join ins_product_result ipr on ip.id = ipr.ins_product_id - left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id where isa.ins_order_id = #{id} and ip.standard_method_list_id is not null and state = 1 - order by case - when man_hour_group is NULL then 1 - when man_hour_group = '' then 1 - else 0 end, - CASE - WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� - WHEN man_hour_group REGEXP '[0-9]+' - THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� - , id asc </select> <select id="selectSampleProductListByOrderId3" resultMap="sampleDto3"> select isa.id, @@ -558,12 +493,6 @@ <foreach collection="ids" open="(" close=")" item="id" separator=","> #{id} </foreach> - order by case when man_hour_group is NULL then 1 - when man_hour_group ='' then 1 else 0 end, - CASE - WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� - WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� - ,id asc </select> <select id="getInsProduct1" resultMap="product"> -- Gitblit v1.9.3