package com.vverp.controller.admin; import com.alibaba.fastjson.JSONObject; import com.vverp.annotation.Module; import com.vverp.entity.Admin; import com.vverp.entity.BaseEntity; import com.vverp.entity.ExtraField; import com.vverp.moli.util.RespData; import com.vverp.service.AdminService; import com.vverp.service.ExtraFieldService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.type.filter.AssignableTypeFilter; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.*; /** * @author * @date 2020/3/11 8:38 下午 */ @Controller("adminExtraFieldController") @RequestMapping("/admin/extraField") public class ExtraFieldController extends BaseController { @Resource private ExtraFieldService extraFieldService; @Resource private AdminService adminService; @RequestMapping("/list") public String list(ModelMap modelMap) throws ClassNotFoundException { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false); provider.addIncludeFilter(new AssignableTypeFilter(BaseEntity.class)); Set components = provider.findCandidateComponents("com.vverp.entity"); List> list = new ArrayList<>(); for (BeanDefinition component : components) { Map map = new HashMap<>(); Class cls = Class.forName(component.getBeanClassName()); if (!cls.getName().equals("com.vverp.entity.PurchaseApplyOrderItem") && !cls.getName().equals("com.vverp.entity.Supplier") && !cls.getName().equals("com.vverp.entity.MaterialOrderItem")){ continue; } String key = cls.getSimpleName(); key = key.substring(0, 1).toLowerCase() + key.substring(1); Module module = (Module) cls.getAnnotation(Module.class); if (module == null || StringUtils.isBlank(module.name())) { continue; } map.put("key", key); map.put("name", module.name()); list.add(map); } modelMap.addAttribute("list", list); return "extraField/list"; } @RequestMapping("/dialog/edit") public String dialogEdit(ModelMap modelMap, String space, String title) { Admin admin = adminService.getCurrent(); modelMap.addAttribute("space", space); modelMap.addAttribute("title", title); modelMap.addAttribute("list", extraFieldService.initData(space,admin.getNowProgress())); return "/extraField/dialog/edit"; } @RequestMapping("/extend") @ResponseBody public RespData extend(String extraFields, String space) { Admin admin = adminService.getCurrent(); List extraFieldList = JSONObject.parseArray(extraFields, ExtraField.class); extraFieldService.update(extraFieldList, space,admin.getNowProgress()); return RespData.success(); } }