|
|
|
@ -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; |
|
|
|
} |
|
|
|
} |
|
|
|
|