diff --git a/pom.xml b/pom.xml index 59393199..bf866382 100644 --- a/pom.xml +++ b/pom.xml @@ -175,6 +175,25 @@ 2.6.0 + + + org.redisson + redisson + 3.8.2 + true + + + org.redisson + redisson-spring-boot-starter + 3.8.2 + + + + + com.google.zxing + javase + 3.4.0 + diff --git a/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java b/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java index a9b96789..b4d396e4 100644 --- a/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java +++ b/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java @@ -2,6 +2,9 @@ package com.dreamchaser.depository_manage.config; import lombok.Data; +/** + * 用于 + */ @Data public class PortConfig { // 接口地址 diff --git a/src/main/java/com/dreamchaser/depository_manage/config/RedissionConfig.java b/src/main/java/com/dreamchaser/depository_manage/config/RedissionConfig.java new file mode 100644 index 00000000..333cd206 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/config/RedissionConfig.java @@ -0,0 +1,20 @@ +package com.dreamchaser.depository_manage.config; + +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; +import org.redisson.config.Config; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.io.IOException; + +@Configuration +public class RedissionConfig { + + @Bean + public RedissonClient redisson() throws IOException { + // 本例子使用的是yaml格式的配置文件,读取使用Config.fromYAML,如果是Json文件,则使用Config.fromJSON + Config config = Config.fromYAML(RedissionConfig.class.getClassLoader().getResource("redisson-config.yml")); + return Redisson.create(config); + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java index 1ab66324..36e043e0 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -275,10 +275,10 @@ public class DepositoryController { parmOut.put("depository_id",depositoryAll.get(j).getId()); parmOut.put("start", months.get(num + 1)); parmOut.put("end", months.get(num)); - // 获取月份中入库材料的总额 + // 获取月份中入库物料的总额 // 测试 Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn); - // 获取月份中出库材料的总额 + // 获取月份中出库物料的总额 // 测试 Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut); // 获取当前月库存容量 @@ -351,10 +351,10 @@ public class DepositoryController { parmOut.put("start", months.get(j + 1)); parmOut.put("end", months.get(j)); parmOut.put("dname", depositoryAll.get(i).getDname()); - // 获取某个月某材料入库总额 + // 获取某个月某物料入库总额 // 测试 Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn); - // 获取某个月某材料出库总额 + // 获取某个月某物料出库总额 // 测试 Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut); Double wareHouseCount1 = (Double) productData.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1; @@ -392,30 +392,28 @@ public class DepositoryController { /** * 根据父级编号获取所有仓库 - * @param parentId + * @param map * @return */ @GetMapping("/allWarehouseByParent") - public RestResponse findDepositoryByNoParent(@RequestParam(value = "parentId",required = false) String parentId){ - Map param = new HashMap<>(); - if (parentId == null) { - parentId = "0"; + public RestResponse findDepositoryByNoParent(@RequestParam Map map){ + if ("".equals(map.get("parentId")) || map.get("parentId") == null) { + map.put("parentId",0); } - param.put("parentId",parentId); - List list = depositoryService.findDepositoryRecordPByCondition(param); + List list = depositoryService.findDepositoryRecordPByCondition(map); + // 获取所有行政单位 Map administration = findAdministration(); List administrationPList = (List) administration.get("administrationPList"); Integer total = (Integer) administration.get("total"); for (int i = 0; i < list.size(); i++) { for (int j = 0; j < administrationPList.size(); j++) { - if(list.get(i).getCid().compareTo(administrationPList.get(j).getId()) == 0){ list.get(i).setCname(administrationPList.get(j).getName()); break; } } } - return new RestResponse(list,total,200); + return new RestResponse(list,depositoryService.findCountByCondition(map),200); } @@ -638,7 +636,7 @@ public class DepositoryController { } /** - * 修改当前仓库下的材料状态 + * 修改当前仓库下的物料状态 * @param parentId * @param state */ @@ -799,7 +797,7 @@ public class DepositoryController { parm.put("start", months.get(num + 1)); parm.put("end", months.get(num)); parm.put("tname", materialTypeAll.get(j).getTname()); - //根据条件获取月份中材料的总额 + //根据条件获取月份中物料的总额 Double materialCountByMonth = depositoryRecordService.findMaterialCountByMonth(parm); // 测试 Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm); @@ -842,7 +840,7 @@ public class DepositoryController { parm.put("start", months1.get(j)); parm.put("end", months1.get(j - 1)); parm.put("tname", materialTypeAll.get(i).getTname()); - //根据条件获取月份中材料的总额 + //根据条件获取月份中物料的总额 // 测试 Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm); productData.add(materialCountByMonth1); @@ -880,7 +878,7 @@ public class DepositoryController { } /** - * 根据材料编号查询所在仓库 + * 根据物料编号查询所在仓库 * @param mid * @return */ @@ -894,7 +892,7 @@ public class DepositoryController { } /** - * 根据材料名称查询所在仓库 + * 根据物料名称查询所在仓库 * @param mname * @return */ diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java index b9097a2a..db7c65a5 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -201,7 +201,7 @@ public class DepositoryRecordController { } /** - * 将选中的材料暂存到redis中 + * 将选中的物料暂存到redis中 * @param map * @param request * @return @@ -227,7 +227,7 @@ public class DepositoryRecordController { } /** - * 将选中的材料从redis中删除 + * 将选中的物料从redis中删除 * @param map * @param request * @return @@ -353,6 +353,7 @@ public class DepositoryRecordController { ap.setVersion(materialById.getVersion()); ap.setMname(materialById.getMname()); ap.setCode(materialById.getCode()); + ap.setPrice(materialById.getPrice()); ap.setApplicant(userToken.getId()); ap.setQuantity(1.0); list.add(ap); @@ -371,6 +372,7 @@ public class DepositoryRecordController { UserByPort userToken= (UserByPort) request.getAttribute("userToken"); Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity")); map.put("quantity",quantity.toString()); + map.put("price",map.get("price").toString()); map.put("applicantId",userToken.getId()); String type = (String) map.get("type"); Integer success = 0; @@ -402,10 +404,12 @@ public class DepositoryRecordController { List depositoryIds = (List) map.get("depositoryIds"); List quantitys = (List) map.get("quantitys"); List applyRemarks = (List) map.get("applyRemarks"); + List prices = (List) map.get("prices"); if("in".equals(type)){ for (int i = 0; i < mids.size(); i++) { Integer mid = mids.get(i); Integer depositoryId = depositoryIds.get(i); + String price = prices.get(i).toString(); Integer integer = ObjectFormatUtil.toInteger(quantitys.get(i)); String quantity = integer.toString(); String applyRemark = applyRemarks.get(i); @@ -414,6 +418,7 @@ public class DepositoryRecordController { inRecord.put("mid",mid); inRecord.put("depositoryId",depositoryId); inRecord.put("quantity",quantity); + inRecord.put("price",price); inRecord.put("applyRemark",applyRemark); success += depositoryRecordService.applicationIn(inRecord); } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java b/src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java index 7c8b8911..74cac204 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java @@ -18,8 +18,32 @@ public class ExcelController { @Autowired ExcelService excelService; - @PostMapping("/importExcel") - public ResultVo importExcel(@RequestParam("file") MultipartFile excel) { - return excelService.importExcel(excel); + /** + * 用于物料的导入 + * @param excel + * @return + */ + @PostMapping("/importExcelByMaterial") + public ResultVo importExcelByMaterial(@RequestParam("file") MultipartFile excel) { + return excelService.importExcelMaterial(excel,"material"); + } + + /** + * 用于物料类型的导入 + * @param excel + * @return + */ + @PostMapping("/importExcelByMT") + public ResultVo importExcelByMT(@RequestParam("file") MultipartFile excel){ + return excelService.importExcelMaterialType(excel); + } + + + /** + * 用于库存信息的导入 + */ + @PostMapping("/importInventory") + public ResultVo importInventory(@RequestParam("file") MultipartFile excel){ + return excelService.importExcelInventory(excel); } } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java index bafdfa77..7369de21 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -8,6 +8,7 @@ import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.MaterialP; import com.dreamchaser.depository_manage.pojo.RestResponse; import com.dreamchaser.depository_manage.pojo.RoleAndDepository; +import com.dreamchaser.depository_manage.pojo.StatusInfo; import com.dreamchaser.depository_manage.security.bean.UserToken; import com.dreamchaser.depository_manage.service.DepositoryService; import com.dreamchaser.depository_manage.service.MaterialService; @@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.io.IOException; import java.util.*; /** @@ -38,7 +40,7 @@ public class MaterialController { DepositoryService depositoryService; /** - * 根据材料进行查询 + * 根据物料进行查询 * @param map * @return */ @@ -61,11 +63,11 @@ public class MaterialController { } } } - return new RestResponse(list,materialService.findCountByCondition(map),200); + return new RestResponse(list,list.size(),200); } /** - * 添加一条材料记录 + * 添加一条物料记录 * @param map * @return */ @@ -93,7 +95,7 @@ public class MaterialController { } /** - * 修改材料信息 + * 修改物料信息 * @param map * @return */ @@ -134,7 +136,7 @@ public class MaterialController { } /** - * 根据id获取材料 + * 根据id获取物料 * @param mid * @return */ @@ -176,4 +178,20 @@ public class MaterialController { List materialPByCondition = materialService.findMaterialPByCondition(map); return new RestResponse(materialPByCondition,materialService.findCountByCondition(map),200); } + + @GetMapping("/createQrCode") + public RestResponse createQrCode(@RequestParam("mid") Integer mid) { + Material materialById = materialService.findMaterialById(mid); + // 二维码保存信息 + Map code = new HashMap<>(); + code.put("mname",materialById.getMname()); + code.put("mcode",materialById.getCode()); + code.put("verison",materialById.getVersion()); + code.put("quantity",materialById.getQuantity()); + try { + return RestResponse.CreateQrCode(code); + } catch (IOException e) { + return new RestResponse("err: "+e.getMessage(),678,new StatusInfo("失败","请联系开发人员")); + } + } } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java index 510d9e7f..b88c329f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java @@ -27,7 +27,7 @@ public class MaterialTypeController { MaterialService materialService; /** - * 插入一条新材料类型 + * 插入一条新物料类型 * @param map * @return */ @@ -37,7 +37,7 @@ public class MaterialTypeController { } /** - * 根据条件查询材料类型 + * 根据条件查询物料类型 * @param map * @return */ @@ -49,7 +49,7 @@ public class MaterialTypeController { /** - * 根据父级查询所有材料类型 + * 根据父级查询所有物料类型 * @param parentId * @return */ @@ -66,7 +66,7 @@ public class MaterialTypeController { /** - * 彻底删除材料类别 + * 彻底删除物料类别 * @param map * @return */ @@ -99,7 +99,7 @@ public class MaterialTypeController { } /** - * 删除所有子材料类型信息(硬删除) + * 删除所有子物料类型信息(硬删除) * @param parentId */ public void RealDeleteSonDepository(String parentId){ @@ -108,14 +108,14 @@ public class MaterialTypeController { // 获取当前仓库所有子仓库 List materialTypeByCondition = materialTypeService.findMaterialTypeByCondition(param); for (int i = 0; i < materialTypeByCondition.size(); i++) { - Integer id = materialTypeByCondition.get(i).getId(); // 获取当前材料id - RealDeleteSonDepository(id.toString()); // 递归查询材料类型 - materialTypeService.deleteMaterialTypeById(id); // 删除材料类型 + Integer id = materialTypeByCondition.get(i).getId(); // 获取当前物料id + RealDeleteSonDepository(id.toString()); // 递归查询物料类型 + materialTypeService.deleteMaterialTypeById(id); // 删除物料类型 } } /** - * 根据主键删除材料类型 + * 根据主键删除物料类型 * @param map * @return */ @@ -148,7 +148,7 @@ public class MaterialTypeController { } /** - * 修改材料类型 + * 修改物料类型 * @param map * @return */ @@ -236,7 +236,7 @@ public class MaterialTypeController { } /** - * 修改材料类型状态 + * 修改物料类型状态 * @param map * @return */ @@ -284,7 +284,7 @@ public class MaterialTypeController { } /** - * 修改当前材料类型状态 + * 修改当前物料类型状态 * @param parentId * @param state */ diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index 962b94ce..22a64348 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -61,6 +61,10 @@ public class PageController { private RoleService roleService; + @Autowired + private PlaceService placeService; + + public static JSONObject Captcha(){ @@ -380,7 +384,7 @@ public class PageController { return mv; } - // 材料类型树形菜单页面 + // 物料类型树形菜单页面 @GetMapping("/selectType") public String selectType(){ return "pages/material/selectType"; @@ -415,7 +419,7 @@ public class PageController { return mv; } - // 材料树形菜单页面 + // 物料树形菜单页面 @GetMapping("/selectMaterial") public ModelAndView selectMaterial(String mname,String type){ ModelAndView mv = new ModelAndView(); @@ -425,7 +429,7 @@ public class PageController { return mv; } - // 专用于卡片材料树形菜单页面 + // 专用于卡片物料树形菜单页面 @GetMapping("/selectMaterialByCard") public ModelAndView selectMaterialByCard(String mname,String type,String clickObj){ ModelAndView mv = new ModelAndView(); @@ -631,17 +635,17 @@ public class PageController { */ mv.addObject("depositories", depositoryService.findDepositoryAll()); /** - * 材料总数 + * 物料总数 */ mv.addObject("materials", materialService.findMaterialAll()); - // 转入材料数量 + // 转入物料数量 mv.addObject("InCount", depositoryRecordService.CalculateAllApplicationInCount()); - // 转入材料总额 + // 转入物料总额 mv.addObject("allInCount", depositoryRecordService.CalculateAllApplicationInCount()); - // 购入材料数量 + // 购入物料数量 mv.addObject("InPrice", depositoryRecordService.CalculateAllApplicationInPrice()); - // 购入材料总额 + // 购入物料总额 mv.addObject("allInPrice", depositoryRecordService.CalculateAllApplicationInPrice()); return mv; } @@ -658,13 +662,13 @@ public class PageController { mv.addObject("depositories", depositoryService.findDepositoryAll()); mv.addObject("reviewers", userService.findReviewers()); mv.addObject("materials", materialService.findMaterialAll()); - // 转出材料数量 + // 转出物料数量 mv.addObject("InCount", depositoryRecordService.CalculateAllApplicationOutCount("已出库")); - // 转出材料金额 + // 转出物料金额 mv.addObject("allInCount", depositoryRecordService.CalculateAllApplicationOutCount("")); - // 出售材料数量 + // 出售物料数量 mv.addObject("InPrice", depositoryRecordService.CalculateAllApplicationOutPrice("已出库")); - // 出库材料总额 + // 出库物料总额 mv.addObject("allInPrice", depositoryRecordService.CalculateAllApplicationOutPrice("")); return mv; } @@ -819,7 +823,7 @@ public class PageController { return mv; } - @GetMapping("warehouseByParentId") + @GetMapping("/warehouseByParentId") public ModelAndView warehouseByParentId(Integer parentId) { ModelAndView mv = new ModelAndView(); mv.setViewName("pages/warehouse/warehouseByParentId"); @@ -834,6 +838,32 @@ public class PageController { return mv; } + @GetMapping("/placeView") + public ModelAndView placeView(Integer id) { + ModelAndView mv = new ModelAndView(); + mv.setViewName("pages/place/place_edit"); + if (id != null) { + mv.addObject("id", id); + Place placeById = placeService.findPlaceById(id); + mv.addObject("place", placeById); + } else { + throw new MyException("缺少必要参数!"); + } + return mv; + } + + @GetMapping("/insertPlace") + public ModelAndView insertPlace(Integer depositoryId){ + ModelAndView mv = new ModelAndView(); + mv.setViewName("pages/place/place_add"); + if(depositoryId != null){ + mv.addObject("depositoryId",depositoryId); + }else{ + throw new MyException("缺少必要参数!"); + } + return mv; + } + @GetMapping("findWareHouseByParentId") public ModelAndView findWareHouseByParentId(Integer parentId) { ModelAndView mv = new ModelAndView(); @@ -846,6 +876,8 @@ public class PageController { mv.addObject("depositories", depositoryRecordPByCondition); mv.setViewName("pages/warehouse/depository-out"); } else { + List placeByDid = placeService.findPlaceByDid(parentId); + mv.addObject("placeList",placeByDid); mv.setViewName("pages/warehouse/warehouseByParentId"); } } else { diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PlaceController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PlaceController.java new file mode 100644 index 00000000..9f8ed9ff --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PlaceController.java @@ -0,0 +1,154 @@ +package com.dreamchaser.depository_manage.controller; + +import com.dreamchaser.depository_manage.entity.Depository; +import com.dreamchaser.depository_manage.entity.Material; +import com.dreamchaser.depository_manage.entity.Place; +import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.pojo.MaterialP; +import com.dreamchaser.depository_manage.pojo.PlaceP; +import com.dreamchaser.depository_manage.pojo.RestResponse; +import com.dreamchaser.depository_manage.service.DepositoryService; +import com.dreamchaser.depository_manage.service.MaterialService; +import com.dreamchaser.depository_manage.service.PlaceService; +import com.dreamchaser.depository_manage.utils.CrudUtil; +import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/place") +public class PlaceController { + @Autowired + PlaceService placeService; + + @Autowired + MaterialService materialService; + + @Autowired + DepositoryService depositoryService; + + /** + * 根据条件查询库位 + * + * @param map + * @return + */ + @GetMapping("/findPlace") + public RestResponse findMaterial(@RequestParam Map map) { + List placeByCondition = placeService.findPlaceByCondition(map); + List placePList = new ArrayList<>(); + for (int i = 0; i < placeByCondition.size(); i++) { + Place place = placeByCondition.get(i); + PlaceP placeP = new PlaceP(place); + Integer depositoryId = place.getDid(); + Integer mid = place.getMid(); + Depository depositoryById = depositoryService.findDepositoryRecordById(depositoryId); + if(mid != null) { + Material materialById = materialService.findMaterialById(mid); + placeP.setMname(materialById.getMname()); + } + placeP.setDepositoryName(depositoryById.getDname()); + placeP.setDepositoryCode(depositoryById.getCode()); + placePList.add(placeP); + } + return new RestResponse(placePList, placeService.findPlaceCountByCondition(map), 200); + } + + @PostMapping("/addPlace") + public RestResponse insertPlace(@RequestBody Map map) { + String type = (String) map.get("type"); + Map insert = new HashMap<>(); + Integer success = 0; + if ("one".equals(type)) { + Integer place_x = ObjectFormatUtil.toInteger(map.get("place_x")); + Integer place_y = ObjectFormatUtil.toInteger(map.get("place_y")); + Integer place_z = ObjectFormatUtil.toInteger(map.get("place_z")); + String min = (String) map.get("min"); + String max = (String) map.get("max"); + String code = String.format("%02d", place_x) + String.format("%02d", place_y) + String.format("%02d", place_z); + insert.put("x", place_x); + insert.put("y", place_y); + insert.put("z", place_z); + insert.put("code", code); + insert.put("did", map.get("depositoryId")); + if (!"".equals(min)) { + insert.put("min", map.get("min")); + } else { + insert.put("min", 0); + } + if (!"".equals(max)) { + insert.put("max", map.get("max")); + } else { + insert.put("max", 0); + } + insert.put("state",1); + success += placeService.InsertPlace(insert); + } else { + + } + if ("one".equals(type)) { + return CrudUtil.postHandle(success, 1); + } else { + return new RestResponse(); + } + } + + /** + * 将库位状态改为删除 + * @param map + * @return + */ + @PostMapping("/deletePlace") + public RestResponse deletePlace(@RequestBody Map map){ + if (map.containsKey("id")){ + Integer id= ObjectFormatUtil.toInteger(map.get("id")); + return CrudUtil.deleteHandle(placeService.changeStateToDeletedById(id),1); + }else if (map.containsKey("ids")){ + List ids=(List) map.get("ids"); + return CrudUtil.deleteHandle(placeService.changeStateToDeletedByIds(ids),ids.size()); + }else { + throw new MyException("所需请求参数缺失!"); + } + } + + /** + * 修改库位信息 + */ + @PostMapping("/place_edit") + public RestResponse placeEdit(@RequestBody Map map){ + if(map.containsKey("state")){ + map.put("state",1); + }else{ + map.put("state",2); + } + Map update = new HashMap<>(); + Integer place_x = ObjectFormatUtil.toInteger(map.get("place_x")); + Integer place_y = ObjectFormatUtil.toInteger(map.get("place_y")); + Integer place_z = ObjectFormatUtil.toInteger(map.get("place_z")); + String min = (String) map.get("min"); + String max = (String) map.get("max"); + String code = String.format("%02d", place_x) + String.format("%02d", place_y) + String.format("%02d", place_z); + update.put("x", place_x); + update.put("y", place_y); + update.put("z", place_z); + update.put("code", code); + update.put("did", map.get("depositoryId")); + if (!"".equals(min)) { + update.put("min", map.get("min")); + } else { + update.put("min", 0); + } + if (!"".equals(max)) { + update.put("max", map.get("max")); + } else { + update.put("max", 0); + } + update.put("id",map.get("id")); + return CrudUtil.postHandle(placeService.UpdatePlace(update),1); + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java index 26b9e6b2..31d175bd 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java @@ -60,13 +60,8 @@ public class UserController { private UserService userService; @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") @Autowired - private JavaMailSender mailSender; - @Autowired private RoleService roleService; - @Value("${spring.mail.username}") - private String fromEmail; - @Autowired private DepositoryService depositoryService; @@ -134,8 +129,6 @@ public class UserController { VerificationCode v = new VerificationCode(); //将验证码存入验证码等待池 VerificationCodePool.addCode(principal, v); - //发送邮箱验证码 - sendEmail(principal, v.getCode()); return new RestResponse(); } return new RestResponse("", 304, new StatusInfo("发送验证码失败,该账户已存在!", "发送验证码失败,该账户已存在!")); @@ -442,32 +435,6 @@ public class UserController { return false; } - /** - * 发送带有验证码的邮件信息 - */ - private void sendEmail(String email, String code) { - //发送验证邮件 - try { - SimpleMailMessage mailMessage = new SimpleMailMessage(); - - //主题 - mailMessage.setSubject("仓库管理系统的验证码邮件"); - - //内容 - mailMessage.setText("欢迎使用仓库管理系统,您正在注册此账户。" + - "\n您收到的验证码是: " + code + " ,请不要将此验证码透露给别人。"); - - //发送的邮箱地址 - mailMessage.setTo(email); - //默认发送邮箱邮箱 - mailMessage.setFrom(fromEmail); - - //发送 - mailSender.send(mailMessage); - } catch (Exception e) { - throw new MyException(e.toString()); - } - } /** diff --git a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelDepositoryInfoConverter.java b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelDepositoryInfoConverter.java index f4dfed4c..045e5e23 100644 --- a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelDepositoryInfoConverter.java +++ b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelDepositoryInfoConverter.java @@ -17,6 +17,9 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.List; +/** + * 用于将仓库编码转为仓库id + */ @Component public class ExcelDepositoryInfoConverter implements Converter { @@ -40,7 +43,7 @@ public class ExcelDepositoryInfoConverter implements Converter { List depositoryAll = excelDepositoryInfoConverter.depositoryService.findDepositoryAll(); Integer data = 0; for (int i = 0; i < depositoryAll.size(); i++) { - if(cellData.getStringValue().equals(depositoryAll.get(i).getDname())){ + if(cellData.getStringValue().equals(depositoryAll.get(i).getCode())){ data = depositoryAll.get(i).getId(); } } @@ -55,8 +58,8 @@ public class ExcelDepositoryInfoConverter implements Converter { List depositoryAll = excelDepositoryInfoConverter.depositoryService.findDepositoryAll(); String data = ""; for (int i = 0; i < depositoryAll.size(); i++) { - if(value == depositoryAll.get(i).getId()){ - data = depositoryAll.get(i).getDname(); + if(Integer.compare(value,depositoryAll.get(i).getId()) == 0){ + data = depositoryAll.get(i).getCode(); } } return new WriteCellData<>(data); diff --git a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMTParentIdConverter.java b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMTParentIdConverter.java new file mode 100644 index 00000000..e87905ce --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMTParentIdConverter.java @@ -0,0 +1,40 @@ +package com.dreamchaser.depository_manage.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.dreamchaser.depository_manage.entity.MaterialType; +import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 用于物料分类上级编码 + */ +@Component +public class ExcelMTParentIdConverter implements Converter { + @Override + public Class supportJavaTypeKey() { + return Integer.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + + @Override + public Integer convertToJavaData(ReadCellData> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + Integer data = 0; + if(cellData.getStringValue() != null){ + data = ObjectFormatUtil.toInteger(cellData.getStringValue()); + } + return data; + } + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialCodeConverter.java b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialCodeConverter.java new file mode 100644 index 00000000..d17e4b63 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialCodeConverter.java @@ -0,0 +1,59 @@ +package com.dreamchaser.depository_manage.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.dreamchaser.depository_manage.entity.Depository; +import com.dreamchaser.depository_manage.entity.Material; +import com.dreamchaser.depository_manage.service.DepositoryService; +import com.dreamchaser.depository_manage.service.MaterialService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.List; + +/** + * 用于物料分类上级编码 + */ +@Component +public class ExcelMaterialCodeConverter implements Converter { + + @Autowired + private MaterialService materialService; + + private static ExcelMaterialCodeConverter excelMaterialCodeConverter; + @Override + public Class> supportJavaTypeKey() { + return Long.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + /** + * 这里读的时候会调用 + * + * @param + * @return + */ + @Override + public Long convertToJavaData(ReadCellData> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + Material material = excelMaterialCodeConverter.materialService.findMaterialByCode(Long.valueOf(cellData.getStringValue())); + if(material == null) { + throw new RuntimeException("没有该物料"); + } + return Long.valueOf(cellData.getStringValue()); + } + + @PostConstruct + public void init(){ + excelMaterialCodeConverter = this; + excelMaterialCodeConverter.materialService = this.materialService; + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialTypeInfoConverter.java b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialTypeInfoConverter.java index 6edea1fd..f4dbda33 100644 --- a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialTypeInfoConverter.java +++ b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialTypeInfoConverter.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.List; -// 用于表格数据导入时材料类型部分数据的转换 +// 用于表格数据导入时物料类型部分数据的转换 @Component public class ExcelMaterialTypeInfoConverter implements Converter { diff --git a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelStateInfoConverter.java b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelStateInfoConverter.java index 67a672a1..545d8886 100644 --- a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelStateInfoConverter.java +++ b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelStateInfoConverter.java @@ -22,7 +22,7 @@ public class ExcelStateInfoConverter implements Converter { @Override public Integer convertToJavaData(ReadCellData> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { switch (cellData.getStringValue()){ - case "启用": + case "核准": return 1; case "禁用": return 2; @@ -35,7 +35,7 @@ public class ExcelStateInfoConverter implements Converter { public WriteCellData> convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { switch (value){ case 1: - return new WriteCellData("启用"); + return new WriteCellData("核准"); case 2: return new WriteCellData("禁用"); default: diff --git a/src/main/java/com/dreamchaser/depository_manage/converter/ExcelValid.java b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelValid.java new file mode 100644 index 00000000..1408fafb --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/converter/ExcelValid.java @@ -0,0 +1,53 @@ +package com.dreamchaser.depository_manage.converter; + +import com.alibaba.excel.converters.AutoConverter; +import com.alibaba.excel.converters.Converter; + +import java.lang.annotation.*; + +/** + * Excel导入必填校验注解 + * + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface ExcelValid { + String message() default "非空字段必填"; + /** + * Index of column + * + * Read or write it on the index of column, If it's equal to -1, it's sorted by Java class. + * + * priority: index > order > default sort + * + * @return Index of column + */ + int index() default -1; + + /** + * Defines the sort order for an column. + * + * priority: index > order > default sort + * + * @return Order of column + */ + int order() default Integer.MAX_VALUE; + + /** + * Force the current field to use this converter. + * + * @return Converter + */ + Class extends Converter>> converter() default AutoConverter.class; + + /** + * + * default @see com.alibaba.excel.util.TypeUtil if default is not meet you can set format + * + * @return Format string + * @deprecated please use {@link com.alibaba.excel.annotation.format.DateTimeFormat} + */ + @Deprecated + String format() default ""; +} \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java b/src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java index a6c9250a..a36863b1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java @@ -10,7 +10,7 @@ public class ApplicationOutRecord { private Integer id; /** - * 材料id + * 物料id */ private Integer mid; diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java b/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java index 01d077ec..b89919be 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java @@ -8,55 +8,41 @@ import com.dreamchaser.depository_manage.converter.ExcelMaterialTypeInfoConverte import com.dreamchaser.depository_manage.converter.ExcelStateInfoConverter; import lombok.Data; import lombok.EqualsAndHashCode; +import org.xmlunit.util.Convert; import java.math.BigInteger; /** - * 用于excel表的导入 + * 用于物料excel表的导入 */ @Data @EqualsAndHashCode(callSuper = false) public class ExcelInfo { - /** 材料编号 */ + /** 物料编号 */ @ExcelProperty("EAS编号") private Integer id; - /** 仓库名称 */ - @ExcelProperty(value = "仓库名称",converter = ExcelDepositoryInfoConverter.class) - private Integer depositoryId; - - /** 材料名称 */ - @ExcelProperty("材料名称") + /** 物料名称 */ + @ExcelProperty(value = "物料名称") private String mname; - /** 数量 */ - @ExcelProperty("数量") - private Double quantity; - - /** 总金额 */ - @ExcelProperty("总金额") - private Double amounts; - - /** 材料种类id */ - @ExcelProperty(value = "材料种类",converter = ExcelMaterialTypeInfoConverter.class) + /** 物料种类id */ + @ExcelProperty(value = "物料种类编码") private Integer typeId; - /** 材料状态 */ + /** 物料状态 */ @ExcelProperty(value = "状态",converter = ExcelStateInfoConverter.class) private Integer state; - /** 存货编码 */ - @ExcelProperty("存货编码") + /** 编码 */ + @ExcelProperty("编码") private Long code; /** 规格型号 */ @ExcelProperty("规格型号") private String version; - /** 单价 */ - @ExcelProperty("单价") - private Double price; /** 计量单位 */ @ExcelProperty("计量单位") @@ -65,8 +51,4 @@ public class ExcelInfo { /** 材质 */ @ExcelProperty("材质") private String texture; - - /** 仓库编码 */ - @ExcelProperty("仓库编码") - private String depositoryCode; } diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByInventory.java b/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByInventory.java new file mode 100644 index 00000000..ecfc3ec1 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByInventory.java @@ -0,0 +1,50 @@ +package com.dreamchaser.depository_manage.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.dreamchaser.depository_manage.converter.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 用于库存excel表的导入 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ExcelInfoByInventory { + + /** 物料编号 */ + @ExcelProperty("EAS编号") + private Integer id; + + /** 存货编码 */ + @ExcelProperty(value = "编码",converter = ExcelMaterialCodeConverter.class) + private Long code; + + /** 仓库名称 */ + @ExcelProperty(value = "仓库编码",converter = ExcelDepositoryInfoConverter.class) + @ExcelValid(message = "仓库编码未填写") + private Integer depositoryId; + + /** 物料名称 */ + @ExcelProperty("物料名称") + private String mname; + + /** 数量 */ + @ExcelProperty(value = "数量") + @ExcelValid(message = "数量未填写") + private String quantity; + + /** 总金额 */ + @ExcelProperty("总金额") + private String amounts; + + /** 单价 */ + @ExcelProperty("单价") + @ExcelValid(message = "单价未填写") + private String price; + + /** 仓库编码 */ + @ExcelProperty("库位码") + private String depositoryCode; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByMT.java b/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByMT.java new file mode 100644 index 00000000..57b20770 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByMT.java @@ -0,0 +1,36 @@ +package com.dreamchaser.depository_manage.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.dreamchaser.depository_manage.converter.ExcelDepositoryInfoConverter; +import com.dreamchaser.depository_manage.converter.ExcelMTParentIdConverter; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用于物料类型excel表的导入 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ExcelInfoByMT { + /** 分类名称 */ + @ExcelProperty(value = "分类名称") + private String tname; + + /** + * 物料编码 + */ + @ExcelProperty(value = "编码") + private Integer id; + + /** + * 物料上级编码 + */ + @ExcelProperty(value = "上级编码") + private Integer parentId; + + /** + * 物料介绍 + */ + @ExcelProperty(value = "介绍") + private String introduce; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/Material.java b/src/main/java/com/dreamchaser/depository_manage/entity/Material.java index 6e082862..5753818a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/Material.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/Material.java @@ -20,7 +20,7 @@ public class Material { /** 仓库id */ private Integer depositoryId; - /** 材料名称 */ + /** 物料名称 */ private String mname; /** 数量 */ @@ -29,10 +29,10 @@ public class Material { /** 总金额 */ private Double amounts; - /** 材料种类id */ + /** 物料种类id */ private Integer typeId; - /** 材料状态 */ + /** 物料状态 */ private Integer state; /** 存货编码 */ @@ -44,7 +44,7 @@ public class Material { /** 单价 */ private Double price; - /** 材料类型 */ + /** 物料类型 */ private MaterialType materialType; /** 所属仓库 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/Place.java b/src/main/java/com/dreamchaser/depository_manage/entity/Place.java new file mode 100644 index 00000000..79eecedd --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/Place.java @@ -0,0 +1,57 @@ +package com.dreamchaser.depository_manage.entity; + +import lombok.Data; + +/** + * 库位 + */ +@Data +public class Place { + /** + * id + */ + private Integer id; + + /** + * 行 + */ + private Integer x; + /** + * 列 + */ + private Integer y; + /** + * 层 + */ + private Integer z; + + /** + * 存放物料id + */ + private Integer mid; + + /** + * 该库位所处仓库 + */ + private Integer did; + + /** + * 库位编码 + */ + private String code; + + /** + * 当前库位最少数目 + */ + private Integer min; + + /** + * 当前库位最多数目 + */ + private Integer max; + + /** + * 当前库位状态 + */ + private Integer state; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/StandingBook.java b/src/main/java/com/dreamchaser/depository_manage/entity/StandingBook.java index 8e62b1e3..15e6b8ed 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/StandingBook.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/StandingBook.java @@ -24,7 +24,7 @@ public class StandingBook { /** 总价 */ private Integer price; - /** 材料名称 */ + /** 物料名称 */ private String materialName; /* This code was generated by TableGo tools, mark 1 end. */ @@ -108,19 +108,19 @@ public class StandingBook { } /** - * 获取材料名称 + * 获取物料名称 * - * @return 材料名称 + * @return 物料名称 */ public String getMaterialName() { return this.materialName; } /** - * 设置材料名称 + * 设置物料名称 * * @param materialName - * 材料名称 + * 物料名称 */ public void setMaterialName(String materialName) { this.materialName = materialName; diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/materialOnly.java b/src/main/java/com/dreamchaser/depository_manage/entity/materialOnly.java new file mode 100644 index 00000000..f1effd05 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/materialOnly.java @@ -0,0 +1,35 @@ +package com.dreamchaser.depository_manage.entity; + +import lombok.Data; + +import java.math.BigInteger; + +@Data +public class materialOnly { + /** 存储id */ + private Integer id; + + /** 物料名称 */ + private String mname; + + + /** 物料种类id */ + private Integer typeId; + + /** 物料状态 */ + private Integer state; + + /** 存货编码 */ + private BigInteger code; + + /** 规格型号 */ + private String version; + + /** 计量单位 */ + private String unit; + + /** 材质 */ + private String texture; + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/listener/ExcelListener.java b/src/main/java/com/dreamchaser/depository_manage/listener/ExcelListener.java index f65f45d1..a9eaa7c8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/listener/ExcelListener.java +++ b/src/main/java/com/dreamchaser/depository_manage/listener/ExcelListener.java @@ -6,6 +6,8 @@ import com.alibaba.excel.exception.ExcelDataConvertException; import com.alibaba.excel.metadata.Cell; import com.alibaba.excel.metadata.data.ReadCellData; import com.alibaba.fastjson.JSON; +import com.dreamchaser.depository_manage.converter.ExcelValid; +import com.dreamchaser.depository_manage.utils.ExcelInValid; import com.dreamchaser.depository_manage.utils.ResultVo; import com.dreamchaser.depository_manage.utils.ResultVoUtil; import lombok.extern.slf4j.Slf4j; @@ -27,6 +29,7 @@ public class ExcelListener extends AnalysisEventListener { // 每一条数据解析都会来调用 @Override public void invoke(T t, AnalysisContext analysisContext) { + ExcelInValid.valid(t,analysisContext); log.info("【Excel文件】解析到一条数据{}:", JSON.toJSONString(t)); dataList.add(t); } @@ -57,7 +60,6 @@ public class ExcelListener extends AnalysisEventListener { Map cellMap = context.readRowHolder().getCellMap(); Collection values = cellMap.values(); Iterator iterator = values.iterator(); - String result = ""; while (iterator.hasNext()){ ReadCellData next = (ReadCellData) iterator.next(); diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java index 80671d08..a2c917c7 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java @@ -142,4 +142,11 @@ public interface DepositoryMapper { * @return */ List findDepositoryByAdminorg(String adminorg); + + /** + * 根据部门获取当前父级下的子仓库 + * @param map + * @return + */ + List findDepositoryByAdminorgAndParent(Map map); } diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml index 0e77f636..849f29f7 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml @@ -59,9 +59,22 @@ FROM depository d WHERE 1 = 1 - and d.adminorg = #{adminorg} + and d.adminorg = #{adminorg} - or d.adminorg = '' + or d.adminorg = '' and d.state != 3 + + + + SELECT + + FROM depository d WHERE 1 = 1 + + and (d.adminorg = #{adminorg} or d.adminorg = 361) + + + AND d.parentId = #{parentId} + + or d.adminorg = '' and d.state != 3 @@ -104,8 +117,12 @@ and (d.adminorg = #{adminorg} or d.adminorg = '') AND d.state != 3 + + LIMIT #{begin},#{size} + + SELECT count(*) @@ -122,7 +139,7 @@ AND d.state = #{state} - + AND d.parentId = #{parentId} diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java index f191acef..2ec1b7e3 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java @@ -167,21 +167,21 @@ public interface DepositoryRecordMapper { Double findApplicationOutRecordByDate(Map map); /** - * 根据条件获取月份中材料的总额 + * 根据条件获取月份中物料的总额 * @param map * @return */ Double findMaterialCountByMonth(Map map); /** - * 根据条件获取月份中入库材料的总额 + * 根据条件获取月份中入库物料的总额 * @param map * @return */ Double findApplicationInByMonth(Map map); /** - * 根据条件获取月份中出库材料的总额 + * 根据条件获取月份中出库物料的总额 * @param map * @return */ diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml index fe88463f..37ad61e9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml @@ -933,7 +933,7 @@ - + select ifnull(sum(quantity),0) from MaterialCountByMonth @@ -953,7 +953,7 @@ - + select ifnull(sum(quantity),0) from applicationinrecordinfo @@ -967,7 +967,7 @@ - + select ifnull(sum(aorquantity),0) from applicationoutrecordinfo diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java index d960b167..324424de 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java @@ -46,7 +46,7 @@ public interface MaterialMapper { Integer updateMaterial(Material material); /** - * 将对应仓库id和材料名称的库存修改数量和价格 + * 将对应仓库id和物料名称的库存修改数量和价格 * @param map 参数列表 * @return 受影响的行数 */ @@ -103,13 +103,13 @@ public interface MaterialMapper { Integer findCountByCondition(Map map); /** - * 根据主键id批量将材料状态改为删除 + * 根据主键id批量将物料状态改为删除 * @param ids * @return 受影响条数 */ Integer changeStateToDeletedByIds(List ids); /** - * 根据主键id将材料状态改为删除 + * 根据主键id将物料状态改为删除 * @param id * @return 受影响条数 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml index 6911602c..e3f02114 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml @@ -54,12 +54,12 @@ m.id, m.depository_id, m.mname, m.quantity, m.price, m.type_id,m.state,m.code ,m.version ,m.amounts ,m.unit ,m.texture,m.depositoryCode,m.number_of_temporary - + id,depository_id,mname,quantity,price,type_id,state,code ,version ,amounts ,unit ,texture,tname,depositoryCode,dname - + id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode @@ -129,7 +129,7 @@ - + SELECT @@ -172,17 +172,42 @@ id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode ) VALUES ( #{id}, + #{depositoryId}, + + + null, + #{mname}, + #{quantity}, + + + 0, + + #{price}, + + + 0, + #{materialTypeId}, #{code}, #{unit}, #{version}, #{texture}, + #{amounts}, + + + 0, + + #{depositoryCode} + + + '' + ) @@ -248,13 +273,16 @@ depositoryCode = #{depositoryCode}, - number_of_temporary = #{numberOfTemporary} + number_of_temporary = #{numberOfTemporary}, + + + texture = #{texture} WHERE id = #{id} - + UPDATE material diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java index fb5f4630..9c219ad0 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java @@ -15,63 +15,63 @@ import java.util.Map; @Mapper public interface MaterialTypeMapper { /** - * 根据map插入一条新材料类型 + * 根据map插入一条新物料类型 * @param map 参数map * @return 受影响的行数 */ Integer insertMaterialType(Map map); /** - * 根据id修改材料类型数据 + * 根据id修改物料类型数据 * @param map 修改的参数 * @return 受影响的行数 */ Integer updateMaterialType(Map map); /** - * 根据id查询材料类型 - * @param id 材料类型id - * @return 材料类型对象 + * 根据id查询物料类型 + * @param id 物料类型id + * @return 物料类型对象 */ MaterialType findMaterialTypeById(Integer id); /** - * 根据id查询材料名称 - * @param id 材料类型id - * @return 材料名称 + * 根据id查询物料名称 + * @param id 物料类型id + * @return 物料名称 */ String findMaterialTypeNameById(Integer id); /** - * 根据条件查询材料类型数目 + * 根据条件查询物料类型数目 * @param map 条件参数map * @return 符合条件的数目 */ Integer findMaterialTypeCountByCondition(Map map); /** - * 根据条件查询材料类型 + * 根据条件查询物料类型 * @param map 条件参数map - * @return 符合条件的材料类型 + * @return 符合条件的物料类型 */ List findMaterialTypeByCondition(Map map); /** - * 查询所有材料类型 - * @return 所有材料类型 + * 查询所有物料类型 + * @return 所有物料类型 */ List findMaterialTypeAll(); /** - * 根据id删除材料类型 + * 根据id删除物料类型 * @param id 待删除id * @return 受影响的条数 */ Integer deleteMaterialTypeById(Integer id); /** - * 根据多个id删除材料类型 + * 根据多个id删除物料类型 * @param ids 待删除所有id * @return 受影响条数 */ @@ -85,14 +85,14 @@ public interface MaterialTypeMapper { Integer updateMaterialTypes(Map map); /** - * 根据主键id将材料类型状态修改为删除 + * 根据主键id将物料类型状态修改为删除 * @param id * @return 受影响条数 */ Integer changeStateToDeletedById(Integer id); /** - * 根据多个主键id将材料类型状态修改为删除 + * 根据多个主键id将物料类型状态修改为删除 * @param ids * @return 受影响条数 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.java new file mode 100644 index 00000000..21458fcf --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.java @@ -0,0 +1,88 @@ +package com.dreamchaser.depository_manage.mapper; + +import com.dreamchaser.depository_manage.entity.Place; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +@Repository +@Mapper +public interface PlaceMapper { + /** + * 查找所有库位 + * @return + */ + List findPlaceAll(); + + /** + * 根据id查询库位 + * @return + */ + Place findPlaceById(Integer id); + + /** + * 根据条件查找库位 + * @param map + * @return + */ + List findPlaceByCondition(Map map); + + /** + * 查找符合条件的库位数 + * @param map + * @return + */ + Integer findPlaceCountByCondition(Map map); + + /** + * 根据条件修改库位 + * @param map + * @return + */ + Integer UpdatePlace(Map map); + + /** + * 根据条件修改库位 + * @param place + * @return + */ + Integer UpdatePlace(Place place); + + + /** + * 根据主键删除库位 + * @param id + * @return + */ + Integer DelPlace(Integer id); + + /** + * 插入一条库位信息 + * @param map + * @return + */ + Integer InsertPlace(Map map); + + /** + * 根据仓库编号查找库位 + * @param did + * @return + */ + List findPlaceByDid(Integer did); + + /** + * 根据id将库位状态改为删除 + * @param id + * @return + */ + Integer changeStateToDeletedById(Integer id); + + /** + * 根据批量id将库位状态改为删除 + * @param ids + * @return + */ + Integer changeStateToDeletedByIds(List ids); +} diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml new file mode 100644 index 00000000..88de9854 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + p.id,p.x,p.y,p.z,p.code,p.mid,p.did,p.min,p.max,p.state + + + + + SELECT + + FROM place p + where p.state != 3 + + + + + SELECT + + FROM place p WHERE 1 = 1 + + and p.id = #{id} + + + AND p.x = #{x} + + + AND p.y = #{y} + + + AND p.z = #{z} + + + AND p.code = #{code} + + + AND p.mid = #{mid} + + + AND p.did = #{did} + + + AND p.max = #{max} + + + AND p.min = #{min} + + + and p.state = #{state} + + and p.state != 3 + + LIMIT #{begin},#{size} + + + + + SELECT + count(*) + FROM place p WHERE 1 = 1 + + and p.id = #{id} + + + AND p.x = #{x} + + + AND p.y = #{y} + + + AND p.z = #{z} + + + AND p.mid = #{mid} + + + AND p.did = #{did} + + + AND p.max = #{max} + + + AND p.min = #{min} + + + and p.state = #{state} + + and p.state != 3 + + + + SELECT + + FROM place p WHERE 1 = 1 and p.did = #{did} + + + + + SELECT + + FROM place p WHERE p.id = #{id} + + + + + INSERT INTO place ( + id,x,y,z,code, mid,did,min,max,state + ) VALUES ( + #{id}, + #{x}, + #{y}, + #{z}, + #{code}, + #{mid}, + #{did}, + #{min}, + #{max}, + #{state} + ) + + + + + UPDATE place + + + x = #{x}, + + + y = #{y}, + + + z = #{z}, + + + code = #{code}, + + + mid = #{mid}, + + + did = #{did}, + + + min = #{min}, + + + max = #{max}, + + + state = #{state} + + + WHERE id = #{id} + + + + + + + DELETE FROM place WHERE id = #{id} + + + + + + update place + + state = 3 + + where id in + + #{id} + + + + + + UPDATE place + + state = 3 + + WHERE id = #{id} + + + \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationModel.java b/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationModel.java index 51e04267..5a4663ee 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationModel.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationModel.java @@ -15,7 +15,7 @@ public class ApplicationModel { private String depositoryName; /** - * 材料型号 + * 物料型号 */ private String version; /** @@ -23,11 +23,11 @@ public class ApplicationModel { */ private Integer depositoryId; /** - * 材料名称 + * 物料名称 */ private String mname; /** - * 材料编号 + * 物料编号 */ private Integer mid; /** @@ -36,7 +36,7 @@ public class ApplicationModel { private Integer applicant; /** - * 材料编码 + * 物料编码 */ private BigInteger code; @@ -49,4 +49,9 @@ public class ApplicationModel { * 备注说明 */ private String applyRemark; + + /** + * 单价 + */ + private Double price; } diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java index 3826366f..09b94a4e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java @@ -10,12 +10,12 @@ public class ApplicationOutRecordP { private Integer id; /** - * 材料id + * 物料id */ private Integer mid; /** - * 材料名称 + * 物料名称 */ private String mname; @@ -130,7 +130,7 @@ public class ApplicationOutRecordP { private Integer transferId; /** - * 材料存货编码 + * 物料存货编码 */ private String mcode; } diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialOnlyP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialOnlyP.java new file mode 100644 index 00000000..9c3458ce --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialOnlyP.java @@ -0,0 +1,30 @@ +package com.dreamchaser.depository_manage.pojo; + +import java.math.BigInteger; + +public class MaterialOnlyP { + /** 存储id */ + private Integer id; + + /** 物料名称 */ + private String mname; + + + /** 物料种类id */ + private Integer typeId; + + /** 物料状态 */ + private Integer state; + + /** 存货编码 */ + private BigInteger code; + + /** 规格型号 */ + private String version; + + /** 计量单位 */ + private String unit; + + /** 材质 */ + private String texture; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java index d067c2e7..7bd4d5a5 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java @@ -28,7 +28,7 @@ public class MaterialP { private Integer depositoryId; /** - * 材料名称 + * 物料名称 */ private String mname; @@ -43,12 +43,12 @@ public class MaterialP { private Double amounts; /** - * 材料种类名称 + * 物料种类名称 */ private String typeName; /** - * 材料状态 + * 物料状态 */ private Integer state; @@ -108,10 +108,10 @@ public class MaterialP { public MaterialP(Material material) { this.id = material.getId(); // 编号 - this.mname = material.getMname(); // 材料名称 + this.mname = material.getMname(); // 物料名称 this.quantity = material.getQuantity(); // 数量 this.price = material.getPrice(); // 单价 - this.state = material.getState(); // 材料状态 + this.state = material.getState(); // 物料状态 this.amounts = material.getAmounts(); // 总额 this.unit = material.getUnit(); // 计量单位 this.texture = material.getTexture(); // 材质 diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/PlaceP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/PlaceP.java new file mode 100644 index 00000000..2e19aeb6 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/PlaceP.java @@ -0,0 +1,105 @@ +package com.dreamchaser.depository_manage.pojo; + +import com.dreamchaser.depository_manage.entity.Place; +import lombok.Data; + +@Data +public class PlaceP { + + /** + * id + */ + private Integer id; + + /** + * 行 + */ + private Integer x; + /** + * 列 + */ + private Integer y; + /** + * 层 + */ + private Integer z; + + /** + * 存放物料id + */ + private Integer mid; + + /** + * 该库位所处仓库 + */ + private Integer did; + + /** + * 库位编码 + */ + private String code; + + /** + * 当前库位最少数目 + */ + private Integer min; + + /** + * 当前库位最多数目 + */ + private Integer max; + + /** + * 当前库位状态 + */ + private Integer state; + + /** + * 物料名称 + */ + private String mname; + + /** + * 物料编码 + */ + private String mcode; + + /** + * 仓库编码 + */ + private String depositoryCode; + /** + * 仓库名称 + */ + private String depositoryName; + + public PlaceP(Integer id, Integer x, Integer y, Integer z, Integer mid, Integer did, String code, Integer min, Integer max, Integer state, String mname, String mcode, String depositoryCode, String depositoryName) { + this.id = id; + this.x = x; + this.y = y; + this.z = z; + this.mid = mid; + this.did = did; + this.code = code; + this.min = min; + this.max = max; + this.state = state; + this.mname = mname; + this.mcode = mcode; + this.depositoryCode = depositoryCode; + this.depositoryName = depositoryName; + } + + public PlaceP(Place p){ + this.id = p.getId(); + this.x = p.getX(); + this.y = p.getY(); + this.z = p.getZ(); + this.mid = p.getMid(); + this.did = p.getDid(); + this.code = p.getCode(); + this.min = p.getMin(); + this.max = p.getMax(); + this.state = p.getState(); + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java b/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java index 196771f5..4abf5f60 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java @@ -1,10 +1,16 @@ package com.dreamchaser.depository_manage.pojo; +import cn.hutool.core.lang.Snowflake; +import com.alibaba.fastjson.JSONObject; +import com.dreamchaser.depository_manage.utils.CreateQrCodeUtil; +import com.dreamchaser.depository_manage.utils.SnowFlakeUtil; import lombok.Data; import lombok.experimental.Accessors; +import java.io.IOException; import java.io.Serializable; +import java.util.Map; /** * 所有服务统一响应数据格式 @@ -25,6 +31,10 @@ public class RestResponse implements Serializable { * 状态码 */ private int status=200; + + // 通过雪花算法产生随机id + private String SnowId; + /** * 状态信息 */ @@ -48,5 +58,15 @@ public class RestResponse implements Serializable { this.status = status; this.statusInfo = statusInfo; } + + public static RestResponse CreateQrCode(Map params) throws IOException { + // 获取要生产二维码的内容 + String context = JSONObject.toJSONString(params); + // 生成base64类型图片 + String qrCode = CreateQrCodeUtil.createQrCode(context, 200, 200); + return new RestResponse(qrCode,200,new StatusInfo("成功!","二维码生成成功")); + } + + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java index 50e07b98..4327674f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java @@ -151,23 +151,23 @@ public interface DepositoryRecordService { /** - * 计算材料总数 + * 计算物料总数 * @return */ Double CalculateAllCount(Integer type,String state); /** - * 计算材料总额 + * 计算物料总额 * @return */ Double CalculateAllPrice(Integer type,String state); /** - * 计算入库材料总额 + * 计算入库物料总额 * @return */ Double CalculateAllApplicationInPrice(); /** - * 计算出库材料总额 + * 计算出库物料总额 * @return */ Double CalculateAllApplicationOutPrice(String state); @@ -212,13 +212,13 @@ public interface DepositoryRecordService { */ Double findApplicationOutRecordByDate(Long end,Long start,Integer depositoryId); /** - * 根据条件获取月份中材料的总额 + * 根据条件获取月份中物料的总额 * @param map * @return */ Double findMaterialCountByMonth(Map map); /** - * 根据条件获取月份中材料的总额 + * 根据条件获取月份中物料的总额 * @param map * @return */ @@ -275,12 +275,12 @@ public interface DepositoryRecordService { /** - * 计算入库材料总数 + * 计算入库物料总数 * @return */ Double CalculateAllApplicationInCount(); /** - * 计算出库材料总数 + * 计算出库物料总数 * @return */ Double CalculateAllApplicationOutCount(String state); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java b/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java index a35916b3..0740c9e5 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java @@ -5,5 +5,26 @@ import com.dreamchaser.depository_manage.utils.ResultVo; import org.springframework.web.multipart.MultipartFile; public interface ExcelService { - public ResultVo importExcel(MultipartFile file); + + /** + * 用于导入物料名称 + * @param file + * @param excelInfo + * @return + */ + ResultVo importExcelMaterial(MultipartFile file,String excelInfo); + + /** + * 用于导入物料分类 + * @param file + * @return + */ + ResultVo importExcelMaterialType(MultipartFile file); + + /** + * 用于导入库存信息 + * @param file + * @return + */ + ResultVo importExcelInventory(MultipartFile file); } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java b/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java index 200d6c26..294a3b59 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java @@ -9,7 +9,7 @@ import java.util.List; import java.util.Map; /** - * 库存材料service层接口 + * 库存物料service层接口 * @author Dreamchaser */ public interface MaterialService { @@ -51,6 +51,13 @@ public interface MaterialService { */ List findMaterialPByCondition(Map map); + + /** + * 根据编码获取对应物料 + * @return + */ + Material findMaterialByCode(Long code); + /** * 查询所有的库存信息 * @return 所有的库存信息 @@ -92,14 +99,14 @@ public interface MaterialService { /** - * 根据主键Id将材料状态改为删除 + * 根据主键Id将物料状态改为删除 * @param id * @return 受影响条数 */ Integer changeStateToDeletedById(Integer id); /** - * 根据主键id批量将材料状态改为删除 + * 根据主键id批量将物料状态改为删除 * @param ids * @return 受影响条数 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/service/MaterialTypeService.java b/src/main/java/com/dreamchaser/depository_manage/service/MaterialTypeService.java index 4fa251c1..ce58b6a4 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/MaterialTypeService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/MaterialTypeService.java @@ -6,12 +6,12 @@ import java.util.List; import java.util.Map; /** - * 材料的服务层接口 + * 物料的服务层接口 * @author 金昊霖 */ public interface MaterialTypeService { /** - * 插入一条材料类型记录 + * 插入一条物料类型记录 * @param map 参数map * @return 受影响的数量 */ @@ -25,14 +25,14 @@ public interface MaterialTypeService { Integer findMaterialTypeCountByCondition(Map map); /** - * 根据条件查询材料类型 + * 根据条件查询物料类型 * @param map * @return 符合条件的记录 */ List findMaterialTypeByCondition(Map map); /** - * 查询所有材料类型 + * 查询所有物料类型 * @return 所有记录 */ List findMaterialTypeAll(); @@ -57,28 +57,28 @@ public interface MaterialTypeService { Integer deleteMaterialTypeByIds(List ids); /** - * 修改材料类型 + * 修改物料类型 * @param map * @return 受影响条数 */ Integer updateMaterialType(Map map); /** - * 根据主键id查询对应材料类型 + * 根据主键id查询对应物料类型 * @param id * @return 对应记录 */ MaterialType findMaterialTypeById(Integer id); /** - * 根据主键id将材料类型状态修改为删除 + * 根据主键id将物料类型状态修改为删除 * @param id * @return 受影响条数 */ Integer changeStateToDeletedById(Integer id); /** - * 根据多个主键ids将材料类型状态修改为删除 + * 根据多个主键ids将物料类型状态修改为删除 * @param ids * @return 受影响条数 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java b/src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java new file mode 100644 index 00000000..944473f1 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java @@ -0,0 +1,87 @@ +package com.dreamchaser.depository_manage.service; + +import com.dreamchaser.depository_manage.entity.Place; + +import java.util.List; +import java.util.Map; + +public interface PlaceService { + /** + * 查找所有库位 + * @return + */ + List findPlaceAll(); + + /** + * 根据条件查找库位 + * @param map + * @return + */ + List findPlaceByCondition(Map map); + + /** + * 查找符合条件的库位数 + * @param map + * @return + */ + Integer findPlaceCountByCondition(Map map); + + /** + * 根据条件修改库位 + * @param map + * @return + */ + Integer UpdatePlace(Map map); + + /** + * 根据条件修改库位 + * @param place + * @return + */ + Integer UpdatePlace(Place place); + + + /** + * 根据主键删除库位 + * @param pid + * @return + */ + Integer DelPlace(Integer pid); + + /** + * 插入一条库位信息 + * @param map + * @return + */ + Integer InsertPlace(Map map); + + /** + * 根据仓库编号查找库位 + * @param did + * @return + */ + List findPlaceByDid(Integer did); + + + /** + * 根据id查询库位 + * @return + */ + Place findPlaceById(Integer id); + + /** + * 根据id将库位状态改为删除 + * @param id + * @return + */ + Integer changeStateToDeletedById(Integer id); + + /** + * 根据批量id将库位状态改为删除 + * @param ids + * @return + */ + Integer changeStateToDeletedByIds(List ids); + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index 71a3db3c..e5e6eca6 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -12,11 +12,10 @@ import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.RoleService; -import com.dreamchaser.depository_manage.utils.DateUtil; -import com.dreamchaser.depository_manage.utils.HttpUtils; -import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -import com.dreamchaser.depository_manage.utils.WordUtil; +import com.dreamchaser.depository_manage.utils.*; import org.apache.http.protocol.HTTP; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.Mergeable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; @@ -53,6 +52,12 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { @Autowired private RedisTemplate redisTemplate; + @Autowired + private RedissonClient redissonClient; + + + + /** * 提交申请,插入一条仓库调度记录 * @@ -90,7 +95,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { Double Inventory = depositoryMapper.getToDayInventoryByDName(temp); String code = createCode(depositoryRecordById.getDname(), "InOrderNumber"); Double quantity = Double.parseDouble((String) map.get("quantity")); + Double price = Double.parseDouble((String)map.get("price")); Integer mid = ObjectFormatUtil.toInteger(map.get("mid")); + Material material = materialMapper.findMaterialById(mid); // 判断剩余容量是否可以存入 if (depositoryRecordById.getMaxNumber() - Inventory < quantity) { @@ -100,23 +107,27 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { param.put("depositoryId", depositoryId); param.put("mname", material.getMname()); List materialByCondition = materialMapper.findMaterialByCondition(param); - // 计算当前入库材料金额 - int amounts = (int) ((material.getPrice() / 100) * quantity * 100); - map.put("price", amounts); + // 获取当前入库金额 + Double amounts = (quantity * price * 100); + // 获取平均价格 + Double avgPrice = (material.getAmounts() + amounts) / (material.getQuantity() + quantity); + map.put("amounts", amounts); + map.put("price",price * 100); String simpleTime = DateUtil.getSimpleTime(new Date()); map.put("applicant_time", DateUtil.DateTimeToTimeStamp(simpleTime)); map.put("code", code); - // 获取当前材料 + // 获取当前物料 if (materialByCondition.size() > 0) { // 如果当前存在 Material mt = materialByCondition.get(0); mt.setAmounts(mt.getAmounts() + amounts); mt.setQuantity((int) (mt.getQuantity() + quantity)); + mt.setPrice(avgPrice); materialMapper.updateMaterial(mt); } else { Map insert = new HashMap<>(); Material materialById = materialMapper.findMaterialById(mid); insert.put("depositoryId", depositoryId); - insert.put("price", materialById.getPrice()); + insert.put("price", avgPrice); insert.put("mname", materialById.getMname()); insert.put("quantity", quantity); insert.put("materialTypeId", materialById.getTypeId()); @@ -124,7 +135,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { insert.put("unit", materialById.getUnit()); insert.put("version", materialById.getVersion()); insert.put("texture", materialById.getTexture()); - insert.put("amounts", quantity * materialById.getPrice()); + insert.put("amounts", amounts); insert.put("depositoryCode", materialById.getDepositoryCode()); materialMapper.insertMaterial(insert); } @@ -143,7 +154,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { Long time = DateUtil.DateTimeToTimeStamp(DateUtil.getSimpleTime(new Date())); map.put("applicantTime", time); Integer mid = ObjectFormatUtil.toInteger(map.get("mid")); - // 获取当前材料 + // 获取当前物料 Material materialById = materialMapper.findMaterialById(mid); int amounts = (int) ((materialById.getPrice() / 100) * quantity * 100); map.put("price", amounts); @@ -153,7 +164,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.put("istransfer", 2); Map update = new HashMap<>(); update.put("id", materialById.getId()); - update.put("numberOfTemporary", materialById.getNumberOfTemporary() + quantity); + Integer numberOfTemporary = materialById.getNumberOfTemporary(); + if(numberOfTemporary == null){ + numberOfTemporary = 0; + } + update.put("numberOfTemporary", numberOfTemporary + quantity); materialMapper.updateMaterial(update); Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(materialById.getDepositoryId()); String code = createCode(depositoryRecordById.getDname(), "outOrderNumber"); @@ -172,7 +187,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } /** - * 计算购入材料总数 + * 计算购入物料总数 * * @return */ @@ -187,7 +202,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } /** - * 计算出库材料总数 + * 计算出库物料总数 * * @param state * @return @@ -586,7 +601,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } /** - * 计算材料总数 + * 计算物料总数 * * @return */ @@ -614,7 +629,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { /** - * 计算材料总额 + * 计算物料总额 * * @return */ @@ -641,7 +656,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } /** - * 计算入库材料总额 + * 计算入库物料总额 * * @return */ @@ -659,7 +674,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } /** - * 计算出库材料总额 + * 计算出库物料总额 * * @param state * @return @@ -771,7 +786,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } /** - * 根据条件获取月份中材料的总额 + * 根据条件获取月份中物料的总额 * * @param map * @return @@ -782,7 +797,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } /** - * 根据条件获取月份中材料的总额 + * 根据条件获取月份中物料的总额 * * @param map * @return @@ -939,21 +954,23 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { * @return */ private String createCode(String depositoryName, String key) { - -// 单号(公司简称+仓库简称+年月日+数字(位数设置>=9)) - String code = "GK"; - String nowTime = DateUtil.getNowTime(); - depositoryName = WordUtil.getPinYinHeadChar(depositoryName); - String orderNumber = redisTemplate.opsForValue().get(key); - if (orderNumber == null) { - redisTemplate.opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); - orderNumber = "1"; - } - int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1; - redisTemplate.boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); - orderNumber = String.format("%09d", ObjectFormatUtil.toInteger(orderNumber)); - code = code + depositoryName + nowTime + orderNumber; - return code; + RLock lock = redissonClient.getLock(key); +// 单号(公司简称+仓库简称+年月日+数字(位数设置>=9)) + String code = "GK"; + String nowTime = DateUtil.getNowTime(); + depositoryName = WordUtil.getPinYinHeadChar(depositoryName); + lock.lock(5,TimeUnit.SECONDS); + String orderNumber = redisTemplate.opsForValue().get(key); + if (orderNumber == null) { + redisTemplate.opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); + orderNumber = "1"; + } + int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1; + redisTemplate.boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); + lock.unlock(); + orderNumber = String.format("%09d", ObjectFormatUtil.toInteger(orderNumber)); + code = code + depositoryName + nowTime + orderNumber; + return code; } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java index 701b413e..c69e49e1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java @@ -63,14 +63,14 @@ public class DepositoryServiceImpl implements DepositoryService { if(adminorgName.isEmpty()){ code = "GK" + dnamePinYin +"-"+ String.format("%02d", condition.size() + 1); }else { - code = "GK" + adminorgName.substring(0, 2) + dnamePinYin + "-" + String.format("%02d", condition.size() + 1); + code = "GK" + dnamePinYin + "-" + String.format("%02d", condition.size() + 1); } }else{ // 设置编码 if(adminorgName.isEmpty()){ code = "GK" + dnamePinYin + "-01"; }else { - code = "GK" + adminorgName.substring(0,2) + dnamePinYin+"-01"; + code = "GK" + dnamePinYin+"-01"; } } }else { @@ -112,6 +112,15 @@ public class DepositoryServiceImpl implements DepositoryService { */ @Override public List findDepositoryRecordPByCondition(Map map) { + Integer size = 10, page = 1; + if (map.containsKey("size")) { + size = ObjectFormatUtil.toInteger(map.get("size")); + map.put("size", size); + } + if (map.containsKey("page")) { + page = ObjectFormatUtil.toInteger(map.get("page")); + map.put("begin", (page - 1) * size); + } List list = depositoryMapper.findDepositoryRecordPByCondition(map); for (int i = 0; i < list.size(); i++) { Depository depository = list.get(i); @@ -309,7 +318,7 @@ public class DepositoryServiceImpl implements DepositoryService { public List InitTreeMenus(String adminorg) { Map param = new HashMap<>(); param.put("parentId",0); - param.put("adminorg",adminorg); + param.put("adminorg",361); List depositories = depositoryMapper.findDepositoryRecordPByCondition(param); List list = new ArrayList<>(); for (int i = 0; i < depositories.size(); i++) { @@ -351,7 +360,8 @@ public class DepositoryServiceImpl implements DepositoryService { } // 获取当前父类的子类 // List parentByDepository = depositoryMapper.getParentByDepository(id); - List parentByDepository = depositoryMapper.findDepositoryRecordPByCondition(param); +// List parentByDepository = depositoryMapper.findDepositoryRecordPByCondition(param); + List parentByDepository = depositoryMapper.findDepositoryByAdminorgAndParent(param); if(parentByDepository.size() > 0){ for (int i = 0; i < parentByDepository.size(); i++) { Depository d = parentByDepository.get(i); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java index 4542bba1..1a5c0e6a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java @@ -2,8 +2,12 @@ package com.dreamchaser.depository_manage.service.impl; import com.alibaba.fastjson.JSON; import com.dreamchaser.depository_manage.entity.ExcelInfo; +import com.dreamchaser.depository_manage.entity.ExcelInfoByInventory; +import com.dreamchaser.depository_manage.entity.ExcelInfoByMT; +import com.dreamchaser.depository_manage.entity.Material; import com.dreamchaser.depository_manage.service.ExcelService; import com.dreamchaser.depository_manage.service.MaterialService; +import com.dreamchaser.depository_manage.service.MaterialTypeService; import com.dreamchaser.depository_manage.utils.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -31,8 +35,16 @@ public class ExcelServiceImpl implements ExcelService { @Autowired MaterialService materialService; + @Autowired + MaterialTypeService materialTypeService; + /** + * 用于导入物料名称 + * @param file + * @param excelInfo + * @return + */ @Override - public ResultVo importExcel(MultipartFile file) { + public ResultVo importExcelMaterial(MultipartFile file,String excelInfo) { // 1.入参校验 ResultVo checkExcelParam = excelutil.checkExcelParam(file); if (!checkExcelParam.checkSuccess()) { @@ -49,10 +61,12 @@ public class ExcelServiceImpl implements ExcelService { return ResultVoUtil.error("【导入Excel文件】生成的Excel文件的路径为空"); } // 3.读取excel文件 - Map readResult = excelutil.simpleExcelRead(filePath, ExcelInfo.class); + Map readResult = new HashMap<>(); + if("material".equals(excelInfo)){ + readResult = excelutil.simpleExcelRead(filePath, ExcelInfo.class); + } List excelVos = (List) readResult.get("dataList"); List errMsg =(List) readResult.get("errMsg"); - boolean empty = CollectionUtil.isEmpty(excelVos); if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) { log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename()); @@ -69,14 +83,9 @@ public class ExcelServiceImpl implements ExcelService { Map param = new HashMap<>(); param.put("mname",excelVos.get(i).getMname()); param.put("code",excelVos.get(i).getCode()); - param.put("price",excelVos.get(i).getPrice()); param.put("unit",excelVos.get(i).getUnit()); - param.put("amounts",excelVos.get(i).getAmounts()); - param.put("quantity",excelVos.get(i).getQuantity()); param.put("version",excelVos.get(i).getVersion()); param.put("texture",excelVos.get(i).getTexture()); - param.put("depositoryId",excelVos.get(i).getDepositoryId()); - param.put("depositoryCode",excelVos.get(i).getDepositoryCode()); param.put("materialTypeId",excelVos.get(i).getTypeId()); param.put("id",excelVos.get(i).getId()); materialService.insertMaterial(param); @@ -98,4 +107,152 @@ public class ExcelServiceImpl implements ExcelService { return ResultVoUtil.returnResultVo(200,readResult,"结果"); // return ResultVoUtil.success(excelVos); } + + /** + * 用于导入物料分类 + * @param file + * @return + */ + @Override + public ResultVo importExcelMaterialType(MultipartFile file) { + // 1.入参校验 + ResultVo checkExcelParam = excelutil.checkExcelParam(file); + if (!checkExcelParam.checkSuccess()) { + log.error(checkExcelParam.getMsg()); + return checkExcelParam; + } + // 2.上传至服务器某路径下 + ResultVo resultVo = uploadFile(file); + if (!resultVo.checkSuccess()) { + return resultVo; + } + String filePath = (String)resultVo.getData(); + if (StringUtils.isBlank(filePath)) { + return ResultVoUtil.error("【导入Excel文件】生成的Excel文件的路径为空"); + } + // 3.读取excel文件 + Map readResult = excelutil.simpleExcelRead(filePath, ExcelInfoByMT.class); + List excelVos = (List) readResult.get("dataList"); + List errMsg =(List) readResult.get("errMsg"); + boolean empty = CollectionUtil.isEmpty(excelVos); + if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) { + log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename()); + return ResultVoUtil.error("上传Excel文件为空"); + } + if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) { + log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename()); + return ResultVoUtil.error("上传Excel文件为空"); + } + // 4.通过线程池开启一个线程去执行数据库操作,主线程继续往下执行 + // 4.1开启一个线程 + TaskCenterUtil taskCenterUtil = TaskCenterUtil.getTaskCenterUtil(); + taskCenterUtil.submitTask(() -> { + List success = new ArrayList<>(); + Map returnResult = new HashMap<>(); + + for (int i = 0; i < excelVos.size(); i++) { + Map insert = new HashMap<>(); + insert.put("id",excelVos.get(i).getId()); + insert.put("tname",excelVos.get(i).getTname()); + insert.put("introduce",excelVos.get(i).getIntroduce()); + if(excelVos.get(i).getParentId() == null){ + insert.put("materialTypeId",0); + }else { + insert.put("materialTypeId", excelVos.get(i).getParentId()); + } + materialTypeService.insertMaterialType(insert); + success.add(excelVos.get(i)); + } + + log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVos)); + returnResult.put("success",success); + returnResult.put("errMsg",errMsg); + return ResultVoUtil.returnResultVo(200,returnResult,"结果"); + }); + // 4.2删除临时文件 + boolean deleteFile = FileUtil.deleteFile(new File(filePath)); + if (!deleteFile) { + log.error("【导入Excel文件】删除临时文件失败,临时文件路径为{}", filePath); + return ResultVoUtil.error("删除临时文件失败"); + } + log.info("【导入Excel文件】删除临时文件成功,临时文件路径为:{}", filePath); + return ResultVoUtil.returnResultVo(200,readResult,"结果"); +// return ResultVoUtil.success(excelVos); + + } + + + /** + * 用于导入库存信息 + * @param file + * @return + */ + @Override + public ResultVo importExcelInventory(MultipartFile file) { + // 1.入参校验 + ResultVo checkExcelParam = excelutil.checkExcelParam(file); + if (!checkExcelParam.checkSuccess()) { + log.error(checkExcelParam.getMsg()); + return checkExcelParam; + } + // 2.上传至服务器某路径下 + ResultVo resultVo = uploadFile(file); + if (!resultVo.checkSuccess()) { + return resultVo; + } + String filePath = (String)resultVo.getData(); + if (StringUtils.isBlank(filePath)) { + return ResultVoUtil.error("【导入Excel文件】生成的Excel文件的路径为空"); + } + // 3.读取excel文件 + Map readResult = excelutil.simpleExcelRead(filePath, ExcelInfoByInventory.class); + List excelVos = (List) readResult.get("dataList"); + List errMsg =(List) readResult.get("errMsg"); + boolean empty = CollectionUtil.isEmpty(excelVos); + if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) { + log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename()); + return ResultVoUtil.error("上传Excel文件为空"); + } + if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) { + log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename()); + return ResultVoUtil.error("上传Excel文件为空"); + } + // 4.通过线程池开启一个线程去执行数据库操作,主线程继续往下执行 + // 4.1开启一个线程 + TaskCenterUtil taskCenterUtil = TaskCenterUtil.getTaskCenterUtil(); + taskCenterUtil.submitTask(() -> { + List success = new ArrayList<>(); + Map returnResult = new HashMap<>(); + + for (int i = 0; i < excelVos.size(); i++) { + Map update = new HashMap<>(); + update.put("price",excelVos.get(i).getPrice()); + update.put("quantity",excelVos.get(i).getQuantity()); + if(excelVos.get(i).getAmounts() == null || "".equals(excelVos.get(i).getAmounts())){ + update.put("amounts",Double.parseDouble(excelVos.get(i).getPrice())*100 * Double.parseDouble(excelVos.get(i).getQuantity())); + }else { + update.put("amounts", Double.parseDouble(excelVos.get(i).getAmounts()) * 100); + } + update.put("depositoryId",excelVos.get(i).getDepositoryId()); + update.put("depositoryCode",excelVos.get(i).getDepositoryCode()); + Material materialByCode = materialService.findMaterialByCode(excelVos.get(i).getCode()); + update.put("id",materialByCode.getId()); + materialService.updateMaterial(update); + success.add(excelVos.get(i)); + } + + log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVos)); + returnResult.put("success",success); + returnResult.put("errMsg",errMsg); + return ResultVoUtil.returnResultVo(200,returnResult,"结果"); + }); + // 4.2删除临时文件 + boolean deleteFile = FileUtil.deleteFile(new File(filePath)); + if (!deleteFile) { + log.error("【导入Excel文件】删除临时文件失败,临时文件路径为{}", filePath); + return ResultVoUtil.error("删除临时文件失败"); + } + log.info("【导入Excel文件】删除临时文件成功,临时文件路径为:{}", filePath); + return ResultVoUtil.returnResultVo(200,readResult,"结果"); + } } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java index 47edb55f..2db3d4d9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java @@ -45,12 +45,16 @@ public class MaterialServiceImpl implements MaterialService { */ @Override public Integer insertMaterial(Map map) { - int quantity = (int) Math.round(Double.parseDouble(map.get("quantity").toString())); - int price = (int) (Double.parseDouble( map.get("price").toString()) * 100); - map.put("price",price); - map.put("amounts",quantity * price); + if(map.containsKey("quantity") && map.containsKey("price")) { + int quantity = (int) Math.round(Double.parseDouble(map.get("quantity").toString())); + int price = (int) (Double.parseDouble(map.get("price").toString()) * 100); + map.put("price",price); + map.put("amounts",quantity * price); + } return materialMapper.insertMaterial(map); } + + /** * 增加一条库存记录 * @@ -73,11 +77,15 @@ public class MaterialServiceImpl implements MaterialService { if(map.containsKey("price")){ Double price = Double.parseDouble((String) map.get("price")) * 100; Integer quantity = Integer.parseInt((String) map.get("quantity")); - map.put("amounts",price * quantity); + if(!map.containsKey("amounts")) { + map.put("amounts", price * quantity); + } map.put("price",price); } - Object materialTypeId = map.get("materialTypeId"); - map.put("typeId",materialTypeId); + if(map.containsKey("materialTypeId")) { + Object materialTypeId = map.get("materialTypeId"); + map.put("typeId", materialTypeId); + } return materialMapper.updateMaterial(map); } @@ -111,14 +119,29 @@ public class MaterialServiceImpl implements MaterialService { for (int i = 0; i < list.size(); i++) { list.get(i).setPrice(list.get(i).getPrice() / 100); list.get(i).setAmounts(list.get(i).getAmounts() / 100); - // 获取当前材料所处仓库 - Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(list.get(i).getDepositoryId()); - String code = depositoryRecordById.getCode() + "-" +list.get(i).getDepositoryCode(); - list.get(i).setDepositoryCode(code); + // 获取当前物料所处仓库 + Integer depositoryId = list.get(i).getDepositoryId(); + if(depositoryId != null){ + Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(depositoryId); + String code = depositoryRecordById.getCode() + "-" +list.get(i).getDepositoryCode(); + list.get(i).setDepositoryCode(code); + } } return pack(list); } + /** + * 根据编码获取对应物料 + * @return + */ + @Override + public Material findMaterialByCode(Long code) { + Map map = new HashMap<>(); + map.put("code",code); + Material material = materialMapper.findMaterialByCondition(map).get(0); + return material; + } + /** * 查询所有的库存信息 * @return 所有的库存信息 @@ -192,7 +215,7 @@ public class MaterialServiceImpl implements MaterialService { } /** - * 根据主键Id将材料状态改为删除 + * 根据主键Id将物料状态改为删除 * @param id * @return 受影响条数 */ @@ -202,7 +225,7 @@ public class MaterialServiceImpl implements MaterialService { } /** - * 根据主键id批量将材料状态改为删除 + * 根据主键id批量将物料状态改为删除 * @param ids * @return 受影响条数 */ @@ -247,9 +270,12 @@ public class MaterialServiceImpl implements MaterialService { List result=new ArrayList<>(list.size()); for (Material material: list){ MaterialP m=new MaterialP(material); - m.setDepositoryName(depositoryMapper.findDepositoryNameById(material.getDepositoryId())); + Integer depositoryId = material.getDepositoryId(); + if(depositoryId != null){ + m.setDepositoryName(depositoryMapper.findDepositoryNameById(depositoryId)); + m.setWarehouseManager(depositoryMapper.findUserNameByDepositoryId(depositoryId)); + } m.setTypeName(materialTypeMapper.findMaterialTypeNameById(material.getTypeId())); - m.setWarehouseManager(depositoryMapper.findUserNameByDepositoryId(material.getDepositoryId())); result.add(m); } return result; @@ -294,7 +320,13 @@ public class MaterialServiceImpl implements MaterialService { for (int i = 0; i < materialTypeNoParent.size(); i++) { MaterialType mt = materialTypeNoParent.get(i); List childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId(),mname,adminorg); - Map stringObjectMap = InitTreeMenus(mt,childForMaterialTypeByParent); + Map stringObjectMap = new HashMap<>(); + if(childForMaterialTypeByParent != null) { + stringObjectMap = InitTreeMenus(mt, childForMaterialTypeByParent); + }else{ + List materialByType = AddMaterialByType(mt,mname,""); + stringObjectMap = InitTreeMenus(mt, materialByType); + } list.add(stringObjectMap); } return list; @@ -310,7 +342,13 @@ public class MaterialServiceImpl implements MaterialService { for (int i = 0; i < materialTypeNoParent.size(); i++) { MaterialType mt = materialTypeNoParent.get(i); List childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId(),mname,""); - Map stringObjectMap = InitTreeMenus(mt,childForMaterialTypeByParent); + Map stringObjectMap = new HashMap<>(); + if(childForMaterialTypeByParent != null) { + stringObjectMap = InitTreeMenus(mt, childForMaterialTypeByParent); + }else{ + List materialByType = AddMaterialByType(mt,mname,""); + stringObjectMap = InitTreeMenus(mt, materialByType); + } list.add(stringObjectMap); } return list; @@ -330,7 +368,7 @@ public class MaterialServiceImpl implements MaterialService { } } - // 在类别后添加材料名称 + // 在类别后添加物料名称 public List AddMaterialByType(MaterialType mt,String mname,String adminorg){ if(mt != null) { Map param = new HashMap<>(); @@ -341,7 +379,12 @@ public class MaterialServiceImpl implements MaterialService { dids.add(depository.getId()); } List materialPByCondition = new ArrayList<>(); - List materialByDepositorys = materialMapper.findMaterialByDepositorys(dids); + List materialByDepositorys = new ArrayList<>(); + if("".equals(adminorg)){ + materialByDepositorys = materialMapper.findMaterialByCondition(new HashMap()); + }else{ + materialByDepositorys = materialMapper.findMaterialByDepositorys(dids); + } for (int i = 0; i < materialByDepositorys.size(); i++) { if (Integer.compare(materialByDepositorys.get(i).getTypeId(), mt.getId()) == 0){ materialPByCondition.add(materialByDepositorys.get(i)); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java index 35afe6b5..0c6f3987 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java @@ -20,7 +20,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService { MaterialTypeMapper materialTypeMapper; /** - * 插入一条材料类型记录 + * 插入一条物料类型记录 * @param map 参数map * @return 受影响的数量 */ @@ -46,7 +46,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService { } /** - * 根据条件查询材料类型 + * 根据条件查询物料类型 * @param map * @return 符合条件的记录 */ @@ -56,7 +56,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService { } /** - * 查询所有材料类型 + * 查询所有物料类型 * @return 所有记录 */ @Override @@ -95,7 +95,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService { } /** - * 修改材料类型 + * 修改物料类型 * @param map * @return 受影响条数 */ @@ -111,7 +111,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService { } /** - * 根据主键id查询对应材料类型 + * 根据主键id查询对应物料类型 * @param id * @return 对应记录 */ @@ -121,7 +121,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService { } /** - * 根据主键id将材料类型状态修改为删除 + * 根据主键id将物料类型状态修改为删除 * @param id * @return 受影响条数 */ @@ -131,7 +131,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService { } /** - * 根据多个主键ids将材料类型状态修改为删除 + * 根据多个主键ids将物料类型状态修改为删除 * @param ids * @return 受影响条数 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java new file mode 100644 index 00000000..0107042e --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java @@ -0,0 +1,136 @@ +package com.dreamchaser.depository_manage.service.impl; + +import com.dreamchaser.depository_manage.entity.Place; +import com.dreamchaser.depository_manage.mapper.PlaceMapper; +import com.dreamchaser.depository_manage.service.PlaceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class PlaceServiceImpl implements PlaceService { + + @Autowired + PlaceMapper placeMapper; + + /** + * 查找所有库位 + * @return + */ + @Override + public List findPlaceAll() { + return placeMapper.findPlaceAll(); + } + /** + * 根据条件查找库位 + * @param map + * @return + */ + @Override + public List findPlaceByCondition(Map map) { + Map condition = new HashMap<>(); + if(map.containsKey("place_x")){ + condition.put("x",map.get("place_x")); + } + if(map.containsKey("place_y")){ + condition.put("y",map.get("place_y")); + } + if(map.containsKey("place_z")){ + condition.put("z",map.get("place_z")); + } + if(map.containsKey("code")){ + condition.put("code",map.get("code")); + } + if(map.containsKey("state")){ + condition.put("state",map.get("state")); + } + return placeMapper.findPlaceByCondition(condition); + } + /** + * 查找符合条件的库位数 + * @param map + * @return + */ + @Override + public Integer findPlaceCountByCondition(Map map) { + return placeMapper.findPlaceCountByCondition(map); + } + + /** + * 根据条件修改库位 + * @param map + * @return + */ + @Override + public Integer UpdatePlace(Map map) { + return placeMapper.UpdatePlace(map); + } + /** + * 根据条件修改库位 + * @param place + * @return + */ + @Override + public Integer UpdatePlace(Place place) { + return placeMapper.UpdatePlace(place); + } + /** + * 根据主键删除库位 + * @param pid + * @return + */ + @Override + public Integer DelPlace(Integer pid) { + return placeMapper.DelPlace(pid); + } + /** + * 插入一条库位信息 + * @param map + * @return + */ + @Override + public Integer InsertPlace(Map map) { + return placeMapper.InsertPlace(map); + } + /** + * 根据仓库编号查找库位 + * @param did + * @return + */ + @Override + public List findPlaceByDid(Integer did) { + return placeMapper.findPlaceByDid(did); + } + + /** + * 根据id查询库位 + * @return + */ + @Override + public Place findPlaceById(Integer id) { + return placeMapper.findPlaceById(id); + } + + /** + * 根据id将库位状态改为删除 + * @param id + * @return + */ + @Override + public Integer changeStateToDeletedById(Integer id) { + return placeMapper.changeStateToDeletedById(id); + } + + /** + * 根据批量id将库位状态改为删除 + * @param ids + * @return + */ + @Override + public Integer changeStateToDeletedByIds(List ids) { + return placeMapper.changeStateToDeletedByIds(ids); + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java index 431ee954..3ae32420 100644 --- a/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java +++ b/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java @@ -16,18 +16,20 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; +import java.util.Hashtable; /* ** 二维码生成 */ public class CreateQrCodeUtil { - public String createQrCode(String content, int width, int height) throws IOException { + public static String createQrCode(String content, int width, int height) throws IOException { String resultImage = ""; if (!StringUtils.isEmpty(content)) { ServletOutputStream stream = null; ByteArrayOutputStream os = new ByteArrayOutputStream(); @SuppressWarnings("rawtypes") - HashMap hints = new HashMap<>(); +// HashMap hints = new HashMap<>(); + Hashtable hints = new Hashtable(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 指定字符编码为“utf-8” hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); // 指定二维码的纠错等级为中级 hints.put(EncodeHintType.MARGIN, 2); // 设置图片的边距 diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/ExcelInValid.java b/src/main/java/com/dreamchaser/depository_manage/utils/ExcelInValid.java new file mode 100644 index 00000000..f079e9a7 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/utils/ExcelInValid.java @@ -0,0 +1,44 @@ +package com.dreamchaser.depository_manage.utils; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.exception.ExcelDataConvertException; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.read.metadata.holder.ReadSheetHolder; +import com.dreamchaser.depository_manage.converter.ExcelValid; +import com.dreamchaser.depository_manage.exception.MyException; + +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.util.Objects; + +public class ExcelInValid { + + /** + * Excel导入字段校验 + * + * @param object 校验的JavaBean 其属性须有自定义注解 + * @author linmaosheng + */ + public static void valid(Object object, AnalysisContext context) { + ReadSheetHolder readSheetHolder = context.readSheetHolder(); + Field[] fields = object.getClass().getDeclaredFields(); + ReadCellData> tempCellData = readSheetHolder.getTempCellData(); + for (Field field : fields) { + field.setAccessible(true); + //属性的值 + Object fieldValue = null; + try { + fieldValue = field.get(object); + } catch (IllegalAccessException e) { + throw new ExcelDataConvertException(context.readRowHolder().getRowIndex(), tempCellData.getColumnIndex() + 1,null,null,"必填字段为空"); + } + //是否包含必填校验注解 + boolean isExcelValid = field.isAnnotationPresent(ExcelValid.class); + if (isExcelValid && Objects.isNull(fieldValue)) { + throw new ExcelDataConvertException(context.readRowHolder().getRowIndex(), tempCellData.getColumnIndex() + 1,null,null,"必填字段为空"); + } + + } + } + +} \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index a5890e7f..5c9b68de 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -11,21 +11,6 @@ spring: max-file-size: 100MB # 单个文件上传的最大上限 max-request-size: 100MB # 一次请求总大小上限 - mail: - #邮箱配置 - #平台地址,这里用的是qq邮箱,使用其他邮箱请更换 - host: smtp.qq.com - #这里是你要发送邮箱的账户 - username: 1789131794@qq.com - #发送短信后它给你的授权码 - password: ###### - properties: - mail: - smtp: - ssl: - enable: true - ##编码格式 - default-encoding: utf-8 ##数据库设置 datasource: username: root @@ -74,10 +59,10 @@ spring: database: 0 jedis: pool: - max-active: 8 - max-wait: 50ms - max-idle: 8 - min-idle: 0 + min-idle: 10 + max-idle: 20 + max-wait: -1ms + max-active: 200 timeout: 2000ms diff --git a/src/main/resources/redisson-config.yml b/src/main/resources/redisson-config.yml new file mode 100644 index 00000000..8bae24c3 --- /dev/null +++ b/src/main/resources/redisson-config.yml @@ -0,0 +1,26 @@ +#Redisson配置 +singleServerConfig: + address: "redis://127.0.0.1:6379" + clientName: null + database: 7 #选择使用哪个数据库0~15 + idleConnectionTimeout: 10000 + pingTimeout: 1000 + connectTimeout: 10000 + timeout: 3000 + retryAttempts: 3 + retryInterval: 1500 + reconnectionTimeout: 3000 + failedAttempts: 3 + subscriptionsPerConnection: 5 + subscriptionConnectionMinimumIdleSize: 1 + subscriptionConnectionPoolSize: 50 + connectionMinimumIdleSize: 32 + connectionPoolSize: 64 + dnsMonitoringInterval: 5000 + #dnsMonitoring: false + +threads: 0 +nettyThreads: 0 +codec: + class: "org.redisson.codec.JsonJacksonCodec" +transportMode: "NIO" diff --git a/src/main/resources/static/api/init.json b/src/main/resources/static/api/init.json index 4bbf4895..8bb8c045 100644 --- a/src/main/resources/static/api/init.json +++ b/src/main/resources/static/api/init.json @@ -137,18 +137,18 @@ ] }, { - "title": "材料种类管理", + "title": "物料种类管理", "icon": "fa fa-wrench", "target": "_self", "child": [ { - "title": "材料种类添加", + "title": "物料种类添加", "href": "/materialType_add", "icon": "layui-icon layui-icon-list", "target": "_self" }, { - "title": "材料种类查询", + "title": "物料种类查询", "href": "/materialType_view", "icon": "fa fa-th-list", "target": "_self" @@ -156,18 +156,18 @@ ] }, { - "title": "材料管理", + "title": "物料管理", "icon": "fa fa-wrench", "target": "_self", "child": [ { - "title": "创建材料", + "title": "创建物料", "href": "/material_add", "icon": "layui-icon layui-icon-template-1", "target": "_self" }, { - "title": "材料查询", + "title": "物料查询", "href": "/material_out", "icon": "fa fa-th-list", "target": "_self" diff --git a/src/main/resources/static/api/init_checker.json b/src/main/resources/static/api/init_checker.json index b0254b37..876d1b98 100644 --- a/src/main/resources/static/api/init_checker.json +++ b/src/main/resources/static/api/init_checker.json @@ -137,18 +137,18 @@ ] }, { - "title": "材料种类管理", + "title": "物料种类管理", "icon": "fa fa-wrench", "target": "_self", "child": [ { - "title": "材料种类添加", + "title": "物料种类添加", "href": "/materialType_add", "icon": "layui-icon layui-icon-list", "target": "_self" }, { - "title": "材料种类查询", + "title": "物料种类查询", "href": "/materialType_view", "icon": "fa fa-th-list", "target": "_self" @@ -156,18 +156,18 @@ ] }, { - "title": "材料管理", + "title": "物料管理", "icon": "fa fa-wrench", "target": "_self", "child": [ { - "title": "创建材料", + "title": "创建物料", "href": "/material_add", "icon": "layui-icon layui-icon-template-1", "target": "_self" }, { - "title": "材料查询", + "title": "物料查询", "href": "/material_out", "icon": "fa fa-th-list", "target": "_self" diff --git a/src/main/resources/static/api/init_reviewer.json b/src/main/resources/static/api/init_reviewer.json index 71c3c4f2..4a6ebd1d 100644 --- a/src/main/resources/static/api/init_reviewer.json +++ b/src/main/resources/static/api/init_reviewer.json @@ -137,18 +137,18 @@ ] }, { - "title": "材料种类管理", + "title": "物料种类管理", "icon": "fa fa-wrench", "target": "_self", "child": [ { - "title": "材料种类添加", + "title": "物料种类添加", "href": "/materialType_add", "icon": "layui-icon layui-icon-list", "target": "_self" }, { - "title": "材料种类查询", + "title": "物料种类查询", "href": "/materialType_view", "icon": "fa fa-th-list", "target": "_self" @@ -156,18 +156,18 @@ ] }, { - "title": "材料管理", + "title": "物料管理", "icon": "fa fa-wrench", "target": "_self", "child": [ { - "title": "创建材料", + "title": "创建物料", "href": "/material_add", "icon": "layui-icon layui-icon-template-1", "target": "_self" }, { - "title": "材料查询", + "title": "物料查询", "href": "/material_out", "icon": "fa fa-th-list", "target": "_self" diff --git a/src/main/resources/static/api/test.json b/src/main/resources/static/api/test.json index d5401ac9..e1cd3d68 100644 --- a/src/main/resources/static/api/test.json +++ b/src/main/resources/static/api/test.json @@ -161,19 +161,19 @@ { "icon": "fa fa-mail-forward", "href": "", - "title": "材料种类管理", + "title": "物料种类管理", "target": "_self", "child": [ { "icon": "fa fa-th-list", "href": "/materialType_add", - "title": "材料种类添加", + "title": "物料种类添加", "target": "_self" }, { "icon": "layui-icon layui-icon-template-1", "href": "/materialType_view", - "title": "材料种类查询", + "title": "物料种类查询", "target": "_self" } ] @@ -181,19 +181,19 @@ { "icon": "fa fa-mail-forward", "href": "", - "title": "材料管理", + "title": "物料管理", "target": "_self", "child": [ { "icon": "layui-icon layui-icon-template-1", "href": "/material_add", - "title": "创建材料", + "title": "创建物料", "target": "_self" }, { "icon": "layui-icon layui-icon-template-1", "href": "/material_out", - "title": "材料查询", + "title": "物料查询", "target": "_self" } ] diff --git a/src/main/resources/static/images/sousuo.png b/src/main/resources/static/images/sousuo.png new file mode 100644 index 00000000..98a60c2f Binary files /dev/null and b/src/main/resources/static/images/sousuo.png differ diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index f7aba988..66587f60 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -157,9 +157,9 @@ miniAdmin.render(options); - /*$("#scan").on("click",function () { + $("#scan").on("click",function () { alert("扫一扫") - });*/ + }); // 百度统计代码,只统计指定域名 diff --git a/src/main/resources/templates/pages/application/application-in.html b/src/main/resources/templates/pages/application/application-in.html index 9f311727..88b46f9f 100644 --- a/src/main/resources/templates/pages/application/application-in.html +++ b/src/main/resources/templates/pages/application/application-in.html @@ -11,6 +11,22 @@ + + + @@ -20,31 +36,42 @@ - + - 材料名称: - - 物料名称: + + + + + + + style="display: none" lay-verify="required"/> + - - 材料编码: + 物料编码: - - 材料数量: + 物料单价: - + + + + 物料数量: + + @@ -70,8 +97,8 @@ - - + + 提交 @@ -112,7 +139,7 @@ function selectCode(obj){} // 用于点击搜索按钮 function selectMaterial(obj){} - // 用于材料名称查询 + // 用于物料名称查询 function selectMaterialByName(obj){} // 用于加载仓库菜单 function openDepositoryTree(obj){} @@ -171,7 +198,7 @@ complete: function () { layer.close(this.layerIndex); } - }) + }); return false; }); @@ -194,32 +221,41 @@ // 获取父元素id var parentId = obj.parentNode.id; NewIdNumber = NewIdNumber + 1; - // 材料名称栏目 + // 物料名称栏目 var materialItem = ` - + - 材料名称 - - + 物料名称 + + + + + - - 材料编码: + 物料编码: - - 材料数量: + 物料单价: + + + + + + 物料数量: - @@ -277,16 +313,16 @@ } - // 用于实现通过编码查询材料 + // 用于实现通过编码查询物料 selectCode = function(obj){ // 输入code var code = obj.value; // 获取对应元素 var parent = obj.parentNode.parentNode.parentNode; var children = parent.childNodes[5]; - var materialItem = children.childNodes[3].childNodes; + var materialItem = children.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; - var materialId = materialItem[3]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; $.ajax({ url: "/material/findMatrialByCode?code=" + code, type: "get", @@ -309,15 +345,15 @@ // 用于实现点击搜索按钮 selectMaterial = function (obj) { - var parent = obj.parentNode.parentNode; + var parent = obj.parentNode.parentNode.parentNode.parentNode; var parentId = parent.id; var codeChildren = parent.childNodes[7]; var materialChildren = parent.childNodes[5]; var codeItem = codeChildren.childNodes[3].childNodes; var codeValue = codeItem[1]; - var materialItem = materialChildren.childNodes[3].childNodes; + var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; - var materialId = materialItem[3]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; var mname = materialName.value; layer.open({ type: 2, @@ -325,8 +361,10 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], content: '/selectMaterialByCard?mname='+mname+'&type=1&clickObj='+parentId, + move : '.layui-layer-title', + fixed:false, end: function () { var mid = materialId.value; $.ajax({ @@ -336,6 +374,9 @@ contentType: "application/json;charset=utf-8", success: function (d) { var code = d.data.code; + if(code === undefined){ + code = ""; + } codeValue.value = code; } }); @@ -344,19 +385,19 @@ }); }; - //用于实现材料名称搜索 + //用于实现物料名称搜索 selectMaterialByName = function (obj) { // 输入code var data = obj.value; // 获取对应元素 - var parent = obj.parentNode.parentNode.parentNode; + var parent = obj.parentNode.parentNode.parentNode.parentNode; var materialChildren = parent.childNodes[5]; var codeChildren = parent.childNodes[7]; var codeItem = codeChildren.childNodes[3].childNodes; var codeValue = codeItem[1]; - var materialItem = materialChildren.childNodes[3].childNodes; + var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; - var materialId = materialItem[3]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; var req = {}; req.mname = data; $.ajax({ @@ -398,7 +439,9 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], + move : '.layui-layer-title', + fixed:false, content: '/selectDepositoryByCard?type=1&clickObj='+parentId, }); } diff --git a/src/main/resources/templates/pages/application/application-in_back.html b/src/main/resources/templates/pages/application/application-in_back.html index 5a479bb6..83f8b1d7 100644 --- a/src/main/resources/templates/pages/application/application-in_back.html +++ b/src/main/resources/templates/pages/application/application-in_back.html @@ -22,9 +22,9 @@ - 材料名称: + 物料名称: - - 材料编码: + 物料编码: - - 材料数量: + 物料单价: - + + + + 物料数量: + + @@ -64,8 +71,8 @@ - - + + 提交 @@ -170,7 +177,9 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], + move : '.layui-layer-title', + fixed:false, content: '/selectDepository?type=1', }); }); @@ -184,7 +193,9 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], + move : '.layui-layer-title', + fixed:false, content: '/selectMaterial?mname='+mname+'&type=1', end: function () { var mid = $("#mid").val(); @@ -194,7 +205,10 @@ dataType: 'json', contentType: "application/json;charset=utf-8", success: function (d) { - var code = d.data.code + var code = d.data.code; + if(code === undefined){ + code = ""; + } $("#code").val(code) } diff --git a/src/main/resources/templates/pages/application/application-out.html b/src/main/resources/templates/pages/application/application-out.html index 739e2fdf..5d856ac2 100644 --- a/src/main/resources/templates/pages/application/application-out.html +++ b/src/main/resources/templates/pages/application/application-out.html @@ -11,6 +11,19 @@ + @@ -24,27 +37,29 @@ - 材料名称: - - + 物料名称: + + + + + - - 材料编码: + 物料编码: - - 材料数量: + 物料数量: - @@ -61,7 +76,7 @@ - + 提交申请 @@ -106,7 +121,7 @@ function selectCode(obj){} // 用于点击搜索按钮 function selectMaterial(obj){} - // 用于材料名称查询 + // 用于物料名称查询 function selectMaterialByName(obj){} // 用于暂存卡片个数 var params = []; @@ -127,9 +142,7 @@ stepItems: [{ title: '填写信息' }, { - title: '审核中' - }, { - title: '等待出库' + title: '提交成功' }] }); @@ -185,32 +198,34 @@ // 获取父元素id var parentId = obj.parentNode.id; NewIdNumber = NewIdNumber + 1; - // 材料名称栏目 + // 物料名称栏目 var materialItem = ` - 材料名称 - - 物料名称 + + + + + - - 材料编码: + 物料编码: - - 材料数量: + 物料数量: - @@ -256,16 +271,16 @@ return result; } - // 用于实现通过编码查询材料 + // 用于实现通过编码查询物料 selectCode = function(obj){ // 输入code var code = obj.value; // 获取对应元素 var parent = obj.parentNode.parentNode.parentNode; var children = parent.childNodes[5]; - var materialItem = children.childNodes[3].childNodes; + var materialItem = children.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; - var materialId = materialItem[3]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; $.ajax({ url: "/material/findMatrialByCode?code=" + code, type: "get", @@ -288,15 +303,15 @@ // 用于实现点击搜索按钮 selectMaterial = function (obj) { - var parent = obj.parentNode.parentNode; + var parent = obj.parentNode.parentNode.parentNode.parentNode; var parentId = parent.id; var codeChildren = parent.childNodes[7]; var materialChildren = parent.childNodes[5]; var codeItem = codeChildren.childNodes[3].childNodes; var codeValue = codeItem[1]; - var materialItem = materialChildren.childNodes[3].childNodes; + var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; - var materialId = materialItem[3]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; var mname = materialName.value; layer.open({ type: 2, @@ -304,8 +319,10 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], - content: '/selectMaterialByCard?mname='+mname+'&type=1&clickObj='+parentId, + area: ['70%', '70%'], + content: '/selectMaterialByCard?mname='+mname+'&type=2&clickObj='+parentId, + move : '.layui-layer-title', + fixed:false, end: function () { var mid = materialId.value; $.ajax({ @@ -315,6 +332,9 @@ contentType: "application/json;charset=utf-8", success: function (d) { var code = d.data.code; + if(code === undefined){ + code = ""; + } codeValue.value = code; } }); @@ -323,19 +343,19 @@ }); }; - //用于实现材料名称搜索 + //用于实现物料名称搜索 selectMaterialByName = function (obj) { // 输入code var data = obj.value; // 获取对应元素 - var parent = obj.parentNode.parentNode.parentNode; + var parent = obj.parentNode.parentNode.parentNode.parentNode; var materialChildren = parent.childNodes[5]; var codeChildren = parent.childNodes[7]; var codeItem = codeChildren.childNodes[3].childNodes; var codeValue = codeItem[1]; - var materialItem = materialChildren.childNodes[3].childNodes; + var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; - var materialId = materialItem[3]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; var req = {}; req.mname = data; $.ajax({ @@ -368,6 +388,8 @@ }; + + }) diff --git a/src/main/resources/templates/pages/application/application-out_back.html b/src/main/resources/templates/pages/application/application-out_back.html index 8706b7ea..1ef9201a 100644 --- a/src/main/resources/templates/pages/application/application-out_back.html +++ b/src/main/resources/templates/pages/application/application-out_back.html @@ -21,9 +21,9 @@ - 材料名称: + 物料名称: - - 材料编码: + 物料编码: - - 材料数量: + 物料数量: - + @@ -154,7 +154,9 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], + move : '.layui-layer-title', + fixed:false, content: '/selectDepository?type=2', }); }); @@ -168,7 +170,9 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], + move : '.layui-layer-title', + fixed:false, content: '/selectMaterial?mname='+mname+'&type=2', end: function () { var mid = $("#mid").val(); @@ -178,7 +182,10 @@ dataType: 'json', contentType: "application/json;charset=utf-8", success: function (d) { - var code = d.data.code + var code = d.data.code; + if(code === undefined){ + code = ""; + } $("#code").val(code) } diff --git a/src/main/resources/templates/pages/application/application-review.html b/src/main/resources/templates/pages/application/application-review.html index 9681f867..3efaf17c 100644 --- a/src/main/resources/templates/pages/application/application-review.html +++ b/src/main/resources/templates/pages/application/application-review.html @@ -32,7 +32,7 @@ 123456 - 材料名称 + 物料名称 骁龙888芯片 diff --git a/src/main/resources/templates/pages/application/application-transfer.html b/src/main/resources/templates/pages/application/application-transfer.html index 10267d00..56f7e973 100644 --- a/src/main/resources/templates/pages/application/application-transfer.html +++ b/src/main/resources/templates/pages/application/application-transfer.html @@ -11,6 +11,20 @@ + @@ -25,27 +39,30 @@ - 材料名称: - - 物料名称: + + + + + - + - 材料编码: + 物料编码: - - 材料数量: + 物料数量: - + @@ -67,7 +84,7 @@ - + 提交申请 @@ -92,20 +109,6 @@ - - - - - 入款成功 - - 预计两小时到账 - - - 再入一笔 - 查看账单 - - @@ -127,7 +130,7 @@ function selectCode(obj){} // 用于点击搜索按钮 function selectMaterial(obj){} - // 用于材料名称查询 + // 用于物料名称查询 function selectMaterialByName(obj){} // 用于加载仓库菜单 function openDepositoryTree(obj){} @@ -149,11 +152,7 @@ stepItems: [{ title: '填写信息' }, { - title: '审核中' - }, { - title: '等待出库' - },{ - title: '等待入库' + title: '提交成功' }] }); @@ -211,37 +210,39 @@ // 获取父元素id var parentId = obj.parentNode.id; NewIdNumber = NewIdNumber + 1; - // 材料名称栏目 + // 物料名称栏目 var materialItem = ` - + - 材料名称 - - + 物料名称 + + + + + - - 材料编码: + 物料编码: - - 材料数量: + 物料数量: - - 转入仓库: + 仓库: - 材料名称: + 物料名称: - + - 请选择材料 + 请选择物料 天玑1000 - 材料数量: + 物料数量: - + diff --git a/src/main/resources/templates/pages/application/application_in_multi.html b/src/main/resources/templates/pages/application/application_in_multi.html index d181256b..fe64fe79 100644 --- a/src/main/resources/templates/pages/application/application_in_multi.html +++ b/src/main/resources/templates/pages/application/application_in_multi.html @@ -100,7 +100,9 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], + move : '.layui-layer-title', + fixed:false, content: '/selectDepository?type=1', }); }); @@ -114,7 +116,9 @@ skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 - area: ['800px', '500px'], + area: ['70%', '70%'], + move : '.layui-layer-title', + fixed:false, content: '/selectMaterial?mname='+mname+'&type=1', end: function () { var mid = $("#mid").val(); @@ -124,7 +128,10 @@ dataType: 'json', contentType: "application/json;charset=utf-8", success: function (d) { - var code = d.data.code + var code = d.data.code; + if(code === undefined){ + code = ""; + } $("#code").val(code) } diff --git a/src/main/resources/templates/pages/application/application_multi.html b/src/main/resources/templates/pages/application/application_multi.html index abde3f39..397f1135 100644 --- a/src/main/resources/templates/pages/application/application_multi.html +++ b/src/main/resources/templates/pages/application/application_multi.html @@ -64,11 +64,12 @@ cols: [ [ {type: "checkbox", width: 50}, - {field: 'mname', width: '10%', title: '材料名称'}, + {field: 'mname', width: '10%', title: '物料名称'}, {field: 'version', width: '10%', title: '规格型号'}, {field: 'code',width: 200,title: '存货编码',sort: true}, {field: 'depositoryName', width: '12%', title: '仓库名称'}, {field: 'quantity', width: '10%', title: '数量',edit:'quantity'}, + {field: 'price', width: '10%', title: '单价',edit:'price'}, {field: 'depositoryId', width: '10%', title: '仓库编号',edit:'quantity'}, {field: 'applyRemark', width: '10%', title: '备注说明',edit:'applyRemark'}, {title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"} @@ -105,11 +106,13 @@ req.depositoryIds = []; req.quantitys = []; req.applyRemarks = []; + req.prices = []; for (i = 0, len = data.length; i < len; i++) { req.mids[i] = data[i].mid; req.depositoryIds[i] = data[i].depositoryId; req.quantitys[i] = data[i].quantity; req.applyRemarks[i] = data[i].applyRemark; + req.prices[i] = data[i].price; } if(obj.event==='delete'){ if(req.mids > 0) { diff --git a/src/main/resources/templates/pages/application/form-step-look.html b/src/main/resources/templates/pages/application/form-step-look.html index 862a9f30..98736548 100644 --- a/src/main/resources/templates/pages/application/form-step-look.html +++ b/src/main/resources/templates/pages/application/form-step-look.html @@ -31,7 +31,7 @@ 123456 - 材料名称 + 物料名称 骁龙888芯片 diff --git a/src/main/resources/templates/pages/application/form-step-look_back.html b/src/main/resources/templates/pages/application/form-step-look_back.html index 902e071d..1a10557e 100644 --- a/src/main/resources/templates/pages/application/form-step-look_back.html +++ b/src/main/resources/templates/pages/application/form-step-look_back.html @@ -31,7 +31,7 @@ 123456 - 材料名称 + 物料名称 骁龙888芯片 @@ -118,13 +118,22 @@ var state=$("#state").text(); //当前处于的状态 - var position=0,states={}; - if (state === "待部门负责人审核" || state === "部门负责人审核未通过") { + var position=0,states={},number = 1; + /*if (state === "待部门负责人审核" || state === "部门负责人审核未通过") { position = 1; states = [{title: "提交申请"}, {title: state}, {title: "未入库"}]; } else { position = 2; states = [{title: "提交申请"}, {title: "审核通过"}, {title: state}]; + }*/ + if (state === "待部门负责人审核" || state === "部门负责人审核未通过") { + // , {title: "未入库"} + states = [ {title: state}]; + number = 2; + } else { + // {title: "提交申请"}, + states = [ {title: state}]; + number = 3; } step.render({ elem: '#stepForm', @@ -132,6 +141,7 @@ width: '100%', //设置容器宽度 stepWidth: '750px', height: '650px', + number:number, position: position, stepItems: states }); diff --git a/src/main/resources/templates/pages/chart/chart-in.html b/src/main/resources/templates/pages/chart/chart-in.html index 95f1f8ec..79bdef55 100644 --- a/src/main/resources/templates/pages/chart/chart-in.html +++ b/src/main/resources/templates/pages/chart/chart-in.html @@ -37,7 +37,7 @@ - 转入材料数量 + 转入物料数量 @@ -55,7 +55,7 @@ - 转入材料金额 + 转入物料金额 @@ -73,7 +73,7 @@ - 购入材料数量 + 购入物料数量 @@ -91,7 +91,7 @@ - 入库材料金额 + 入库物料金额 diff --git a/src/main/resources/templates/pages/chart/chart-in_back.html b/src/main/resources/templates/pages/chart/chart-in_back.html index 47f6eba6..a7540d46 100644 --- a/src/main/resources/templates/pages/chart/chart-in_back.html +++ b/src/main/resources/templates/pages/chart/chart-in_back.html @@ -37,7 +37,7 @@ - 转入材料数量 + 转入物料数量 @@ -55,7 +55,7 @@ - 转入材料金额 + 转入物料金额 @@ -73,7 +73,7 @@ - 购入材料数量 + 购入物料数量 @@ -91,7 +91,7 @@ - 入库材料金额 + 入库物料金额 diff --git a/src/main/resources/templates/pages/chart/chart-out.html b/src/main/resources/templates/pages/chart/chart-out.html index 3d8f981d..77500945 100644 --- a/src/main/resources/templates/pages/chart/chart-out.html +++ b/src/main/resources/templates/pages/chart/chart-out.html @@ -37,7 +37,7 @@ - 转出材料数量 + 转出物料数量 @@ -55,7 +55,7 @@ - 转出材料金额 + 转出物料金额 @@ -73,7 +73,7 @@ - 购出材料数量 + 购出物料数量 @@ -91,7 +91,7 @@ - 出库材料金额 + 出库物料金额 diff --git a/src/main/resources/templates/pages/chart/chart-out_back.html b/src/main/resources/templates/pages/chart/chart-out_back.html index d273bf37..283d29c5 100644 --- a/src/main/resources/templates/pages/chart/chart-out_back.html +++ b/src/main/resources/templates/pages/chart/chart-out_back.html @@ -37,7 +37,7 @@ - 转出材料数量 + 转出物料数量 @@ -55,7 +55,7 @@ - 转出材料金额 + 转出物料金额 @@ -73,7 +73,7 @@ -