Browse Source

功能基本完成

lwx_dev
erdanergou 3 years ago
parent
commit
d0ec8e18a4
  1. 15
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  2. 244
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  3. 8
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java
  4. 26
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  5. 13
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java
  6. 18
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  7. 4
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml
  8. 2
      src/main/java/com/dreamchaser/depository_manage/mapper/TransferRecordMapper.xml
  9. 4
      src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java
  10. 4
      src/main/java/com/dreamchaser/depository_manage/pojo/SimpleApplicationOutMinRecordP.java
  11. 20
      src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java
  12. 7
      src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java
  13. 28
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  14. 2
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  15. 101
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  16. 10
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java
  17. 10
      src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java
  18. 5
      src/main/java/com/dreamchaser/depository_manage/utils/TaskCenterUtil.java
  19. 4
      src/main/resources/templates/pages/application/application-out.html
  20. 13
      src/main/resources/templates/pages/application/application-out_min.html
  21. 13
      src/main/resources/templates/pages/application/application-transfer.html
  22. 7
      src/main/resources/templates/pages/application/form-step-look_back.html
  23. 52
      src/main/resources/templates/pages/material/material-out.html
  24. 2
      src/main/resources/templates/pages/material/selectDepositoryByCard.html
  25. 5
      src/main/resources/templates/pages/materialtype/materialType_view.html
  26. 2
      src/main/resources/templates/pages/scanQrCode/ScanQrCode.html
  27. 8
      src/main/resources/templates/pages/scanQrCode/scanQrCodeOut.html
  28. 18
      target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  29. 4
      target/classes/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml
  30. 2
      target/classes/com/dreamchaser/depository_manage/mapper/TransferRecordMapper.xml
  31. 4
      target/classes/templates/pages/application/application-out.html
  32. 13
      target/classes/templates/pages/application/application-out_min.html
  33. 13
      target/classes/templates/pages/application/application-transfer.html
  34. 7
      target/classes/templates/pages/application/form-step-look_back.html
  35. 52
      target/classes/templates/pages/material/material-out.html
  36. 2
      target/classes/templates/pages/material/selectDepositoryByCard.html
  37. 5
      target/classes/templates/pages/materialtype/materialType_view.html
  38. 2
      target/classes/templates/pages/scanQrCode/ScanQrCode.html
  39. 8
      target/classes/templates/pages/scanQrCode/scanQrCodeOut.html

15
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java

@ -175,6 +175,7 @@ public class DepositoryRecordController {
}
// 入库申请
@PostMapping("/applicationIn")
public RestResponse insertApplicationInRecord(@RequestBody Map<String,Object> map, HttpServletRequest request){
@ -373,6 +374,7 @@ public class DepositoryRecordController {
if(Integer.compare(applicationOutMinById.getDepositoryId(),depositoryId) == 0){
// 获取子订单对应主订单
ApplicationOutRecordP applicationOutRecordPById = depositoryRecordService.findApplicationOutRecordPById(applicationOutMinById.getParentId());
// 获取申请人
UserByPort userByPort = PageController.FindUserById(applicationOutRecordPById.getApplicantId());
// 创建展示对象
@ -381,6 +383,15 @@ public class DepositoryRecordController {
Material materialById = materialService.findMaterialById(applicationOutMinById.getMid());
// 获取当前出库库位
Place placeByDid = placeService.findPlaceById(applicationOutMinById.getPlaceId());
// 获取当前子订单处理人编号
Integer checkId = applicationOutMinById.getCheckId();
if(checkId != null){
// 如果该订单已经处理
// 获取处理人
UserByPort checker = PageController.FindUserById(checkId);
simpleApplicationOutMinRecordP.setCheckerName(checker.getName());
}
simpleApplicationOutMinRecordP.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationOutRecordPById.getApplicantTime())));
simpleApplicationOutMinRecordP.setApplyRemark(applicationOutRecordPById.getApplyRemark());
simpleApplicationOutMinRecordP.setDepositoryId(depositoryRecordById.getId());
@ -638,7 +649,7 @@ public class DepositoryRecordController {
String type = (String) map.get("type");
Integer success = 0;
if("in".equals(type)){
success += depositoryRecordService.applicationIn(map);
success += depositoryRecordService.applicationInPlace(map);
}else if("out".equals(type)){
// 获取部门负责人
// UserByPort departmentHeadByUser = findDepartmentHeadByUser(userToken);
@ -720,7 +731,7 @@ public class DepositoryRecordController {
inRecord.put("quantity",quantity);
inRecord.put("price",price);
inRecord.put("applyRemark",applyRemark);
success += depositoryRecordService.applicationIn(inRecord);
success += depositoryRecordService.applicationInPlace(inRecord);
}
}else if("out".equals(type)){
Map<String,Object> mainRecord = new HashMap<>();

244
src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java

@ -41,109 +41,155 @@ public class MaterialController {
PlaceService placeService;
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
private RedisTemplate<Object, Object> redisTemplate;
/**
* 根据物料进行查询
* @param map
*
* @param map
* @return
*/
@GetMapping("/material")
public RestResponse findMaterial(@RequestParam Map<String,Object> map){
public RestResponse findMaterial(@RequestParam Map<String, Object> map) {
List<MaterialP> materialPByCondition = materialService.findMaterialPByCondition(map);
return new RestResponse(materialPByCondition,materialService.findCountByCondition(map),200);
return new RestResponse(materialPByCondition, materialService.findCountByCondition(map), 200);
}
/**
* 查询库存
*
* @param map
* @param request
* @return
*/
@GetMapping("/findInventory")
public RestResponse findInventory(@RequestParam Map<String,Object> map,HttpServletRequest request){
UserByPort userToken= (UserByPort) request.getAttribute("userToken");
public RestResponse findInventory(@RequestParam Map<String, Object> map, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
// 查询当前用户管理的仓库
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId());
// 查询当前用户部门拥有的仓库
List<Depository> depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString());
// 定义仓库编号列表
List<Integer> didList = new ArrayList<>();
List<MaterialP> list = new ArrayList<>();
Integer total = 0;
for (int i = 0; i < depositoryByAdminorg.size(); i++) {
map.put("depositoryId",depositoryByAdminorg.get(i).getId());
Integer size = 10,page = 1; // 定义每页展示数量
if(!(map.containsKey("depositoryId")||map.containsKey("code")||map.containsKey("mname"))){
for (int i = 0; i < depositoryByAdminorg.size(); i++) {
Integer did = depositoryByAdminorg.get(i).getId();
didList.add(did);
map.put("depositoryId", did);
List<MaterialP> inventory = materialService.findInventory(map);
list.addAll(inventory);
total += materialService.findInventoryCount(map);
}
if (map.containsKey("size")) {
size = ObjectFormatUtil.toInteger(map.get("size"));
}
for (RoleAndDepository roleAndDepository : depositoryAndRole) {
Integer depositoryId = roleAndDepository.getDepositoryId();
if(didList.contains(depositoryId)){
// 如果当前仓库编号存在
continue; // 跳过本次循环
}
map.put("depositoryId", depositoryId);
if(list.size() < size){
// 如果当前数目不足
if (map.containsKey("page")){
// 当前页
page=ObjectFormatUtil.toInteger(map.get("page"));
}
// 计算所有页数
Double pageAll = Math.ceil(total / size);
// 判断当前是在全新一页还是包含上述内容
if(size - list.size() != size){
// 如果当前不是崭新一页
map.put("begin",0);
}else{
map.put("begin",(page-1)*size-total);
}
map.put("size",size - list.size());
List<MaterialP> materialByDepository = materialService.findMaterialByDepository(map);
list.addAll(materialByDepository);
}
total += materialService.findMaterialByDepositoryCount(map);
}
}
else{
List<MaterialP> inventory = materialService.findInventory(map);
list.addAll(inventory);
total += materialService.findInventoryCount(map);
}
for (RoleAndDepository roleAndDepository : depositoryAndRole) {
List<MaterialP> materialByDepository = materialService.findMaterialByDepository(roleAndDepository.getDepositoryId());
list.addAll(materialByDepository);
total += list.size();
}
return new RestResponse(list,total,200);
return new RestResponse(list, total, 200);
}
/**
* 添加一条物料记录
*
* @param map
* @return
*/
@PostMapping("/material_add")
public RestResponse materialAdd(@RequestBody Map<String,Object> map){
public RestResponse materialAdd(@RequestBody Map<String, Object> map) {
return CrudUtil.postHandle(materialService.insertMaterial(map), 1);
}
/**
* 执行删除操作将状态改为删除
*
* @param map
* @return
*/
@PostMapping("/material_del")
public RestResponse deletematerial(@RequestBody Map<String,Object> map){
if (map.containsKey("id")){
Integer id= ObjectFormatUtil.toInteger(map.get("id"));
return CrudUtil.deleteHandle(materialService.changeStateToDeletedById(id),1);
}else if (map.containsKey("ids")){
List<Integer> ids=(List<Integer>) map.get("ids");
return CrudUtil.deleteHandle(materialService.changeStateToDeletedByIds(ids),ids.size());
}else {
public RestResponse deletematerial(@RequestBody Map<String, Object> map) {
if (map.containsKey("id")) {
Integer id = ObjectFormatUtil.toInteger(map.get("id"));
return CrudUtil.deleteHandle(materialService.changeStateToDeletedById(id), 1);
} else if (map.containsKey("ids")) {
List<Integer> ids = (List<Integer>) map.get("ids");
return CrudUtil.deleteHandle(materialService.changeStateToDeletedByIds(ids), ids.size());
} else {
throw new MyException("所需请求参数缺失!");
}
}
/**
* 修改物料信息
*
* @param map
* @return
*/
@PostMapping("/material_edit")
public RestResponse updateDepository(@RequestBody Map<String,Object> map){
if(map.containsKey("state")){
map.put("state",1);
}else{
map.put("state",2);
public RestResponse updateDepository(@RequestBody Map<String, Object> map) {
if (map.containsKey("state")) {
map.put("state", 1);
} else {
map.put("state", 2);
}
return CrudUtil.postHandle(materialService.updateMaterial(map),1);
return CrudUtil.postHandle(materialService.updateMaterial(map), 1);
}
@PostMapping("realDeleteMaterial")
public RestResponse RealDeleteMaterial(@RequestBody Map<String,Object> map){
if(map.containsKey("id")){
public RestResponse RealDeleteMaterial(@RequestBody Map<String, Object> map) {
if (map.containsKey("id")) {
Integer id = (Integer) map.get("id");
return CrudUtil.deleteHandle(materialService.deleteMaterialById(id),1);
}else{
return CrudUtil.deleteHandle(materialService.deleteMaterialById(id), 1);
} else {
throw new MyException("所需请求参数缺失!");
}
}
@PostMapping("/treeMenus")
public RestResponse InitTreeMenus(@RequestBody Map<String, Object> map, HttpServletRequest request){
public RestResponse InitTreeMenus(@RequestBody Map<String, Object> map, HttpServletRequest request) {
String mname = (String) map.get("mname");
String type = (String) map.get("type");
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
Integer maindeparment = userToken.getMaindeparment();
List<Object> list = new ArrayList<>();
if("1".equals(type)){
if ("1".equals(type)) {
list = materialService.InitTreeMenus(mname);
}else{
} else {
list = materialService.InitTreeMenus(mname, String.valueOf(maindeparment));
}
@ -153,14 +199,15 @@ public class MaterialController {
/**
* 根据id获取物料
*
* @param mid
* @return
*/
@GetMapping("/findMatrialById")
public RestResponse findMatrialById(@RequestParam(value = "mid",required = false) String mid,HttpServletRequest request){
UserByPort userToken= (UserByPort) request.getAttribute("userToken");
if("".equals(mid)){
return new RestResponse("",0,200);
public RestResponse findMatrialById(@RequestParam(value = "mid", required = false) String mid, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
if ("".equals(mid)) {
return new RestResponse("", 0, 200);
}
Material materialById = materialService.findMaterialById(ObjectFormatUtil.toInteger(mid));
List<PlaceP> placePList = new ArrayList<>();
@ -169,32 +216,33 @@ public class MaterialController {
List<PlaceP> placeByMidAndDid = placeService.findPlaceByMidAndDid(ObjectFormatUtil.toInteger(mid), depositoryByAdminorg.get(i).getId());
placePList.addAll(placeByMidAndDid);
}
Map<String,Object> map = new HashMap<>();
map.put("materialById",materialById);
map.put("placeList",placePList);
return new RestResponse(map,1,200);
Map<String, Object> map = new HashMap<>();
map.put("materialById", materialById);
map.put("placeList", placePList);
return new RestResponse(map, 1, 200);
}
/**
* 根据物料编码获取物料
*
* @param map
* @param request
* @return
*/
@GetMapping("/findMatrialByCode")
public RestResponse findMatrialByCode(@RequestParam Map<String,Object> map,HttpServletRequest request){
UserByPort userToken= (UserByPort) request.getAttribute("userToken");
public RestResponse findMatrialByCode(@RequestParam Map<String, Object> map, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
// 获取当前部门仓库
List<Depository> depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString());
Map<String,Object> param = new HashMap<>();
Map<String, Object> param = new HashMap<>();
String code = map.get("code").toString();
String type = map.get("type").toString();
if("".equals(code)){
return new RestResponse(null,1,200);
if ("".equals(code)) {
return new RestResponse(null, 1, 200);
}
param.put("code",code);
param.put("code", code);
List<MaterialP> materialPByCondition = new ArrayList<>();
if("out".equals(type)) {
if ("out".equals(type)) {
// 如果是出库
for (int i = 0; i < depositoryByAdminorg.size(); i++) {
param.put("depositoryId", depositoryByAdminorg.get(i).getId());
@ -204,20 +252,20 @@ public class MaterialController {
break;
}
}
}else{ // 如果是入库
} else { // 如果是入库
materialPByCondition = materialService.findMaterialPByCondition(param);
}
MaterialP mp = null;
if(materialPByCondition.size() > 0){
if (materialPByCondition.size() > 0) {
mp = materialPByCondition.get(0);
}
return new RestResponse(mp,1,200);
return new RestResponse(mp, 1, 200);
}
@PostMapping("/findMaterialByCondition")
public RestResponse findMaterialByCondition(@RequestBody Map<String, Object> map){
public RestResponse findMaterialByCondition(@RequestBody Map<String, Object> map) {
List<MaterialP> materialPByCondition = materialService.findMaterialPByCondition(map);
return new RestResponse(materialPByCondition,materialService.findCountByCondition(map),200);
return new RestResponse(materialPByCondition, materialService.findCountByCondition(map), 200);
}
@ -226,82 +274,92 @@ public class MaterialController {
public RestResponse createQrCode(@RequestParam("mid") Integer mid) {
Material materialById = materialService.findMaterialById(mid);
// 二维码保存信息
Map<String,Object> code = new HashMap<>();
code.put("mname",materialById.getMname());
code.put("mcode",materialById.getCode());
code.put("verison",materialById.getVersion());
code.put("quantity",materialById.getQuantity());
Map<String, Object> 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("失败","请联系开发人员"));
return new RestResponse("err: " + e.getMessage(), 678, new StatusInfo("失败", "请联系开发人员"));
}
}
// 将数据暂存到redis中
// 将扫描结果数据暂存到redis中
@PostMapping("/temporaryValue")
public RestResponse temporaryValue(@RequestBody Map<String,Object> map,HttpServletRequest request){
public RestResponse temporaryValue(@RequestBody Map<String, Object> map, HttpServletRequest request) {
UserByPort userByPort = (UserByPort) request.getAttribute("userToken");
ArrayList arrayList = (ArrayList) map.get("materialList");
ArrayList materailList = new ArrayList();
for (int i = 0; i < arrayList.size(); i++) {
if(materailList.indexOf(arrayList.get(i)) == -1){
if (materailList.indexOf(arrayList.get(i)) == -1) {
materailList.add(arrayList.get(i));
}
}
map.put("materialList",materailList);
redisTemplate.opsForValue().set("scanQrCodeValue"+userByPort.getNumber(),JSONObject.toJSONString(map));
map.put("materialList", materailList);
redisTemplate.opsForValue().set("scanQrCodeValue" + userByPort.getNumber(), JSONObject.toJSONString(map));
return new RestResponse();
}
// 将入库物料数据暂存到redis中
@PostMapping("/temporaryValueForMaterial")
public RestResponse temporaryValueForMaterial(@RequestBody Map<String, Object> map, HttpServletRequest request) {
UserByPort userByPort = (UserByPort) request.getAttribute("userToken");
// 存入mids
redisTemplate.opsForValue().set("temporaryValueForMaterial" + userByPort.getNumber(), JSONObject.toJSONString(map));
return new RestResponse(200);
}
// 判断当前扫描的物料是否存在
@GetMapping("/IsMaterialExist")
public RestResponse IsMaterialExist(HttpServletRequest request){
public RestResponse IsMaterialExist(HttpServletRequest request) {
UserByPort userByPort = (UserByPort) request.getAttribute("userToken");
String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue"+userByPort.getNumber()).toString();
redisTemplate.delete("scanQrCodeValue"+userByPort.getNumber());
String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString();
redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber());
JSONObject jsonObject = JSONObject.parseObject(scanQrCodeValue);
JSONObject depository = (JSONObject) jsonObject.get("depository"); // 扫描的仓库
JSONObject place = (JSONObject) jsonObject.get("place"); // 扫描的库位
JSONArray materialList = (JSONArray) jsonObject.get("materialList"); // 扫描的物料集合
ArrayList<Object> newMaterialList = new ArrayList();
Map<String,Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>();
for (int i = 0; i < materialList.size(); i++) {
JSONObject obj = (JSONObject) materialList.get(i);;
map.put("code",obj.get("code"));
if(depository != null){
map.put("depositoryId",depository.get("did"));
JSONObject obj = (JSONObject) materialList.get(i);
;
map.put("code", obj.get("code"));
if (depository != null) {
map.put("depositoryId", depository.get("did"));
}
if(place != null){
map.put("depositoryId",place.get("depositoryId"));
if (place != null) {
map.put("depositoryId", place.get("depositoryId"));
}
List<MaterialP> inventory = materialService.findInventory(map);
if(inventory.size() > 0){
if (inventory.size() > 0) {
MaterialP materialP = inventory.get(0);
Map<String,Object> params = new HashMap<>();
Map<String, Object> params = new HashMap<>();
// 有该物料
// 重新缓存到redis中
params.put("mid",materialP.getId());
params.put("mname",materialP.getMname());
params.put("code",materialP.getCode());
params.put("version",materialP.getVersion());
params.put("mid", materialP.getId());
params.put("mname", materialP.getMname());
params.put("code", materialP.getCode());
params.put("version", materialP.getVersion());
newMaterialList.add(params);
}else{
} else {
// 没有该物料
continue;
}
}
map.put("depository",depository);
map.put("place",place);
map.put("materialList",newMaterialList);
redisTemplate.opsForValue().set("scanQrCodeValue"+userByPort.getNumber(),JSONObject.toJSONString(map));
map.put("depository", depository);
map.put("place", place);
map.put("materialList", newMaterialList);
redisTemplate.opsForValue().set("scanQrCodeValue" + userByPort.getNumber(), JSONObject.toJSONString(map));
return new RestResponse();
}
//用于判断当前出库数量是否合适
@PostMapping("/MaterialQuantityIsTrue")
public RestResponse MaterialQuantityIsTrue(@RequestBody Map<String,Object> map,HttpServletRequest request){
public RestResponse MaterialQuantityIsTrue(@RequestBody Map<String, Object> map, HttpServletRequest request) {
UserByPort userByPort = (UserByPort) request.getAttribute("userToken");
// 当前出库数量
Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity"));
@ -311,12 +369,12 @@ public class MaterialController {
// 获取当前用户所在部门关闭的仓库及公共仓库
List<Depository> depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString());
for (int i = 0; i < depositoryByAdminorg.size(); i++) {
map.put("depositoryId",depositoryByAdminorg.get(i).getId());
map.put("depositoryId", depositoryByAdminorg.get(i).getId());
List<MaterialP> inventory = materialService.findInventory(map);
if(inventory.size() > 0){ // 如果有库存
if (inventory.size() > 0) { // 如果有库存
for (int j = 0; j < inventory.size(); j++) {
MaterialP materialP = inventory.get(j);
if(quantity <= materialP.getQuantity()){ // 如果当前数量合适则跳出循环
if (quantity <= materialP.getQuantity()) { // 如果当前数量合适则跳出循环
flag = true;
break;
}

8
src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java

@ -50,13 +50,13 @@ public class MaterialTypeController {
/**
* 根据父级查询所有物料类型
* @param parentId
* @param param
* @return
*/
@GetMapping("/allMaterialTypeByParent")
public RestResponse findMaterialTypeByNoParent(@RequestParam(value = "parentId",required = false) String parentId){
Map<String,Object> param = new HashMap<>();
if (parentId == null) {
public RestResponse findMaterialTypeByNoParent(@RequestParam Map<String,Object> param){
String parentId = (String) param.get("parentId");
if ("".equals(parentId)) {
parentId = "0";
}
param.put("parentId",parentId);

26
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -1554,6 +1554,32 @@ public class PageController {
return mv;
}
@GetMapping("/applicationInByMaterial")
public ModelAndView applicationInByMaterial(HttpServletRequest request){
ModelAndView mv = new ModelAndView();
UserByPort userByPort = (UserByPort) request.getAttribute("userToken");
String scanQrCodeValue = redisTemplate.opsForValue().get("temporaryValueForMaterial"+userByPort.getNumber()).toString();
redisTemplate.delete("temporaryValueForMaterial"+userByPort.getNumber());
JSONObject jsonObject = JSONObject.parseObject(scanQrCodeValue);
JSONArray mids = (JSONArray) jsonObject.get("mids");
List<Object> materialList = new ArrayList<>();
for (int i = 0; i < mids.size(); i++) {
Map<String,Object> param = new HashMap<>();
Integer o = ObjectFormatUtil.toInteger(mids.get(i));
Material materialById = materialService.findMaterialById(o);
param.put("mid",materialById.getId());
param.put("mname",materialById.getMname());
param.put("code",materialById.getCode());
param.put("version",materialById.getVersion());
String context = JSONObject.toJSONString(param);
materialList.add(context);
}
mv.addObject("materialList",materialList);
mv.setViewName("pages/application/application-in_scanQrCode");
return mv;
}
// 获取扫描结果并跳转到出库
@GetMapping("/application_Out_scanQrCode")
public ModelAndView applicationOutScanQrCode(HttpServletRequest request){

13
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java

@ -143,11 +143,20 @@ public interface MaterialMapper {
*/
List<Material> findMaterialByDepositorys(List<Integer> ids);
/**
* 根据仓库查询物品
* @param depositoryId
* @param map
* @return
*/
List<Material> findMaterialByDepository(Map<String,Object> map);
/**
* 根据仓库查询物品数目
* @param map
* @return
*/
List<Material> findMaterialByDepository(Integer depositoryId);
Integer findMaterialByDepositoryCount(Map<String,Object> map);
}

18
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -90,7 +90,7 @@
<if test="typeId != null">
AND m.type_id = #{typeId}
</if>
and state != 3
and state != 3 and m.depository_id is null
</select>
@ -209,12 +209,26 @@
#{item}
</foreach>
</select>
<!-- 根据仓库查询物料-->
<select id="findMaterialByDepository" resultMap="materialMap" parameterType="int">
<select id="findMaterialByDepository" resultMap="materialMap" parameterType="map">
SELECT
<include refid="allColumns" />
from material m
where m.depository_id = #{depositoryId}
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据仓库查询物料总数-->
<select id="findMaterialByDepositoryCount" resultType="int" parameterType="map">
SELECT
COUNT(*)
from material m
where m.depository_id = #{depositoryId}
</select>

4
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml

@ -65,7 +65,11 @@
<if test="parentId != null">
and mt.parentId = #{parentId}
</if>
and mt.state != 3 and mt.state != 4
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据主键查询数据 -->

2
src/main/java/com/dreamchaser/depository_manage/mapper/TransferRecordMapper.xml

@ -73,7 +73,7 @@
FROM transfer_record tr WHERE tr.id = #{id}
</select>
<!-- 新增信息 -->
<insert id="addTransferRecord">
<insert id="addTransferRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id">
INSERT INTO transfer_record (
id, from_id, to_id,quantity,mid,applicantTime,applicantId,from_place_id,to_place_id
) VALUES (

4
src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java

@ -43,6 +43,10 @@ public class RestResponse implements Serializable {
public RestResponse() {
}
public RestResponse(int status){
this.status = status;
}
public RestResponse(Object data) {
this.data = data;
}

4
src/main/java/com/dreamchaser/depository_manage/pojo/SimpleApplicationOutMinRecordP.java

@ -66,6 +66,10 @@ public class SimpleApplicationOutMinRecordP {
* 子订单状态
*/
private String state;
/**
* 处理人姓名
*/
private String checkerName;
public SimpleApplicationOutMinRecordP(ApplicationOutRecordMin applicationOutRecordMin) {
this.id = applicationOutRecordMin.getId();

20
src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java

@ -159,8 +159,24 @@ public interface MaterialService {
/**
* 根据仓库查询物品
* @param depositoryId
* @param map
* @return
*/
List<MaterialP> findMaterialByDepository(Integer depositoryId);
List<MaterialP> findMaterialByDepository(Map<String,Object> map);
/**
* 根据仓库查询物品数目
* @param map
* @return
*/
Integer findMaterialByDepositoryCount(Map<String,Object> map);
/**
* 增加一条库存记录
*
* @param map 参数map
* @return 受影响的行数
*/
Integer insertMaterialForImport(Map<String, Object> map);
}

7
src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java

@ -117,4 +117,11 @@ public interface PlaceService {
* @return
*/
Integer findQuantityByMidAndPid(Integer mid,Integer pid);
/**
* 修改当前库位存放物料
* @param mp
* @return
*/
Integer updateMaterialAndPlace(MaterialAndPlace mp);
}

28
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -541,6 +541,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("quantity", record.getQuantity().toString());
map.put("applicantId", record.getApplicantId());
map.put("transferId", record.getTransferId());
map.put("recordId",record.getId()); // 出库订单编号
transferMaterial(map);
}
@ -579,20 +580,29 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
if ("".equals(toPlaceId) || "0".equals(toPlaceId)) {
map.put("toPlaceId", 0);
}
//清除主键
// depositoryRecordMapper.insertApplicationInRecord(map);
transferRecordMapper.addTransferRecord(map);
TransferRecord transferRecordByCondition = transferRecordMapper.findTransferRecordByCondition(map).get(0);
map.put("transferId", transferRecordByCondition.getId());
transferRecordMapper.addTransferRecord(map);// 插入转移记录
Integer transferId = ObjectFormatUtil.toInteger(map.get("id"));
//清除主键
map.remove("id");
map.put("transferId", transferId);
// 获取当前转移物料仓库
Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(material.getDepositoryId());
Administration company = PageController.getCompany(userByPort.getMaindeparment());
// 生成出库订单
map.put("code", createCode(depositoryRecordById.getDname(), "outOrderNumber", "out", company.getName()));
String placeId = (String) map.get("placeId");
if ("".equals(placeId)) {
String placeId = map.get("fromPlaceId").toString();
if ("".equals(placeId) || "0".equals(placeId)) {
map.put("placeId", 0);
}
//清除主键
return depositoryRecordMapper.insertApplicationOutRecord(map);
// 插入主表
depositoryRecordMapper.insertApplicationOutRecord(map);
Object id = map.get("id");
// 清除主键
map.remove("id");
map.put("parentId",id);
return depositoryRecordMapper.insertApplicationOutRecordMin(map);
}
/**
@ -712,8 +722,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("price", material.getPrice().toString());
map.put("depositoryId", transferRecor.getToId());
map.put("placeId", transferRecor.getToPlaceId());
map.put("mid",mid);
applicationInPlace(map);
map.put("mid", materiallist.get(0).getId());
} else {
// 如果不在该仓库,插入一条新记录
Map<String, Object> insert = new HashMap<>();

2
src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java

@ -312,7 +312,7 @@ public class ExcelServiceImpl implements ExcelService {
}
insert.put("depositoryId", depositoryId);
insert.put("depositoryCode", excelVos.get(i).getDepositoryCode());
materialService.insertMaterial(insert);
materialService.insertMaterialForImport(insert);
// 将该物料同时放入默认库位中
Map<String,Object> param = new HashMap<>();

101
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java

@ -377,19 +377,79 @@ public class MaterialServiceImpl implements MaterialService {
}
@Override
public List<MaterialP> findMaterialByDepository(Integer depositoryId) {
List<Material> materialByDepository = materialMapper.findMaterialByDepository(depositoryId);
public List<MaterialP> findMaterialByDepository(Map<String,Object> map) {
Integer size = 10,page=1;
if (map.containsKey("size")){
size= ObjectFormatUtil.toInteger(map.get("size"));
map.put("size", size);
}
List<Material> materialByDepository = materialMapper.findMaterialByDepository(map);
return pack(materialByDepository);
}
@Override
public Integer findMaterialByDepositoryCount(Map<String, Object> map) {
return materialMapper.findMaterialByDepositoryCount(map);
}
/**
* 增加一条库存记录
*
* @param map 参数map
* @return 受影响的行数
*/
@Override
public Integer insertMaterialForImport(Map<String, Object> map) {
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);
}
Map<String,Object> params = new HashMap<>();
params.put("code",map.get("code"));
params.put("depositoryId",map.get("depositoryId"));
List<Material> inventory = materialMapper.findInventory(params);
if(inventory.size() >= 1){
// 如果该物料存在
Material material = inventory.get(0);
Double price = (Double.parseDouble(map.get("price").toString())) / 100;
int quantity = (int) Math.round(Double.parseDouble(map.get("quantity").toString()));
// 获取当前入库金额
Double amounts = (quantity * price * 100);
// 获取平均价格
Double avgPrice = (material.getAmounts() + amounts) / (material.getQuantity() + quantity);
material.setPrice(avgPrice);
material.setAmounts(material.getAmounts() + amounts);
material.setQuantity(material.getQuantity() + quantity);
// 获取当前物料在当前仓库的库位
MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(0, material.getId());
// 修改当前库位数目
placeAndMaterialByMidAndPid.setQuantity(placeAndMaterialByMidAndPid.getQuantity() + quantity);
placeService.updateMaterialAndPlace(placeAndMaterialByMidAndPid);
// 修改库位存放数量
Place placeById = placeService.findPlaceById(0);
placeById.setQuantity(placeById.getQuantity() + quantity);
placeService.UpdatePlace(placeById);
return materialMapper.updateMaterial(material);
}else {
return materialMapper.insertMaterial(map);
}
}
/**
* 构造树形选择框
* @return
*/
public List<Object> InitTreeMenus(String mname,String adminorg) {
// 获取所有顶级类别
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
List<Object> list = new ArrayList<>();
for (int i = 0; i < materialTypeNoParent.size(); i++) {
// 获取当前顶级类别
MaterialType mt = materialTypeNoParent.get(i);
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId(),mname,adminorg);
Map<String, Object> stringObjectMap = new HashMap<>();
@ -445,9 +505,11 @@ public class MaterialServiceImpl implements MaterialService {
if(mt != null) {
Map<String, Object> param = new HashMap<>();
param.put("materialTypeId", mt.getId());
// 获取当前部门管理的仓库
List<Depository> depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(adminorg);
List<Integer> dids = new ArrayList<>();
for (Depository depository : depositoryByAdminorg) {
// 将仓库编号存储到列表中
dids.add(depository.getId());
}
List<Material> materialPByCondition = new ArrayList<>();
@ -455,32 +517,42 @@ public class MaterialServiceImpl implements MaterialService {
if("".equals(adminorg)){
materialByDepositorys = materialMapper.findMaterialByCondition(new HashMap<String, Object>());
}else{
// 获取当前仓库下的所有物料库存
materialByDepositorys = materialMapper.findMaterialByDepositorys(dids);
}
for (int i = 0; i < materialByDepositorys.size(); i++) {
// 循环便利物料
if (Integer.compare(materialByDepositorys.get(i).getTypeId(), mt.getId()) == 0){
// 如果该物料是当前类别下的物料
boolean flag = false;
for (int j = 0; j < materialPByCondition.size(); j++) {
// 判断当前物料是否在最终结果中
if(materialByDepositorys.get(i).getCode().equals(materialPByCondition.get(j).getCode())){
flag = true;
continue;
flag = true; // 设置标志位为true
break; // 跳出本循环
}
}
if(flag){
if(flag){ // 如果当前物料存在
continue;
}
materialPByCondition.add(materialByDepositorys.get(i));
}
}
List<Object> result = new ArrayList<>();
if("".equals(mname)) {
if("".equals(mname)) { // 如果没有输入名称
for (Material material : materialPByCondition) {
Map<String, Object> map = new HashMap<>();
String version = material.getVersion();
if(version == null){
version = "";
}
map.put("title", material.getMname() + " 规格型号: "+version);
String title = material.getMname() + ",规格型号: "+version;
if(material.getDepositoryId() != null){
// 如果当前是库存
title += ",当前库存为:"+material.getQuantity();
}
map.put("title", title);
map.put("id", material.getId());
result.add(map);
}
@ -492,7 +564,12 @@ public class MaterialServiceImpl implements MaterialService {
if(version == null){
version = "";
}
map.put("title", material.getMname() + " 规格型号: "+version);
String title = material.getMname() + ",规格型号: "+version;
if(material.getDepositoryId() != null){
// 如果当前是库存
title += ",当前库存为:"+material.getQuantity();
}
map.put("title", title);
map.put("id", material.getId());
result.add(map);
}
@ -517,7 +594,7 @@ public class MaterialServiceImpl implements MaterialService {
return flag;
}
// 根据id获取子类
// 根据类别id获取子类
public List<Object> findChildForMaterialTypeByParent(Integer id,String mname,String adminorg){
Map<String,Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
@ -526,11 +603,14 @@ public class MaterialServiceImpl implements MaterialService {
// 获取当前父类的子类
List<MaterialType> materialTypeByCondition = materialTypeMapper.findMaterialTypeByCondition(param);
if(materialTypeByCondition.size() > 0){
// 如果当前类别有子类
for (MaterialType mt : materialTypeByCondition) {
// 递归直至到最底层子类
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId(),mname,adminorg);
Map<String, Object> stringObjectMap = null;
if(childForMaterialTypeByParent == null) {
List<Object> list = AddMaterialByType(mt,mname,adminorg);
// 如果当前类别没有子类
List<Object> list = AddMaterialByType(mt,mname,adminorg); // 添加当前类别下的物料
stringObjectMap = InitTreeMenus(mt, list);
}else{
stringObjectMap = InitTreeMenus(mt, childForMaterialTypeByParent);
@ -539,6 +619,7 @@ public class MaterialServiceImpl implements MaterialService {
}
return result;
}else{
// 没有则返回空
return null;
}
}

10
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java

@ -3,6 +3,7 @@ package com.dreamchaser.depository_manage.service.impl;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.mapper.MaterialTypeMapper;
import com.dreamchaser.depository_manage.service.MaterialTypeService;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -52,6 +53,15 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
*/
@Override
public List<MaterialType> findMaterialTypeByCondition(Map<String, Object> 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);
}
return materialTypeMapper.findMaterialTypeByCondition(map);
}

10
src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java

@ -234,5 +234,15 @@ public class PlaceServiceImpl implements PlaceService {
return placeMapper.findQuantityByMidAndPid(map);
}
/**
* 修改当前库位存放物料
* @param mp
* @return
*/
@Override
public Integer updateMaterialAndPlace(MaterialAndPlace mp) {
return placeMapper.updateMaterialAndPlace(mp);
}
}

5
src/main/java/com/dreamchaser/depository_manage/utils/TaskCenterUtil.java

@ -1,10 +1,7 @@
package com.dreamchaser.depository_manage.utils;
import java.util.concurrent.Callable;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.*;
// 线程池工具类
public class TaskCenterUtil {

4
src/main/resources/templates/pages/application/application-out.html

@ -400,7 +400,7 @@
var id = obj.id.split("quantity")[1];
var mcode = $("#code"+id).val(); // 获取到当前输入的物料编码
if(mcode === "" || mcode ===undefined || mcode === null){
layer.msg("请输入物料的正确编码!",{icon:1,time:500},function () {
layer.msg("请输入物料的正确编码!",{icon:0,time:500},function () {
$("#quantity"+id).val("")
});
}else{
@ -416,7 +416,7 @@
success:function (res) {
var flag = res.data;
if(!flag){ // 如果当前数目不合适
layer.msg("当前物料数量不足",{icon:1,time:500},function () {
layer.msg("当前物料数量不足",{icon:0,time:500},function () {
$("#quantity"+id).val("");
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;

13
src/main/resources/templates/pages/application/application-out_min.html

@ -77,15 +77,24 @@
{field: 'applicantName', width: 150, title: '申请人'},
{field: 'applicantTime', width: 200, title: '申请时间', sort: true},
{field: 'applyRemark', width: 200, title: '备注'},
{field: 'state', width: 200, title: '状态'}
{field: 'state', width: 200, title: '状态'},
{field: 'checkerName', width: 200, title: '处理人'}
]],
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
skin: 'line',
done:function () {
done:function (res, curr, count) {
$("[data-field='id']").css('display','none');
var data = res.data;
if(data.length > 0){
if(data[0].state === "进行中"){
$("[data-field='id']").css('display','none');
}
}
}
});

13
src/main/resources/templates/pages/application/application-transfer.html

@ -247,7 +247,7 @@
<div class="layui-form-item">
<label class="layui-form-label">所处库位:</label>
<div class="layui-input-block">
<select name=`+"placeId"+NewIdNumber +` id="place"></select>
<select name=`+"placeId"+NewIdNumber +` id=`+"place"+NewIdNumber +`></select>
</div>
</div>
<div class="layui-form-item">
@ -265,6 +265,8 @@
lay-verify="required"/>
<input type="text" name=`+"depositoryId"+NewIdNumber+` class="layui-input" id="depositoryId"
style="display: none" lay-verify="required"/>
<input type="text" name=`+"placeId"+NewIdNumber+` class="layui-input" id="placeId"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -279,7 +281,7 @@
// 获取当前高度
var height = parseInt(($("#stepForm").css('height')).split("px")[0]);
params.push(NewIdNumber)
$("#stepForm").css("height",height+430 +'px');
$("#stepForm").css("height",height+455 +'px');
$("#"+parentId).after(materialItem);
};
@ -292,7 +294,7 @@
// 获取祖父节点
var reparent = parent.parentNode;
var height = parseInt(($("#stepForm").css('height')).split("px")[0]);
$("#stepForm").css("height",height-430 +'px');
$("#stepForm").css("height",height-455 +'px');
params = remove(params,parentId);
reparent.removeChild(parent);
};
@ -315,6 +317,7 @@
selectCode = function(obj){
// 输入code
var code = obj.value;
var id = obj.name.split("code")[1];
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var children = parent.childNodes[5];
@ -346,9 +349,9 @@
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success:function (res) {
$('#place').empty();
$('#place'+id).empty();
$.each(res.data, function (index, item) {
$('#place').append(new Option(item.depositoryName+"-"+item.code, item.id));//往下拉菜单里添加元素
$('#place'+id).append(new Option(item.depositoryName+"-"+item.code, item.id));//往下拉菜单里添加元素
});
form.render();
materialName.value = d.mname;

7
src/main/resources/templates/pages/application/form-step-look_back.html

@ -99,13 +99,6 @@
</div>
</div>
<div class="layui-card-body" style="padding-top: 40px;">
<div style="color: #666;margin-top: 30px;margin-bottom: 40px;padding-left: 30px;">
<h3>说明</h3><br>
申请提交后,24小时内审核完毕
</div>
</div>
</div>
</div>

52
src/main/resources/templates/pages/material/material-out.html

@ -72,13 +72,6 @@
</div>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">二维码</label>
<div class="layui-input-inline">
<!-- <input type="text" th:value="${record.depository.getDname()}" name="dname" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">-->
<img src="" id="qrCode">
</div>
</div>
<!-- 状态展示-->
<script type="text/html" id="switchTpl">
@ -89,6 +82,7 @@
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="applicationIn"> 入库申请</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" id="u_fileUpload" lay-event="import">导入数据</button>
</div>
</script>
@ -284,19 +278,46 @@
return false;
}
}
else if(obj.event === 'createQrCode'){
else if(obj.event === 'applicationIn'){
// 入库申请
var checkStatus = table.checkStatus('currentTableId')
, data = checkStatus.data;
var req={};
req.mids=[];
// 获取所有选中的id
for (i=0,len=data.length;i<len;i++){
req.mids[i]=data[i].id;
}
$.ajax({
url:"/material/createQrCode?mid=3",
url:"/material/temporaryValueForMaterial",
type: 'post',
dataType: 'json',
type: 'get',
contentType: "application/json;charset=utf-8",
success:function (data) {
if(data.status != 200){
layer.msg(data.statusInfo.messgae)
}else{
$("#qrCode").attr("src",data.data);
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function (d) {
layer.close(this.layerIndex);
if(d.status == 200){
layer.open({
type: 2,
title: '入库',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['100%', '100%'],
move: '.layui-layer-title',
fixed: false,
content: '/applicationInByMaterial',
end:function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
})
}
}
})
}
});
@ -312,6 +333,7 @@
exts:'xls|xlsx|csv',
done:function(res){
layer.closeAll('loading'); //关闭loading
//如果上传成功
for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>"+res.data.errMsg[i] + ":错误"+"</p>"

2
src/main/resources/templates/pages/material/selectDepositoryByCard.html

@ -64,7 +64,7 @@
depositoryName.value = d.data.dname +"-"+ obj.data.title;
}
});
console.log(did)
depositoryId.value = did[0];
placeId.value = did[1];
}

5
src/main/resources/templates/pages/materialtype/materialType_view.html

@ -82,7 +82,7 @@
var parentId = document.getElementById("parentId").value;
table.render({
elem: "#currentTableId",
url: '/materialType/allMaterialTypeByParent?parentId='+parentId,
url: '/materialType/allMaterialTypeByParent',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
@ -96,7 +96,8 @@
limitName: 'size' //每页数据量的参数名,默认:limit
},
where: {
type:"0"
type:"0",
parentId:parentId
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code

2
src/main/resources/templates/pages/scanQrCode/ScanQrCode.html

@ -279,7 +279,7 @@
},
// 弹出入库|出库选择框
chooseInOrOut(){
layer.confirm("请选择入库|出库", {
layer.confirm("是否入库", {
btn: ["入库"]
},
function () { // 选择入库

8
src/main/resources/templates/pages/scanQrCode/scanQrCodeOut.html

@ -283,7 +283,7 @@
},
// 弹出出库确定弹出框
isOutTrue(req){
layer.confirm("确定出库?", {
var confirmIndex = layer.confirm("确定出库?", {
btn: ["确定", "取消"]
}, function () { // 如果确定出库
@ -302,9 +302,10 @@
}
, function () {
layer.close(layer.index);
});
layer.close(layer.index)
var index=parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
} else {
// 如果出库失败
layer.msg(res.statusInfo.message+",请重试");
@ -315,6 +316,7 @@
vue.turnCameraOn();
return
}
}
})
}, function () {

18
target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -90,7 +90,7 @@
<if test="typeId != null">
AND m.type_id = #{typeId}
</if>
and state != 3
and state != 3 and m.depository_id is null
</select>
@ -209,12 +209,26 @@
#{item}
</foreach>
</select>
<!-- 根据仓库查询物料-->
<select id="findMaterialByDepository" resultMap="materialMap" parameterType="int">
<select id="findMaterialByDepository" resultMap="materialMap" parameterType="map">
SELECT
<include refid="allColumns" />
from material m
where m.depository_id = #{depositoryId}
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据仓库查询物料总数-->
<select id="findMaterialByDepositoryCount" resultType="int" parameterType="map">
SELECT
COUNT(*)
from material m
where m.depository_id = #{depositoryId}
</select>

4
target/classes/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml

@ -65,7 +65,11 @@
<if test="parentId != null">
and mt.parentId = #{parentId}
</if>
and mt.state != 3 and mt.state != 4
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据主键查询数据 -->

2
target/classes/com/dreamchaser/depository_manage/mapper/TransferRecordMapper.xml

@ -73,7 +73,7 @@
FROM transfer_record tr WHERE tr.id = #{id}
</select>
<!-- 新增信息 -->
<insert id="addTransferRecord">
<insert id="addTransferRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id">
INSERT INTO transfer_record (
id, from_id, to_id,quantity,mid,applicantTime,applicantId,from_place_id,to_place_id
) VALUES (

4
target/classes/templates/pages/application/application-out.html

@ -400,7 +400,7 @@
var id = obj.id.split("quantity")[1];
var mcode = $("#code"+id).val(); // 获取到当前输入的物料编码
if(mcode === "" || mcode ===undefined || mcode === null){
layer.msg("请输入物料的正确编码!",{icon:1,time:500},function () {
layer.msg("请输入物料的正确编码!",{icon:0,time:500},function () {
$("#quantity"+id).val("")
});
}else{
@ -416,7 +416,7 @@
success:function (res) {
var flag = res.data;
if(!flag){ // 如果当前数目不合适
layer.msg("当前物料数量不足",{icon:1,time:500},function () {
layer.msg("当前物料数量不足",{icon:0,time:500},function () {
$("#quantity"+id).val("");
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;

13
target/classes/templates/pages/application/application-out_min.html

@ -77,15 +77,24 @@
{field: 'applicantName', width: 150, title: '申请人'},
{field: 'applicantTime', width: 200, title: '申请时间', sort: true},
{field: 'applyRemark', width: 200, title: '备注'},
{field: 'state', width: 200, title: '状态'}
{field: 'state', width: 200, title: '状态'},
{field: 'checkerName', width: 200, title: '处理人'}
]],
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
skin: 'line',
done:function () {
done:function (res, curr, count) {
$("[data-field='id']").css('display','none');
var data = res.data;
if(data.length > 0){
if(data[0].state === "进行中"){
$("[data-field='id']").css('display','none');
}
}
}
});

13
target/classes/templates/pages/application/application-transfer.html

@ -247,7 +247,7 @@
<div class="layui-form-item">
<label class="layui-form-label">所处库位:</label>
<div class="layui-input-block">
<select name=`+"placeId"+NewIdNumber +` id="place"></select>
<select name=`+"placeId"+NewIdNumber +` id=`+"place"+NewIdNumber +`></select>
</div>
</div>
<div class="layui-form-item">
@ -265,6 +265,8 @@
lay-verify="required"/>
<input type="text" name=`+"depositoryId"+NewIdNumber+` class="layui-input" id="depositoryId"
style="display: none" lay-verify="required"/>
<input type="text" name=`+"placeId"+NewIdNumber+` class="layui-input" id="placeId"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -279,7 +281,7 @@
// 获取当前高度
var height = parseInt(($("#stepForm").css('height')).split("px")[0]);
params.push(NewIdNumber)
$("#stepForm").css("height",height+430 +'px');
$("#stepForm").css("height",height+455 +'px');
$("#"+parentId).after(materialItem);
};
@ -292,7 +294,7 @@
// 获取祖父节点
var reparent = parent.parentNode;
var height = parseInt(($("#stepForm").css('height')).split("px")[0]);
$("#stepForm").css("height",height-430 +'px');
$("#stepForm").css("height",height-455 +'px');
params = remove(params,parentId);
reparent.removeChild(parent);
};
@ -315,6 +317,7 @@
selectCode = function(obj){
// 输入code
var code = obj.value;
var id = obj.name.split("code")[1];
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var children = parent.childNodes[5];
@ -346,9 +349,9 @@
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success:function (res) {
$('#place').empty();
$('#place'+id).empty();
$.each(res.data, function (index, item) {
$('#place').append(new Option(item.depositoryName+"-"+item.code, item.id));//往下拉菜单里添加元素
$('#place'+id).append(new Option(item.depositoryName+"-"+item.code, item.id));//往下拉菜单里添加元素
});
form.render();
materialName.value = d.mname;

7
target/classes/templates/pages/application/form-step-look_back.html

@ -99,13 +99,6 @@
</div>
</div>
<div class="layui-card-body" style="padding-top: 40px;">
<div style="color: #666;margin-top: 30px;margin-bottom: 40px;padding-left: 30px;">
<h3>说明</h3><br>
申请提交后,24小时内审核完毕
</div>
</div>
</div>
</div>

52
target/classes/templates/pages/material/material-out.html

@ -72,13 +72,6 @@
</div>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">二维码</label>
<div class="layui-input-inline">
<!-- <input type="text" th:value="${record.depository.getDname()}" name="dname" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">-->
<img src="" id="qrCode">
</div>
</div>
<!-- 状态展示-->
<script type="text/html" id="switchTpl">
@ -89,6 +82,7 @@
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="applicationIn"> 入库申请</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" id="u_fileUpload" lay-event="import">导入数据</button>
</div>
</script>
@ -284,19 +278,46 @@
return false;
}
}
else if(obj.event === 'createQrCode'){
else if(obj.event === 'applicationIn'){
// 入库申请
var checkStatus = table.checkStatus('currentTableId')
, data = checkStatus.data;
var req={};
req.mids=[];
// 获取所有选中的id
for (i=0,len=data.length;i<len;i++){
req.mids[i]=data[i].id;
}
$.ajax({
url:"/material/createQrCode?mid=3",
url:"/material/temporaryValueForMaterial",
type: 'post',
dataType: 'json',
type: 'get',
contentType: "application/json;charset=utf-8",
success:function (data) {
if(data.status != 200){
layer.msg(data.statusInfo.messgae)
}else{
$("#qrCode").attr("src",data.data);
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function (d) {
layer.close(this.layerIndex);
if(d.status == 200){
layer.open({
type: 2,
title: '入库',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['100%', '100%'],
move: '.layui-layer-title',
fixed: false,
content: '/applicationInByMaterial',
end:function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
})
}
}
})
}
});
@ -312,6 +333,7 @@
exts:'xls|xlsx|csv',
done:function(res){
layer.closeAll('loading'); //关闭loading
//如果上传成功
for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>"+res.data.errMsg[i] + ":错误"+"</p>"

2
target/classes/templates/pages/material/selectDepositoryByCard.html

@ -64,7 +64,7 @@
depositoryName.value = d.data.dname +"-"+ obj.data.title;
}
});
console.log(did)
depositoryId.value = did[0];
placeId.value = did[1];
}

5
target/classes/templates/pages/materialtype/materialType_view.html

@ -82,7 +82,7 @@
var parentId = document.getElementById("parentId").value;
table.render({
elem: "#currentTableId",
url: '/materialType/allMaterialTypeByParent?parentId='+parentId,
url: '/materialType/allMaterialTypeByParent',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
@ -96,7 +96,8 @@
limitName: 'size' //每页数据量的参数名,默认:limit
},
where: {
type:"0"
type:"0",
parentId:parentId
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code

2
target/classes/templates/pages/scanQrCode/ScanQrCode.html

@ -279,7 +279,7 @@
},
// 弹出入库|出库选择框
chooseInOrOut(){
layer.confirm("请选择入库|出库", {
layer.confirm("是否入库", {
btn: ["入库"]
},
function () { // 选择入库

8
target/classes/templates/pages/scanQrCode/scanQrCodeOut.html

@ -283,7 +283,7 @@
},
// 弹出出库确定弹出框
isOutTrue(req){
layer.confirm("确定出库?", {
var confirmIndex = layer.confirm("确定出库?", {
btn: ["确定", "取消"]
}, function () { // 如果确定出库
@ -302,9 +302,10 @@
}
, function () {
layer.close(layer.index);
});
layer.close(layer.index)
var index=parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
} else {
// 如果出库失败
layer.msg(res.statusInfo.message+",请重试");
@ -315,6 +316,7 @@
vue.turnCameraOn();
return
}
}
})
}, function () {

Loading…
Cancel
Save