怎么建设英文网站,seo搜索优化软件,一级a做爰片免费观看 安全网站,网站的搜索功能怎么做目录
1、模糊分页查询
2、批量删除
3、新增
4、编辑 此接口非彼接口。此接口是MVC的设计模式中的Controller层#xff0c;一般我们会叫Controller层里的方法为接口。他们是负责接收前端或者其它服务的传来的请求#xff0c;并对请求进行相应的处理#xff0c;最终再将处…目录
1、模糊分页查询
2、批量删除
3、新增
4、编辑 此接口非彼接口。此接口是MVC的设计模式中的Controller层一般我们会叫Controller层里的方法为接口。他们是负责接收前端或者其它服务的传来的请求并对请求进行相应的处理最终再将处理结果返回给前端或者其它服务。
1、模糊分页查询 1Controller层
RestController
RequestMapping(camera)
public class CameraAlarmController {Autowiredprivate IWarehouseOutService warehouseOutService; //注入接口/*** 获取设备相关信息* param equipAttribute* param equipType* param keywords* param pageNum* param pageSize* return*/GetMapping(getOutboundEquipmentInfo)public Result getOutboundEquipmentInfo(RequestParam(value operationType,required false) Integer operationType,RequestParam(value warehouseId,required false) Integer warehouseId,RequestParam(value equipAttribute,required false) String equipAttribute,RequestParam(value equipTypeId,required false) Integer equipTypeId,RequestParam(value keywords, required false) String keywords,RequestParam(value pageNum,required false, defaultValue 1) Integer pageNum,RequestParam(value pageSize, required false, defaultValue 10) Integer pageSize){PageHelper.startPage(pageNum,pageSize);PageInfoOutboundEquipmentInfoVo pageInfonew PageInfo(warehouseOutService.getOutboundEquipmentInfo(equipAttributeequipTypeId,warehouseId,operationType,keywords));return new SuccessResult(pageInfo);}
}
在进行模糊查询操作的时候往往有时候需要查询的参数很多这时候也可以考虑使用实体类接收前端传参更改如下 PostMapping(/getOutboundEquipmentInfo)//这里改成post请求public Result getOutboundEquipmentInfo(RequestBody EquipInfoVo vo){PageHelper.startPage(vo.getPageNum(),vo.getPageSize());PageInfoOutboundEquipmentInfoVo pageInfonew PageInfo(warehouseOutService.getOutboundEquipmentInfo(vo));return new SuccessResult(pageInfo);}
接收前端传参实体类代码如下
Data
Accessors(chain true)
public class EquipInfoVo {JsonProperty(value operationType)private Integer operationType;JsonProperty(value warehouseId)private Integer warehouseId;JsonProperty(value equipAttribute)private String equipAttribute;JsonProperty(value equipTypeId)private Integer equipTypeId;JsonProperty(value keywords)private String keywords;JsonProperty(value pageNum)private Integer pageNum1;JsonProperty(value pageSize)private Integer pageSize10;
} 2service层
定义service层接口此接口就是我们Java中用intrerface关键字定义的接口了
//这里不用加service注解
public interface IWarehouseOutService {ListOutboundEquipmentInfoVo getOutboundEquipmentInfo(String equipAttribute,Integer equipTypeId,Integer warehouseId,Integer operationType,String keywords);}
定义service接口实现
Service
Slf4j
public class WarehouseOutServiceImpl implements IWarehouseOutService {Autowiredprivate WmEquipInfoMapper wmEquipInfoMapper;Overridepublic ListOutboundEquipmentInfoVo getOutboundEquipmentInfo(String equipAttribute,Integer equipTypeId,Integer warehouseId,Integer operationType,String keywords) {//入库操作if (operationTypeWmConstant.EQUIPMENT_INFO_INCOME){ListOutboundEquipmentInfoVo outListwmEquipInfoMapper.getEquipmentInformation(equipAttribute,equipTypeId,keywords);ListWmRepertoryInfoDto allEquip wmRepertoryInfoMapper.getAllEquip(warehouseId);outList.forEach(info-{OptionalWmRepertoryInfoDto wmRepertoryInfoDto allEquip.stream().filter(all - all.getEquipId().equals(info.getId())).findFirst();if (wmRepertoryInfoDto.isPresent()){info.setInventoryQuantity(wmRepertoryInfoDto.get().getNum());info.setDamagesNum(wmRepertoryInfoDto.get().getDamagesNum());}else {info.setInventoryQuantity(0);info.setDamagesNum(0);}});return outList;}else{//出库操作ListOutboundEquipmentInfoVo outboundEquipmentInfo wmEquipInfoMapper.getOutboundEquipmentInfo(equipAttribute, warehouseId, equipTypeId, keywords);ListWmRelationEquipDto relationEquipDtoswmOutWarehouseMapper.getOutboundApproval(warehouseId);outboundEquipmentInfo.forEach(out- relationEquipDtos.forEach(re-{if (Integer.valueOf(re.getEquipId().toString()).equals(out.getId())){Integer numout.getInventoryQuantity()-re.getNum();out.setInventoryQuantity(num0?0:num);}}));return outboundEquipmentInfo;}}
} 3mapper层
//这上面不加Mapper注解就要在启动类上加这个注解MapperScan(com.zcloud.dao.mapper)
public interface WmEquipInfoMapper {ListOutboundEquipmentInfoVo getOutboundEquipmentInfo(Param(equipAttribute) String equipAttribute,Param(warehouseId) Integer warehouseId,Param(equipTypeId) Integer equipTypeId,Param(keywords) String keywords);
}
select idgetOutboundEquipmentInfo resultTypecom.zcloud.domain.warehousemanage.vo.OutboundEquipmentInfoVoSELECTt2.num inventoryQuantity,t2.damages_num,( SELECT name FROM t_dic_item WHERE type_code equip_attribute AND CODE t1.equip_attribute ) equipAttributeName,( SELECT name FROM t_dic_item WHERE type_code equip_unit AND CODE t1.equip_unit ) equipUnitName,t1.equip_name,t1.equip_brand,t1.id,t1.equip_model,t3.name equipTypeNameFROMt_common_wm_equip_info t1LEFT JOIN t_common_wm_repertory_info t2 ON t1.id t2.equip_idLEFT JOIN t_common_wm_equip_type t3 ON t1.equip_type_id t3.idWHEREt1.removed 0AND t2.removed 0AND t3.removed0AND t2.warehouse_id#{warehouseId}if testequipAttribute!null and equipAttribute!AND t1.equip_attribute#{equipAttribute}/if//注意Interge类型的条件判断是否为空的时候一定不要加非空字符串判断因为当你传的值为0的时候mybatis会把它判断为空字符串if testequipTypeId!null AND t1.equip_type_id#{equipTypeId}/ifif testkeywords!null and keywords!AND (t1.equip_name like concat(%,#{keywords})OR t1.equip_model like concat(%,#{keywords})OR t1.equip_brand like concat(%,#{keywords}))/if
/select
2、批量删除 1) Controller层 DeleteMapping(value /delete, name 仓库管理删除仓库信息)public Result deleteWareHouseInfo(RequestParam(value ids) String ids,HttpServletRequest request) {Integer userId (Integer) RequestUtils.getCurrentUser(request).get(userId);return new SuccessResult(wareHouseInfoService.deleteWareHouseInfo(ids,userId));} 2) service层
Transactional //单表删除不加这个注解可以多表关联删除一定要加
public Object deleteWareHouseInfo(Integer ids, Integer userId) {ListInteger idList Arrays.stream(ids.split(,)).map(s - Integer.parseInt(s.trim())).collect(Collectors.toList());return warehouseInfoMapper.deleteByIds(idList,userId);} 3)mapper层
Integer deleteByIds(Param(idList) ListInteger idList,Param(userId) Integer userId);
update iddeleteByIds parameterTypejava.lang.Integerforeach collectionidList itemitem separator;update t_warehouse_infoset removed 1,rm_uid #{userId},rm_time NOW(),up_time now()where id #{item.id}/foreach/update
3、新增 1) Controller层 PostMapping(value /add, name 仓库管理新增采购)public Result addPurchaseInfo(RequestBody WmPurchaseInfoAddVo dto, HttpServletRequest request) {Integer userId (Integer) RequestUtils.getCurrentUser(request).get(userId);return new SuccessResult(wmPurchaseInfoService.addPurchaseInfo(dto,userId));} 2) service层 OverrideTransactionalpublic Integer addPurchaseInfo(WmPurchaseInfoAddVo dto, Integer userId) { Integer result;String orderCode wmUtils.generateWmCode(WmConstant.PURCHASE_CODE_PREFIX, 1);dto.setOrderCode(orderCode).setCrUid(userId).setUpUid(userId);//插入采购基本信息返回id//需要注意的是如果待插入数据的表未设置主键自增则在这里需要设置主键的值//而这里是设置了主键自增所以就需要在mapper层配置sql语句的时候设置返回自增的主键值purchaseInfoMapper.insertSelective(dto);ListWmRelationEquipDto wmRelationEquipDtos dto.getRelationEquip();//设置关联设备的关联id以及关联类型wmRelationEquipDtos.forEach(e - {e.setRelationId(dto.getId()).setType(WmConstant.PURCHASE_RELATION).setStockPendingNum(e.getNum());});//插入关联设备信息result relationEquipMapper.insertBatch(wmRelationEquipDtos);return result 1 ? 1 : 0;}3) mapper层 单个新增 insert idinsertSelective useGeneratedKeystrue keyPropertyid keyColumnidparameterTypevip.dtcloud.domain.warehousemanage.vo.WmPurchaseInfoAddVoinsert into t_common_wm_purchase_infotrim prefix( suffix) suffixOverrides,if testaddVo.orderCode ! nullorder_code,/ifif testaddVo.orderName ! nullorder_name,/ifif testaddVo.purchaseMethod ! nullpurchase_method,/ifif testaddVo.purchaseManager ! nullpurchase_manager,/ifif testaddVo.orderDate ! nullorder_date,/ifif testaddVo.contractId ! nullcontract_id,/ifif testaddVo.biddingDocumentIds ! nullbidding_document_ids,/ifif testaddVo.purchaseContractIds ! nullpurchase_contract_ids,/ifif testaddVo.meetingSummaryIds ! nullmeeting_summary_ids,/ifif testaddVo.otherFilesIds ! nullother_files_ids,/ifif testaddVo.remark ! nullremark,/ifup_time,cr_time,if testaddVo.upUid ! nullup_uid,/ifif testaddVo.crUid ! nullcr_uid,/if/trimtrim prefixvalues ( suffix) suffixOverrides,if testaddVo.orderCode ! null#{addVo.orderCode,jdbcTypeVARCHAR},/ifif testaddVo.orderName ! null#{addVo.orderName,jdbcTypeVARCHAR},/ifif testaddVo.purchaseMethod ! null#{addVo.purchaseMethod,jdbcTypeVARCHAR},/ifif testaddVo.purchaseManager ! null#{addVo.purchaseManager,jdbcTypeVARCHAR},/ifif testaddVo.orderDate ! null#{addVo.orderDate,jdbcTypeTIMESTAMP},/ifif testaddVo.contractId ! null#{addVo.contractId,jdbcTypeINTEGER},/ifif testaddVo.biddingDocumentIds ! null#{addVo.biddingDocumentIds,jdbcTypeVARCHAR},/ifif testaddVo.purchaseContractIds ! null#{addVo.purchaseContractIds,jdbcTypeVARCHAR},/ifif testaddVo.meetingSummaryIds ! null#{addVo.meetingSummaryIds,jdbcTypeVARCHAR},/ifif testaddVo.otherFilesIds ! null#{addVo.otherFilesIds,jdbcTypeVARCHAR},/ifif testaddVo.remark ! null#{addVo.remark,jdbcTypeVARCHAR},/ifnow(),now(),if testaddVo.upUid ! null#{addVo.upUid,jdbcTypeINTEGER},/ifif testaddVo.crUid ! null#{addVo.crUid,jdbcTypeINTEGER},/if/trim/insert
批量新增
insert idinsertBatchinsert into t_common_wm_relation_equip (relation_id, type,equip_id, equip_serial, equip_code,num, stock_pending_num, up_time)valuesforeach collectiondtoList itemitem separator,( #{item.relationId,jdbcTypeINTEGER}, #{item.type,jdbcTypeINTEGER},#{item.equipId,jdbcTypeBIGINT}, #{item.equipSerial,jdbcTypeVARCHAR}, #{item.equipCode,jdbcTypeVARCHAR},#{item.num,jdbcTypeINTEGER}, #{item.stockPendingNum,jdbcTypeINTEGER}, now())/foreach/insert
注意 做批量插入的时候插入的数量不能太多否则会因为sql语句过长而出现无法执行的问题。一般超过5000条的话就可以使用分页去插入了。比如可以改成如下这样的插入 ListListEquipRealVariableDto lists splitList(wmRelationEquipDtos, 5000);lists.forEach(e - {result relationEquipMapper.insertBatch(e);}); splitList方法代码如下 private static T ListListT splitList(ListT list, int splitCount) {int length list.size();long totalLength (long)length (long)splitCount - 1L;long num totalLength / (long)splitCount;ListListT newList new ArrayList();for(int i 0; (long)i num; i) {int fromIndex i * splitCount;int toIndex (i 1) * splitCount length ? (i 1) * splitCount : length;newList.add(list.subList(fromIndex, toIndex));}return newList;}
4、编辑
1) Controller层 PutMapping(value /edit, name 仓库管理修改仓库信息)public Result editWareHouseInfo(RequestBody WmWarehouseInfoDto dto,HttpServletRequest request) {Integer userId (Integer) RequestUtils.getCurrentUser(request).get(userId);return new SuccessResult(wareHouseInfoService.editWareHouseInfo(dto,userId));} 2) service层 Overridepublic Integer editWareHouseInfo(WmWarehouseInfoDto dto, Integer userId) {dto.setUpUid(userId);return warehouseInfoMapper.updateByPrimaryKeySelective(dto);}
3) mapper层 update idupdateByPrimaryKeySelective parameterTypevip.dtcloud.domain.warehousemanage.dto.WmWarehouseInfoDtoupdate t_common_wm_warehouse_infosetif testwarehouseName ! nullwarehouse_name #{warehouseName,jdbcTypeVARCHAR},/ifif testwarehouseLocation ! nullwarehouse_location #{warehouseLocation,jdbcTypeVARCHAR},/ifif testwarehouseManager ! nullwarehouse_manager #{warehouseManager,jdbcTypeVARCHAR},/ifif testphone ! nullphone #{phone,jdbcTypeVARCHAR},/ifif testdepartmentId ! nulldepartment_id #{departmentId,jdbcTypeVARCHAR},/ifif testwarehouseStatus ! nullwarehouse_status #{warehouseStatus,jdbcTypeINTEGER},/ifup_time now(),if testupUid ! nullup_uid #{upUid,jdbcTypeINTEGER},/if/setwhere id #{id,jdbcTypeINTEGER}/update