Browse Source

修改组合创建页面

lwx_dev
erdanergou 3 years ago
parent
commit
f8efb1ae5e
  1. 87
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  2. 10
      src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java
  3. 5
      src/main/java/com/dreamchaser/depository_manage/entity/MaterialForGroup.java
  4. 20
      src/main/java/com/dreamchaser/depository_manage/mapper/GroupMapper.xml
  5. 2
      src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java
  6. 243
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  7. 11
      src/main/resources/templates/pages/depository/table-stock.html
  8. 744
      src/main/resources/templates/pages/group/group-add_back.html
  9. 8
      src/main/resources/templates/pages/material/selectPlaceByDepository.html
  10. 20
      target/classes/com/dreamchaser/depository_manage/mapper/GroupMapper.xml
  11. 13
      target/classes/templates/pages/depository/table-stock.html
  12. 12
      target/classes/templates/pages/material/selectPlaceByDepository.html

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

@ -400,14 +400,14 @@ public class PageController {
}
@GetMapping("/split_edit")
public ModelAndView split_edit(Integer id){
if(id == null){
public ModelAndView split_edit(Integer id) {
if (id == null) {
throw new MyException("缺少必要参数");
}
ModelAndView mv = new ModelAndView();
// 获取所进行查询的拆单详细信息
SplitInfoP splitInfoPById = splitUnitService.findSplitInfoPById(id);
mv.addObject("record",splitInfoPById);
mv.addObject("record", splitInfoPById);
mv.setViewName("pages/split/split_edit");
return mv;
}
@ -481,7 +481,7 @@ public class PageController {
@GetMapping("/selectPlaceByDepository")
// 库位树形菜单
public ModelAndView selectPlaceByDepository(Integer depositoryId, Integer mid, String placeCode) {
public ModelAndView selectPlaceByDepository(Integer depositoryId, Integer mid, String placeCode, String unit) {
ModelAndView mv = new ModelAndView();
@ -504,9 +504,22 @@ public class PageController {
placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(place.getId(), mid);
mv.addObject("placeId", place.getId());
}
if ("-1".equals(unit)) {
// 如果转移的基础单位
mv.addObject("quantity", placeAndMaterialByMidAndPid.getQuantity());
}else{
// 获取当前的拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>();
Inventory inventoryById = materialService.findInventoryById(mid);
paramForSplitInfo.put("mid",inventoryById.getMid());
paramForSplitInfo.put("newUnit",unit);
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), splitInfo.getId());
mv.addObject("quantity",splitInventory.getSaveQuantity());
}
mv.addObject("depositoryId", depositoryId);
mv.addObject("quantity",placeAndMaterialByMidAndPid.getQuantity());
mv.addObject("mid",mid);
mv.addObject("mid", mid);
mv.addObject("unit", unit);
mv.setViewName("pages/material/selectPlaceByDepository");
return mv;
}
@ -537,14 +550,14 @@ public class PageController {
// 组合树形菜单页面
@GetMapping("/selectGroup")
public ModelAndView selectGroup(String gname,String clickObj){
public ModelAndView selectGroup(String gname, String clickObj) {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/group/selectGroup");
if(gname == null){
if (gname == null) {
gname = "";
}
mv.addObject("gname",gname);
mv.addObject("clickObj",clickObj);
mv.addObject("gname", gname);
mv.addObject("clickObj", clickObj);
return mv;
}
@ -639,6 +652,7 @@ public class PageController {
/**
* 跳转到库存多选处理页面
*
* @return
*/
@GetMapping("/application_multi")
@ -651,6 +665,7 @@ public class PageController {
/**
* 跳转到组合多选处理页面
*
* @return
*/
@GetMapping("/application_group_multi")
@ -741,7 +756,7 @@ public class PageController {
}
@GetMapping("/split_add")
public ModelAndView split_add(){
public ModelAndView split_add() {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/split/split_add");
return mv;
@ -796,28 +811,30 @@ public class PageController {
/**
* 跳转到组合添加页面
*
* @return
*/
@GetMapping("/group_add")
public ModelAndView group_add(@RequestParam(required = false) Integer gid){
public ModelAndView group_add(@RequestParam(required = false) Integer gid) {
ModelAndView mv = new ModelAndView();
if(gid != null){
mv.addObject("gid",gid);
}else{
mv.addObject("gid",-1);
if (gid != null) {
mv.addObject("gid", gid);
} else {
mv.addObject("gid", -1);
}
mv.setViewName("pages/group/group-add");
mv.setViewName("pages/group/group-add_back");
return mv;
}
/**
* 跳转到组合查询页面
*
* @return
*/
@GetMapping("/group_out")
public ModelAndView group_out(HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
mv.setViewName( "pages/group/group-out");
mv.setViewName("pages/group/group-out");
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
Integer isadmin = userToken.getIsadmin();
if (isadmin == null) {
@ -834,19 +851,19 @@ public class PageController {
/**
* 跳转到组合中物料明细中
*
* @param mid 物料id
* @param gid 组合id
* @return
*/
@GetMapping("/materialForGroup")
public ModelAndView materialForGroup(Integer mid,Integer gid){
public ModelAndView materialForGroup(Integer mid, Integer gid) {
ModelAndView mv = new ModelAndView();
// 根据物料id与组合id查询对应明细
GroupInfo groupInfoByMidAndGid = groupService.findGroupInfoByMidAndGid(mid, gid);
if(groupInfoByMidAndGid != null){
mv.addObject("record",groupInfoByMidAndGid);
}
else {
if (groupInfoByMidAndGid != null) {
mv.addObject("record", groupInfoByMidAndGid);
} else {
throw new MyException("缺少必要参数!");
}
mv.setViewName("pages/group/group_material_edit");
@ -854,12 +871,12 @@ public class PageController {
}
@GetMapping("/group_edit")
public ModelAndView groupEdit(Integer id){
public ModelAndView groupEdit(Integer id) {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/group/group_edit");
Group group = groupService.findGroupOnlyById(id);
mv.addObject("id",id);
mv.addObject("record",group);
mv.addObject("id", id);
mv.addObject("record", group);
return mv;
}
@ -1099,7 +1116,7 @@ public class PageController {
param.put("parentId", parentId);
mv.addObject("parentId", parentId);
List<Depository> depositoryRecordPByCondition = depositoryService.findDepositoryByCondition(param, userByPort);
param.put("state",2);
param.put("state", 2);
List<Depository> depositoryRecordPByConditionForState = depositoryService.findDepositoryByCondition(param, userByPort);
Integer role = userByPort.getIsadmin();
if (role == null) {
@ -1248,10 +1265,10 @@ public class PageController {
sumQuantity += applicationOutRecordMin.getQuantity();
sumPrice += (materialById.getPrice());
String unit = applicationOutRecordMin.getUnit();
if("-1".equals(unit)){
sumUnit.append(materialById.getUnit()+",");
}else{
sumUnit.append(unit+",");
if ("-1".equals(unit)) {
sumUnit.append(materialById.getUnit() + ",");
} else {
sumUnit.append(unit + ",");
}
}
// 申请人
@ -1470,14 +1487,14 @@ public class PageController {
@GetMapping("/applicationOutForGroup")
public ModelAndView applicationOutForGroup(Integer gid,String type){
public ModelAndView applicationOutForGroup(Integer gid, String type) {
ModelAndView mv = new ModelAndView();
List<Integer> gidList = new ArrayList<>();
if("one".equals(type)) {
if ("one".equals(type)) {
gidList.add(gid);
}else if("more".equals(type)){
} else if ("more".equals(type)) {
}
mv.addObject("gidList",gidList);
mv.addObject("gidList", gidList);
mv.setViewName("pages/group/applicationOutForGroup");
return mv;
}

10
src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java

@ -50,6 +50,10 @@ public class GroupInfo {
/**
* 物料计量单位
*/
private String munit;
/**
* 组合中的物料单位
*/
private String unit;
/**
* 物料材质
@ -70,7 +74,11 @@ public class GroupInfo {
/**
* 物料备注
*/
private String remark;
private String mremark;
/**
* 套餐备注
*/
private String gremark;
/**
* 组合创建时间
*/

5
src/main/java/com/dreamchaser/depository_manage/entity/MaterialForGroup.java

@ -20,4 +20,9 @@ public class MaterialForGroup {
* 数量
*/
private Integer quantity;
/*
计量单位
*/
private String unit;
}

20
src/main/java/com/dreamchaser/depository_manage/mapper/GroupMapper.xml

@ -15,11 +15,13 @@
<result column="tname" property="tname" jdbcType="VARCHAR"/>
<result column="mcode" property="mcode" jdbcType="VARCHAR"/>
<result column="version" property="version" jdbcType="VARCHAR"/>
<result column="munit" property="munit" jdbcType="VARCHAR"/>
<result column="unit" property="unit" jdbcType="VARCHAR"/>
<result column="texture" property="texture" jdbcType="VARCHAR"/>
<result column="productionPlace" property="productionPlace" jdbcType="VARCHAR"/>
<result column="brand" property="brand" jdbcType="VARCHAR"/>
<result column="remark" property="remark" jdbcType="VARCHAR"/>
<result column="mremark" property="mremark" jdbcType="VARCHAR"/>
<result column="gremark" property="gremark" jdbcType="VARCHAR"/>
<result column="gname" property="gname" jdbcType="VARCHAR"/>
<result column="createTime" property="createTime" jdbcType="INTEGER"/>
<result column="gstate" property="gstate" jdbcType="INTEGER"/>
@ -40,11 +42,13 @@
<result column="mid" property="mid" jdbcType="INTEGER"/>
<result column="gid" property="gid" jdbcType="INTEGER"/>
<result column="quantity" property="quantity" jdbcType="INTEGER"/>
<result column="unit" property="unit" jdbcType="VARCHAR"/>
</resultMap>
<!-- 用于视图-->
<sql id="allColumnsForView">
id,mid,gid,quantity,mtid,shelfLife,gcode,mname,tname,mcode,version,unit,texture,productionPlace,brand,remark,createTime,gstate,gname
id,mid,gid,quantity,mtid,shelfLife,gcode,mname,tname,mcode,version,munit,texture,productionPlace,brand,mremark,createTime,gstate,gname,unit,gremark
</sql>
<!-- 用于组合-->
@ -54,7 +58,7 @@
<!-- 用于物料对于组合的映射-->
<sql id="allColumnsForMaterialForGroup">
id,mid,gid,quantity
id,mid,gid,quantity,unit
</sql>
@ -148,12 +152,13 @@
<insert id="addGroupForMaterial">
INSERT INTO groupformaterial (
id, mid, gid, quantity
id, mid, gid, quantity,unit
) VALUES (
#{id},
#{mid},
#{gid},
#{quantity}
#{quantity},
#{unit}
)
</insert>
@ -310,7 +315,10 @@
mid = #{mid},
</if>
<if test="quantity != null and quantity != ''">
quantity = #{quantity}
quantity = #{quantity},
</if>
<if test="unit != null">
unit = #{unit}
</if>
</set>
where id = #{id}

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

@ -198,6 +198,8 @@ public class GroupServiceImpl implements GroupService {
String code = createCode(groupCount);
insertForGroup.put("code", code);
insertForGroup.put("state", 1);
insertForGroup.put("remark",map.get("applyRemark"));
insertForGroup.put("gname",map.get("gname"));
// 插入到数据库
groupMapper.addGroup(insertForGroup);

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

@ -8,9 +8,7 @@ import com.dreamchaser.depository_manage.mapper.*;
import com.dreamchaser.depository_manage.pojo.InventoryP;
import com.dreamchaser.depository_manage.pojo.MaterialP;
import com.dreamchaser.depository_manage.pojo.PlaceP;
import com.dreamchaser.depository_manage.service.MaterialService;
import com.dreamchaser.depository_manage.service.PlaceService;
import com.dreamchaser.depository_manage.service.RoleService;
import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import lombok.Data;
@ -49,6 +47,15 @@ public class MaterialServiceImpl implements MaterialService {
@Autowired
SplitUnitMapper splitUnitMapper;
@Autowired
SplitUnitService splitUnitService;
@Autowired
DepositoryRecordService depositoryRecordService;
@Autowired
DepositoryRecordMapper depositoryRecordMapper;
/**
* 用于深度拷贝列表
*
@ -714,7 +721,7 @@ public class MaterialServiceImpl implements MaterialService {
m.setProducedDate(DateUtil.TimeStampToDateTimeForDay(producedDate));
}
// 设置当前物料保质期的具体时间
Long calcShelfLife = Long.valueOf(0);
Long calcShelfLife = 0L;
String currentDate = DateUtil.getCurrentDate();
// 获取当天时间
@ -1268,7 +1275,7 @@ public class MaterialServiceImpl implements MaterialService {
}
/**
* 用于修改库位中的物料
* 用于修改物料所处的库位
*
* @param map 修改条件
* @return
@ -1283,17 +1290,24 @@ public class MaterialServiceImpl implements MaterialService {
Integer fromPlaceId = ObjectFormatUtil.toInteger(map.get("fromPlaceId"));
Place fromPlace = placeService.findPlaceById(fromPlaceId);
// 获取当前转移之前的库位与库存的对应关系
MaterialAndPlace pidAndmidForBefore = placeService.findPlaceAndMaterialByMidAndPid(fromPlaceId, id);
MaterialAndPlace pidAndMidForBefore = placeService.findPlaceAndMaterialByMidAndPid(fromPlaceId, id);
// 获取要转移的数量
Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity"));
// 获取转移到的库位
Integer toPlaceId = ObjectFormatUtil.toInteger(map.get("toPlaceId"));
Place toPlace = placeService.findPlaceById(toPlaceId);
// 获取当前转移后的库位与库存的对应关系
MaterialAndPlace pidAndmidForAfter = placeService.findPlaceAndMaterialByMidAndPid(toPlaceId, id);
MaterialAndPlace pidAndMidForAfter = placeService.findPlaceAndMaterialByMidAndPid(toPlaceId, id);
// 获取当前转移的计量单位
String unit = (String) map.get("unit");
// 获取转移之前的库存转移的数量
int beforeQuantity = pidAndmidForBefore.getQuantity() - quantity;
int beforeQuantity = pidAndMidForBefore.getQuantity() - quantity;
if ("-1".equals(unit)) {
// 如果是基础单位
// 判断转移到的库位是否超出库存
if (toPlace.getQuantity() + quantity > toPlace.getMax()) {
@ -1304,12 +1318,12 @@ public class MaterialServiceImpl implements MaterialService {
// 判断转移到的库位是否存在该物料
if (pidAndmidForAfter != null) {
if (pidAndMidForAfter != null) {
// 如果该库位有物料
// 修改转入物料数量
pidAndmidForAfter.setQuantity(pidAndmidForAfter.getQuantity() + quantity);
placeService.updateMaterialAndPlace(pidAndmidForAfter);
pidAndMidForAfter.setQuantity(pidAndMidForAfter.getQuantity() + quantity);
placeService.updateMaterialAndPlace(pidAndMidForAfter);
} else {
// 如果没有
@ -1325,13 +1339,13 @@ public class MaterialServiceImpl implements MaterialService {
if (beforeQuantity > 0) {
// 如果转移后还存在
// 修改当前物料所在库位的数量
pidAndmidForBefore.setQuantity(beforeQuantity);
placeService.updateMaterialAndPlace(pidAndmidForBefore);
pidAndMidForBefore.setQuantity(beforeQuantity);
placeService.updateMaterialAndPlace(pidAndMidForBefore);
} else {
// 如果转移后不存在
// 删除该记录
placeService.deleteMaterialAndPlace(pidAndmidForBefore.getId());
placeService.deleteMaterialAndPlace(pidAndMidForBefore.getId());
}
// 修改转移之前库位的数量
@ -1342,6 +1356,183 @@ public class MaterialServiceImpl implements MaterialService {
placeService.UpdatePlace(toPlace);
}
} else {
// 如果是拆单单位
// 用于查询当前拆单记录
Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit", unit);
paramForSplitInfo.put("mid", inventoryByMid.getMid());
// 查询当前拆单记录
SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 用于查询当前拆单对应的库存记录
Map<String, Object> paramForSplitInventory = new HashMap<>();
paramForSplitInventory.put("sid", splitInfo.getId());
// 获取转移之前的拆单库存记录
paramForSplitInventory.put("iid", pidAndMidForBefore.getId());
// 转移之前的拆单库存记录
SplitInventory splitInventoryForBefore = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory);
// 设置转移前库存的数量
splitInventoryForBefore.setSaveQuantity(splitInventoryForBefore.getSaveQuantity() - quantity);
// 设置转移前的出库数量
splitInventoryForBefore.setOutQuantity(splitInventoryForBefore.getOutQuantity() + quantity);
// 修改转移前的记录
splitUnitMapper.updateSplitInventory(splitInventoryForBefore);
// 定义进制时算法需要的参数
Map<String,Object> paramForNewMap = new HashMap<>();
paramForNewMap.put("mid",inventoryByMid.getMid());
paramForNewMap.put("price",String.valueOf(inventoryByMid.getPrice() / 100));
paramForNewMap.put("unit",unit);
paramForNewMap.put("depositoryId",map.get("depositoryId"));
paramForNewMap.put("placeId",toPlace.getId());
if (pidAndMidForAfter != null) {
// 如果转移后的当前库位存在该物料
// 获取转移之后的拆单库存记录
paramForSplitInventory.put("iid", pidAndMidForAfter.getId());
// 转移之后的拆单库存记录
SplitInventory splitInventoryForAfter = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory);
if(splitInventoryForAfter != null ){
// 如果转移后的拆单库存记录不为空
// 获取当前转移后的总数
int realQuantity = splitInventoryForAfter.getSaveQuantity() + quantity;
if(realQuantity >= splitInfo.getQuantity()) {
// 如果当前转移后的总数大于进制数
// 获取当前进行进位的数
int dispose = (int)Math.floor(realQuantity / (double)splitInfo.getQuantity());
// 获取进位后当前入库的数量
realQuantity = realQuantity - dispose * splitInfo.getQuantity();
// 设置当前库存数量
splitInventoryForAfter.setSaveQuantity(realQuantity);
// 设置当前入库数量
splitInventoryForAfter.setInQuantity(splitInventoryForAfter.getInQuantity() + quantity);
// 修改库存记录
splitUnitMapper.updateSplitInventory(splitInventoryForAfter);
if(splitInfo.getParentId() != null){
// 获取当前父级
SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId());
splitUnitService.updateSplitInfoSaveQuantity(parentSplitInfo,dispose,pidAndMidForAfter.getId(),paramForNewMap,quantity,splitInfo);
}
else{
paramForNewMap.put("price", Double.toString(inventoryByMid.getPrice() / 100));
paramForNewMap.put("realQuantity",String.valueOf(dispose));
paramForNewMap.put("quantity",String.valueOf(dispose));
depositoryRecordService.applicationInPlace(paramForNewMap);
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(paramForNewMap.get("id")));
}
// 调用新算法
}else{
// 如果不大于进制数
// 设置转移后的库存数量
splitInventoryForAfter.setSaveQuantity(realQuantity);
// 设置转移后的入库数量
splitInventoryForAfter.setInQuantity(splitInventoryForAfter.getSaveQuantity() + quantity);
// 修改库存数量
splitUnitMapper.updateSplitInventory(splitInventoryForAfter);
}
}
else{
// 如果不存在转移后的拆单库存记录
// 定义用于添加拆单库存记录
Map<String,Object> insertForSplitInventory = new HashMap<>();
insertForSplitInventory.put("sid",splitInfo.getId());
insertForSplitInventory.put("outQuantity",0);
insertForSplitInventory.put("iid",pidAndMidForAfter.getId());
if(quantity >= splitInfo.getQuantity()){
// 如果转移的数量大于进制数
// 获取进制数
int dispose = (int) Math.floor(quantity / (double)splitInfo.getQuantity());
// 获取当前进行入库的数量
int realQuantity = quantity - dispose * splitInfo.getQuantity();
// 如果不大于
insertForSplitInventory.put("saveQuantity",realQuantity);
insertForSplitInventory.put("inQuantity",realQuantity);
splitUnitMapper.addSplitInventory(insertForSplitInventory);
if(splitInfo.getParentId() != null){
// 获取当前父级
SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId());
splitUnitService.updateSplitInfoSaveQuantity(parentSplitInfo,dispose,pidAndMidForAfter.getId(),paramForNewMap,quantity,splitInfo);
}else{
paramForNewMap.put("price", Double.toString(inventoryByMid.getPrice() / 100));
paramForNewMap.put("realQuantity",String.valueOf(dispose));
paramForNewMap.put("quantity",String.valueOf(dispose));
depositoryRecordService.applicationInPlace(paramForNewMap);
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(paramForNewMap.get("id")));
}
}else{
// 如果不大于
insertForSplitInventory.put("saveQuantity",quantity);
insertForSplitInventory.put("inQuantity",quantity);
splitUnitMapper.addSplitInventory(insertForSplitInventory);
}
}
}
else{
// 如果转移后的当前库位不存在该物料
// 新增物料与库位的对应关系
Map<String, Object> insertForAfter = new HashMap<>();
insertForAfter.put("mid", id);
insertForAfter.put("quantity", 0);
insertForAfter.put("pid", toPlaceId);
// 添加对应关系
placeService.addMaterialOnPlace(insertForAfter);
Map<String,Object> insertForSplitInventory = new HashMap<>();
insertForSplitInventory.put("sid",splitInfo.getId());
insertForSplitInventory.put("iid",insertForAfter.get("id"));
insertForSplitInventory.put("outQuantity",0);
if(quantity >= splitInfo.getQuantity()){
// 如果当前转移的数量大于进制数
// 获取进位数量
int dispose = (int)Math.floor(quantity / (double)splitInfo.getQuantity());
// 获取当前入库数量
int realQuantity = quantity - dispose * splitInfo.getQuantity();
insertForSplitInventory.put("saveQuantity",realQuantity);
insertForSplitInventory.put("inQuantity",realQuantity);
splitUnitMapper.addSplitInventory(insertForSplitInventory);
if(splitInfo.getParentId() != null){
// 获取当前父级
SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId());
splitUnitService.updateSplitInfoSaveQuantity(parentSplitInfo,dispose,ObjectFormatUtil.toInteger(insertForSplitInventory.get("id")),paramForNewMap,quantity,splitInfo);
}else{
paramForNewMap.put("price", Double.toString(inventoryByMid.getPrice() / 100));
paramForNewMap.put("realQuantity",String.valueOf(dispose));
paramForNewMap.put("quantity",String.valueOf(dispose));
depositoryRecordService.applicationInPlace(paramForNewMap);
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(paramForNewMap.get("id")));
}
}else{
// 如果不大于进制数
insertForSplitInventory.put("saveQuantity",quantity);
insertForSplitInventory.put("inQuantity",quantity);
splitUnitMapper.addSplitInventory(insertForSplitInventory);
}
}
}
return 1;
}
@ -2144,7 +2335,7 @@ public class MaterialServiceImpl implements MaterialService {
*
* @return
*/
public List<Object> InitTreeForSelectName(String mname, String type,Map<String,Object> map) {
public List<Object> InitTreeForSelectName(String mname, String type, Map<String, Object> map) {
// 获取所有物料类型
List<MaterialType> materialTypeAll = materialTypeMapper.findMaterialTypeAll();
// 物料总数
@ -2169,7 +2360,7 @@ public class MaterialServiceImpl implements MaterialService {
List<Long> materialTypeList = new ArrayList<>();
// 用于标志是否为库存盘点
boolean flagForStock = false;
if("3".equals(type)){
if ("3".equals(type)) {
// 如果是库存盘点
flagForStock = true;
}
@ -2179,7 +2370,7 @@ public class MaterialServiceImpl implements MaterialService {
if (((i + 1) % 100) == 0) { // 如果有100个开启线程进行处理
materialTypeList.add(materialType.getOldId());
TaskTestForSelectMname taskTestForSelectMname = new TaskTestForSelectMname(materialTypeList, mname, type);
if(flagForStock){
if (flagForStock) {
taskTestForSelectMname.setMap(map);
}
Future<Object> future = completionService.submit(taskTestForSelectMname);
@ -2194,7 +2385,7 @@ public class MaterialServiceImpl implements MaterialService {
if (materialTypeList.size() > 0) {
// 如果有剩余,开启线程进行处理
TaskTestForSelectMname taskTestForSelectMname = new TaskTestForSelectMname(materialTypeList, mname, type);
if(flagForStock){
if (flagForStock) {
taskTestForSelectMname.setMap(map);
}
Future<Object> future = completionService.submit(taskTestForSelectMname);
@ -2476,11 +2667,7 @@ public class MaterialServiceImpl implements MaterialService {
// 1入库2出库3盘点
String type;
// 相关使用的数据
Map<String,Object> map;
public void setMap(Map<String, Object> map) {
this.map = map;
}
Map<String, Object> map;
public TaskTestForSelectMname(List<Long> materialTypeByCondition, String mname, String type) {
this.materialTypeIdList = materialTypeByCondition;
@ -2488,6 +2675,10 @@ public class MaterialServiceImpl implements MaterialService {
this.type = type;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
@Override
public Object call() throws Exception {
@ -2505,16 +2696,16 @@ public class MaterialServiceImpl implements MaterialService {
} else if ("2".equals(type)) {
// 如果是出库
inventoryByTypeIdsAndMname = materialMapper.findInventoryByTypeIdsAndMname(paramForMnameAndMtid);
}else if("3".equals(type)){
} else if ("3".equals(type)) {
// 如果是盘点
List<Inventory> inventoryList = materialMapper.findInventoryByTypeIdsAndMname(paramForMnameAndMtid);
Integer placeId = ObjectFormatUtil.toInteger(map.get("placeId"));
// 查询当前存在于当前库位的物料
for (Inventory inventory:
for (Inventory inventory :
inventoryList) {
MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(placeId, inventory.getId());
if(placeAndMaterialByMidAndPid != null){
if (placeAndMaterialByMidAndPid != null) {
inventoryByTypeIdsAndMname.add(inventory);
}

11
src/main/resources/templates/pages/depository/table-stock.html

@ -76,6 +76,7 @@
id="btn_{{d.id}}" value="{{d.unit}}">{{d.unit}}
</button>
</script>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
@ -387,6 +388,14 @@
var depositoryId = obj.value;
var placeCode = obj.innerText;
var mid = obj.id;
// 当前点击行中的计量单位按钮
let unitBtn = obj.parentNode.parentNode.parentNode.childNodes[5].childNodes[0].childNodes[1];
let unit = unitBtn.innerText;
let click_num = Number(unitBtn.getAttribute("click_num"));
if(click_num === 0){
unit = "-1";
}
var index = layer.open({
title: '选择库位',
type: 2,
@ -394,7 +403,7 @@
maxmin: true,
shadeClose: true,
area: ['70%', '70%'],
content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode,
content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode+'&unit='+unit,
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);

744
src/main/resources/templates/pages/group/group-add_back.html

@ -0,0 +1,744 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
</head>
<body>
<style>
.inputdiv {
display: flex;
background-color: #fff;
height: 38px;
line-height: 38px;
border: 1px solid rgb(238, 238, 238);
}
.layui-form-label {
padding: 9px 0px;
text-align: left;
}
.layui-input-block {
margin-left: 80px;
}
.layui-form-select {
width: 100%;
border-style: none;
}
.layui-card-body {
padding: 10px 5px;
}
.lay-step {
display: none;
}
</style>
<div class="layuimini-container">
<div class="layuimini-main">
<input style="display: none" id="gid" th:value="${gid}">
<div style="margin: 10px 10px 10px 10px">
<form class="layui-form layui-form-pane" id="stepForm" style="margin: 0 auto;max-width: 460px;">
<div class="layui-card-body" id="takingHeader" style="padding-right: 0px">
<div class="layui-form-item">
<label class="layui-form-label">组合名称:</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请输入组合名称" class="layui-input" id="gname" name="gname" lay-verify="required">
</div>
</div>
</div>
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<input name="applyRemark" placeholder="请填写相关原因及申请原因" value=""
class="layui-input"/>
</div>
</div>
<div class="layui-card" id="cardParent" style="box-shadow:none">
<fieldset class="table-search-fieldset">
<legend>组合明细</legend>
<div class="layui-card-body" id="cardItem">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label">物料名称:</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input"
style="border-style: none"
id="openSonByMaterial"
onblur="selectMaterialByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search"
style="display: inline"
id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<input type="text" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block">
<div class="inputdiv">
<input id="code" name="code" type="text"
placeholder="请填写入物料编码" value=""
onblur="selectCode(this)"
class="layui-input" lay-verify="required"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
style="margin-top: 10px" onclick="scanCodeForMaterial(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">条形编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="barCode" name="barCode" type="text"
placeholder="请填写入条形编码"
value=""
class="layui-input"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
id="barCodeImg"
style="margin-top: 10px" onclick="scanBarCode(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料数量:</label>
<div class="layui-input-block">
<input name="quantity" type="number" placeholder="请填写入物料数量"
value=""
id="quantity"
class="layui-input" lay-verify="number" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<select id="unit" name="unit">
</select>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline"
onclick="addItem(this)"></i>
</div>
</fieldset>
<!-- 提交按钮-->
<div class="layui-form-item" id="btn_sub" style="margin-top: 10px" >
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep"
style="margin-bottom: 30px;margin-left: 15%">
&emsp;提交&emsp;
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
// 实现卡片添加
function addItem(){
}
// 实现卡片删除
function deleteItem(){
}
// 扫描物料条码
function scanBarCode(){
}
// 用于扫码功能
function scanCodeForMaterial(){
}
// 用于实现点击搜索按钮
function selectMaterial(){
}
// 用于实现通过编码查询物料
function selectCode(){
}
// 用于实现物料名称搜索
function selectMaterialByName(){
}
// 用于暂存卡片个数
var params = [];
// 用于卡片编号
var NewIdNumber = 1;
layui.use(['form', 'layer', 'dropdown', 'tree', 'laydate'], function () {
var $ = layui.jquery,
form = layui.form;
// 提交(组合出库)
form.on('submit(formStep)', function (data) {
data = data.field;
data.len = NewIdNumber;
$.ajax({
url:"/group/addGroup",
data:JSON.stringify(data),
dataType:"json",
type:"post",
contentType: "application/json;charset=utf-8",
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (d) {
layer.close(this.layerIndex);
if (d.status >= 300) {
layer.msg(d.statusInfo.detail);//失败的表情
} else {
layer.msg("创建成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
});
}
},
complete: function () {
layer.close(this.layerIndex);
}
})
});
// 实现卡片添加
addItem = function (obj) {
// 获取父元素id
var parentId = obj.parentNode.id;
NewIdNumber = NewIdNumber + 1;
// 物料名称栏目
var materialItem = `
<div class="layui-card-body" id=` + "cardItem" + NewIdNumber + `>
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline" onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label">物料名称</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" style="border-style: none"
id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<input type="text" name=` + "mid" + NewIdNumber + ` class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block">
<div class="inputdiv">
<input id=` + "code" + NewIdNumber + ` name=` + "code" + NewIdNumber + ` type="text" placeholder="请填写入物料编码" value=""
onblur="selectCode(this)"
class="layui-input" lay-verify="required"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
style="margin-top: 10px" onclick="scanCodeForMaterial(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">条形编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id=` + "barCode" + NewIdNumber + ` name=` + "barCode" + NewIdNumber + ` type="text" placeholder="请填写入条形编码"
value=""
class="layui-input"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16" id=` + "barCodeImg" + NewIdNumber + `
style="margin-top: 10px" onclick="scanBarCode(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料数量:</label>
<div class="layui-input-block">
<input name=` + "quantity" + NewIdNumber + ` type="number" placeholder="请填写入物料数量" value=""
id=` + "quantity" + NewIdNumber + ` class="layui-input" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<select id=`+"unit"+NewIdNumber+` name=`+"unit"+NewIdNumber+`>
</select>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline" onclick="addItem(this)"></i>
</div>`;
// 获取当前高度
var height = parseInt(($("#stepForm").css('height')).split("px")[0]);
params.push(NewIdNumber);
$("#stepForm").css("height", height + 384 + 'px');
$("#" + parentId).after(materialItem);
};
// 实现卡片删除
deleteItem = function (obj) {
// 获取父节点
var parent = obj.parentNode;
var parentId = parent.id;
parentId = parseInt(parentId.split("cardItem")[1]);
// 获取祖父节点
var reparent = parent.parentNode;
var height = parseInt(($("#stepForm").css('height')).split("px")[0]);
$("#stepForm").css("height", height - 384 + 'px');
params = remove(params, parentId);
reparent.removeChild(parent);
};
//删除数组中指定元素
function remove(arr, item) {
var result = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] === item) {
continue;
}
result.push(arr[i]);
}
return result;
}
// 扫描物料条码
scanBarCode = function (obj) {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
$.ajax({
url: "/material/qywxApplicationInScanBarCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var MaterialChildren = parent.childNodes[5];
var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes;
var barCodeChildren = parent.childNodes[9];
var materialName = materialItem[1];
var materialId = materialName.parentNode.parentNode.childNodes[3];
// 条形码条码
var barCodeItem = barCodeChildren.childNodes[3];
// 物料编码
var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes;
var materialCode = materialCodeItem[1];
var data = d.data;
if (data !== null) {
materialName.value = data.mname;
materialId.value = data.iid;
materialCode.value = data.mcode;
var barCodeInput = barCodeItem.childNodes[1].childNodes[1];
barCodeInput.value = result;
var idNumber = materialId.name.split("mid")[1];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
var unitList = data["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
}
form.render();
} else {
// 如果没有对应关系
layer.msg("对于编码:" + result + ",并未发现对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
})
}
}
})
}
})
};
// 用于扫码功能
scanCodeForMaterial = function (obj) {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
$.ajax({
url: "/material/qywxApplicationInScanQrCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var MaterialChildren = parent.childNodes[5];
var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes;
var barCodeChildren = parent.childNodes[9];
var materialName = materialItem[1];
var materialId = materialName.parentNode.parentNode.childNodes[3];
// 条形码条码
var barCodeItem = barCodeChildren.childNodes[3];
// 物料编码
var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes;
var materialCode = materialCodeItem[1];
var idNumber = materialId.name.split("mid")[1];
// 获取物料与条形码的对应关系
var materialAndBarCodeList = data["materialAndBarCodeList"];
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
}
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
var barCodeInput = barCodeItem.childNodes[1].childNodes[1];
var barCodeImg = barCodeItem.childNodes[1].childNodes[3];
var id = barCodeInput.id;
$("#" + id).remove();
$("#barCode" + idNumber).empty();
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
} else {
var barCodeSelect = `
<select id=` + "barCode" + idNumber + ` name=` + "barCode" + idNumber + `>
</select>`;
$("#" + barCodeImg.id).before(barCodeSelect);
}
form.render();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
}
$('#place' + idNumber).empty();
$.each(data.placePList, function (index, item) {
$('#place' + idNumber).append(new Option(item.depositoryName + "-" + item.code, item.id));//往下拉菜单里添加元素
});
$("#unit"+idNumber).empty();
$("#unit"+idNumber).append(new Option(data.unit,"-1"));
$.each(data.splitInfoList,function (index,item) {
$("#unit"+idNumber).append(new Option(item.newUnit,item.newUnit));
});
form.render();
materialName.value = data.mname;
materialId.value = data.id;
materialCode.value = data.code;
}
})
}
})
};
// 用于实现点击搜索按钮
selectMaterial = function (obj) {
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[1].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var mname = materialName.value;
var barCodeChildren = parent.childNodes[9];
// 条形码条码
var barCodeItem = barCodeChildren.childNodes[3];
mname = mname.split(",")[0];
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
// content: '/selectMaterialByCard?mname=' + mname + '&type=2&clickObj=' + parentId,
content: '/getMaterialAll?mname=' + mname + '&type=1&clickObj=' + parentId,
move: '.layui-layer-title',
fixed: false,
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
},
end: function () {
var mid = materialId.value;
if(mid !== '') {
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var material = d.data.materialById;
var code = material.code;
if (code === undefined) {
code = "";
}
codeValue.value = code;
var materialAndBarCodeList = material["materialAndBarCodeList"];
var idNumber = materialId.name.split("mid")[1];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
}
form.render();
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
var barCodeInput = barCodeItem.childNodes[1].childNodes[1];
var barCodeImg = barCodeItem.childNodes[1].childNodes[3];
var id = barCodeInput.id;
$("#" + id).remove();
$("#barCode" + idNumber).empty();
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
} else {
var barCodeSelect = `
<select id=` + "barCode" + idNumber + ` name=` + "barCode" + idNumber + `>
</select>`;
$("#" + barCodeImg.id).before(barCodeSelect);
}
form.render();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
} else {
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
}
}
form.render();
}
});
}
}
});
};
// 用于实现通过编码查询物料
selectCode = function (obj) {
// 输入code
var code = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var objId = parent.id.split("cardItem")[1];
var children = parent.childNodes[5];
var materialItem = children.childNodes[3].childNodes[1].childNodes;
var barCodeChildren = parent.childNodes[9];
var materialName = materialItem[1];
var materialId = materialName.parentNode.parentNode.childNodes[3];
// 条形码条码
var barCodeItem = barCodeChildren.childNodes[3];
var req = {};
req.code = code;
req.type = "in";
$.ajax({
url: "/material/findMatrialByCode",
type: "get",
dataType: 'json',
data: (req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("仓库中暂无该物料");
materialName.value = "";
materialId.value = "";
obj.value = "";
$('#place' + objId).empty();
} else {
materialName.value = d.mname;
materialId.value = d.id;
var idNumber = materialId.name.split("mid")[1];
// 获取物料与条形码的对应关系
var materialAndBarCodeList = d["materialAndBarCodeList"];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(d.unit, "-1"));
var unitList = d["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
}
form.render();
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
var barCodeInput = barCodeItem.childNodes[1].childNodes[1];
var barCodeImg = barCodeItem.childNodes[1].childNodes[3];
var id = barCodeInput.id;
$("#" + id).remove();
$("#barCode" + idNumber).empty();
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
} else {
var barCodeSelect = `
<select id=` + "barCode" + idNumber + ` name=` + "barCode" + idNumber + `>
</select>`;
$("#" + barCodeImg.id).before(barCodeSelect);
}
form.render();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
} else {
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
}
}
}
}
});
};
//用于实现物料名称搜索
selectMaterialByName = function (obj) {
var data = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var materialChildren = parent.childNodes[5];
var codeChildren = parent.childNodes[7];
var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var barCodeChildren = parent.childNodes[9];
// 条形码条码
var barCodeItem = barCodeChildren.childNodes[3];
var req = {};
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if (d.count > 1) {
layer.msg("请点击右侧搜索确定物品");
materialId.value = "";
codeValue.value = "";
return false;
} else if (d.count === 0) {
layer.msg("没有该物品,请确认输入是否正确");
materialId.value = "";
codeValue.value = "";
materialName.value = "";
return false;
} else {
var idNumber = materialId.name.split("mid")[1];
var material = d.data[0];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
var unitList = material["splitInfoList"];
if(unitList !== null && unitList != undefined){
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
}
form.render();
}
var materialAndBarCodeList = material["materialAndBarCodeList"];
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
var barCodeInput = barCodeItem.childNodes[1].childNodes[1];
var barCodeImg = barCodeItem.childNodes[1].childNodes[3];
var id = barCodeInput.id;
$("#" + id).remove();
$("#barCode" + idNumber).empty();
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
} else {
var barCodeSelect = `
<select id=` + "barCode" + idNumber + ` name=` + "barCode" + idNumber + `>
</select>`;
$("#" + barCodeImg.id).before(barCodeSelect);
}
form.render();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
} else {
var barCode = $("#barCode" + idNumber);
if (barCode.length > 0) {
barCode.empty();
}
}
materialName.value = material.mname;
materialId.value = material.id;
codeValue.value = material.code;
}
}
});
};
})
</script>
</body>
</html>

8
src/main/resources/templates/pages/material/selectPlaceByDepository.html

@ -14,6 +14,7 @@
<input id="quantity" name="quantity" th:value="${quantity}" style="display: none">
<input id="placeId" name="placeId" th:value="${placeId}" style="display: none">
<input id="mid" name="mid" th:value="${mid}" style="display: none">
<input id="unit" name="unit" th:value="${unit}" style="display: none">
<div id="test2" class="demo-tree"></div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
@ -27,7 +28,10 @@
var quantity = $("#quantity").val();
// 定义转移前的库位
var fromPlaceId = $("#placeId").val();
// 获取转移的物料
var mid = $("#mid").val();
// 获取转移的计量单位
var unit = $("#unit").val();
test = tree.render({
elem: '#test2'
,data: []
@ -78,7 +82,7 @@
value: quantity,
title: '请输入转移数量',
}, function (value, index, elem) {
if (value > quantity) {
if (Number(value) > Number(quantity)) {
layer.msg("非法值,重新输入!", {
icon: 0,
time: 500
@ -94,6 +98,8 @@
req.mid = mid;
req.fromPlaceId = fromPlaceId;
req.toPlaceId = placeId;
req.unit = unit;
req.depositoryId = depositoryId;
$.ajax({
url:"/material/editPlaceMaterial",
type: 'post',

20
target/classes/com/dreamchaser/depository_manage/mapper/GroupMapper.xml

@ -15,11 +15,13 @@
<result column="tname" property="tname" jdbcType="VARCHAR"/>
<result column="mcode" property="mcode" jdbcType="VARCHAR"/>
<result column="version" property="version" jdbcType="VARCHAR"/>
<result column="munit" property="munit" jdbcType="VARCHAR"/>
<result column="unit" property="unit" jdbcType="VARCHAR"/>
<result column="texture" property="texture" jdbcType="VARCHAR"/>
<result column="productionPlace" property="productionPlace" jdbcType="VARCHAR"/>
<result column="brand" property="brand" jdbcType="VARCHAR"/>
<result column="remark" property="remark" jdbcType="VARCHAR"/>
<result column="mremark" property="mremark" jdbcType="VARCHAR"/>
<result column="gremark" property="gremark" jdbcType="VARCHAR"/>
<result column="gname" property="gname" jdbcType="VARCHAR"/>
<result column="createTime" property="createTime" jdbcType="INTEGER"/>
<result column="gstate" property="gstate" jdbcType="INTEGER"/>
@ -40,11 +42,13 @@
<result column="mid" property="mid" jdbcType="INTEGER"/>
<result column="gid" property="gid" jdbcType="INTEGER"/>
<result column="quantity" property="quantity" jdbcType="INTEGER"/>
<result column="unit" property="unit" jdbcType="VARCHAR"/>
</resultMap>
<!-- 用于视图-->
<sql id="allColumnsForView">
id,mid,gid,quantity,mtid,shelfLife,gcode,mname,tname,mcode,version,unit,texture,productionPlace,brand,remark,createTime,gstate,gname
id,mid,gid,quantity,mtid,shelfLife,gcode,mname,tname,mcode,version,munit,texture,productionPlace,brand,mremark,createTime,gstate,gname,unit,gremark
</sql>
<!-- 用于组合-->
@ -54,7 +58,7 @@
<!-- 用于物料对于组合的映射-->
<sql id="allColumnsForMaterialForGroup">
id,mid,gid,quantity
id,mid,gid,quantity,unit
</sql>
@ -148,12 +152,13 @@
<insert id="addGroupForMaterial">
INSERT INTO groupformaterial (
id, mid, gid, quantity
id, mid, gid, quantity,unit
) VALUES (
#{id},
#{mid},
#{gid},
#{quantity}
#{quantity},
#{unit}
)
</insert>
@ -310,7 +315,10 @@
mid = #{mid},
</if>
<if test="quantity != null and quantity != ''">
quantity = #{quantity}
quantity = #{quantity},
</if>
<if test="unit != null">
unit = #{unit}
</if>
</set>
where id = #{id}

13
target/classes/templates/pages/depository/table-stock.html

@ -76,6 +76,7 @@
id="btn_{{d.id}}" value="{{d.unit}}">{{d.unit}}
</button>
</script>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
@ -150,7 +151,7 @@
{field: 'quantity', width: 200, title: '数量'},
{field: 'depositoryName', width: 200, title: '仓库名称'},
{field: 'depositoryCode', width: 200, title: '仓库编码'},
{title: '所处库位', width: 200, templet: '#selectManager', align: "center"},
{title: '所处库位', width: 200, templet: '#changePlace', align: "center"},
{field: 'warningCount', width: 200, title: '待过期数量', sort: true},
{field: 'price', title: '单价', width: 200, sort: true},
{field: 'amounts', title: '总金额', width: 200, sort: true},
@ -387,6 +388,14 @@
var depositoryId = obj.value;
var placeCode = obj.innerText;
var mid = obj.id;
// 当前点击行中的计量单位按钮
let unitBtn = obj.parentNode.parentNode.parentNode.childNodes[5].childNodes[0].childNodes[1];
let unit = unitBtn.innerText;
let click_num = Number(unitBtn.getAttribute("click_num"));
if(click_num === 0){
unit = "-1";
}
var index = layer.open({
title: '选择库位',
type: 2,
@ -394,7 +403,7 @@
maxmin: true,
shadeClose: true,
area: ['70%', '70%'],
content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode,
content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode+'&unit='+unit,
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);

12
target/classes/templates/pages/material/selectPlaceByDepository.html

@ -14,16 +14,24 @@
<input id="quantity" name="quantity" th:value="${quantity}" style="display: none">
<input id="placeId" name="placeId" th:value="${placeId}" style="display: none">
<input id="mid" name="mid" th:value="${mid}" style="display: none">
<input id="unit" name="unit" th:value="${unit}" style="display: none">
<div id="test2" class="demo-tree"></div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery,
tree = layui.tree;
// 获取当前仓库
var depositoryId = $("#depositoryId").val();
// 当前库存总数
var quantity = $("#quantity").val();
// 定义转移前的库位
var fromPlaceId = $("#placeId").val();
// 获取转移的物料
var mid = $("#mid").val();
// 获取转移的计量单位
var unit = $("#unit").val();
test = tree.render({
elem: '#test2'
,data: []
@ -74,7 +82,7 @@
value: quantity,
title: '请输入转移数量',
}, function (value, index, elem) {
if (value > quantity) {
if (Number(value) > Number(quantity)) {
layer.msg("非法值,重新输入!", {
icon: 0,
time: 500
@ -90,6 +98,8 @@
req.mid = mid;
req.fromPlaceId = fromPlaceId;
req.toPlaceId = placeId;
req.unit = unit;
req.depositoryId = depositoryId;
$.ajax({
url:"/material/editPlaceMaterial",
type: 'post',

Loading…
Cancel
Save