Browse Source

完成组合入库功能

lwx_dev
erdanergou 3 years ago
parent
commit
6c198a7763
  1. 16
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  2. 58
      src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java
  3. 4
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  4. 19
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  5. 9
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  6. 1
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  7. 11
      src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java
  8. 1
      src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java
  9. 9
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java
  10. 7
      src/main/java/com/dreamchaser/depository_manage/service/GroupService.java
  11. 118
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  12. 133
      src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java
  13. 5
      src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java
  14. 771
      src/main/resources/templates/pages/application/application-in.html
  15. 3
      src/main/resources/templates/pages/application/application-out.html
  16. 181
      src/main/resources/templates/pages/application/form-step-look_group.html
  17. 3
      src/main/resources/templates/pages/depository/table-in.html
  18. 14
      src/main/resources/templates/pages/material/selectDepositoryByCard.html
  19. 8
      src/main/resources/templates/pages/scanQrCode/ScanBarOrQrCodeOut.html
  20. 132
      src/main/resources/templates/pages/split/split_add.html
  21. 9
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  22. 771
      target/classes/templates/pages/application/application-in.html
  23. 3
      target/classes/templates/pages/application/application-out.html
  24. 2
      target/classes/templates/pages/application/application-out_min-mobile.html
  25. 4
      target/classes/templates/pages/application/form-step-look_minRecordOut.html
  26. 3
      target/classes/templates/pages/depository/table-in.html
  27. 14
      target/classes/templates/pages/material/selectDepositoryByCard.html
  28. 8
      target/classes/templates/pages/scanQrCode/ScanBarOrQrCodeOut.html

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

@ -52,16 +52,16 @@ public class DepositoryRecordController {
map.put("applicantId", userToken.getId());
List<ApplicationInRecordP> applicationInRecordPlist = depositoryRecordService.findApplicationInRecordPByCondition(map, request);
Integer InCount = depositoryRecordService.findApplicationInRecordPCountByCondition(map);
for (int i = 0; i < applicationInRecordPlist.size(); i++) {
if (applicationInRecordPlist.get(i).getPrice() != null) {
applicationInRecordPlist.get(i).setPrice(applicationInRecordPlist.get(i).getPrice() / 100);
for (ApplicationInRecordP applicationInRecordP : applicationInRecordPlist) {
if (applicationInRecordP.getPrice() != null) {
applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100);
}
}
List<ApplicationOutRecordP> applicationOutRecordPlist = depositoryRecordService.findApplicationOutRecordPByCondition(map, request);
Integer OutCount = depositoryRecordService.findApplicationOutRecordPCountByCondition(map);
for (int i = 0; i < applicationOutRecordPlist.size(); i++) {
if (applicationOutRecordPlist.get(i).getPrice() != null) {
applicationOutRecordPlist.get(i).setPrice(applicationOutRecordPlist.get(i).getPrice() / 100);
for (ApplicationOutRecordP recordP : applicationOutRecordPlist) {
if (recordP.getPrice() != null) {
recordP.setPrice(recordP.getPrice() / 100);
}
}
Map<String, Object> result = new HashMap<>();
@ -461,8 +461,8 @@ public class DepositoryRecordController {
@GetMapping("/applicationInView")
public RestResponse findApplicationInRecordByCondition(@RequestParam Map<String, Object> map, HttpServletRequest request) {
List<ApplicationInRecordP> list = depositoryRecordService.findApplicationInRecordPByCondition(map, request);
for (int i = 0; i < list.size(); i++) {
list.get(i).setPrice(list.get(i).getPrice() / 100);
for (ApplicationInRecordP applicationInRecordP : list) {
applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100);
}
return new RestResponse(list, depositoryRecordService.findApplicationInRecordPCountByCondition(map), 200);
}

58
src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java

@ -58,7 +58,27 @@ public class GroupController {
return CrudUtil.postHandle(len, integer);
}
@PostMapping("/findGroupByCodeForIn")
public RestResponse findGroupByCodeForIn (@RequestBody Map<String, Object> map, HttpServletRequest request) {
String code = map.get("code").toString();
// 获取组合编码
Group groupByCode = groupService.findGroupByCode(code);
if (groupByCode != null) {
List<GroupInfo> groupByGid = groupService.findGroupInfoByGid(groupByCode.getId());
return new RestResponse(groupByGid);
}else{
return new RestResponse(null, 666, new StatusInfo("失败", "暂无该组合,请确认是否正确"));
}
}
/**
* 用于出库时查找对应编码的组合
* @param map 查询条件
* @param request
* @return
*/
@PostMapping("/findGroupByCode")
public RestResponse findGroupByCode(@RequestBody Map<String, Object> map, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
@ -449,6 +469,44 @@ public class GroupController {
}
/**
* 用于构造组合入库单
* @param map 入库数据
* @param request
* @return
*/
@PostMapping("/applicationInForGroup")
public RestResponse applicationInForGroup(@RequestBody Map<String, Object> map, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
String header = request.getHeader("user-agent");
String crypt = Md5.crypt(header);
// 获取当前提交数
List<String> params = (List<String>) map.get("params");
// 执行结果
Integer integer = 0;
// 实际结果
Integer result = 0;
Integer gid = ObjectFormatUtil.toInteger(map.get("gid"));
List<GroupInfo> groupInfoByGid = groupService.findGroupInfoByGid(gid);
if (groupInfoByGid != null) {
result += groupInfoByGid.size();
}
for (String param : params) {
gid = ObjectFormatUtil.toInteger(map.get("gid" + param));
groupInfoByGid = groupService.findGroupInfoByGid(gid);
if (groupInfoByGid != null) {
result += groupInfoByGid.size();
}
}
try {
integer += groupService.insertApplicationInRecord(map, userToken); // 插入主订单
} catch (Exception e) {
return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage()));
}
return CrudUtil.putHandle(result,integer);
}
/**
* 用于构造组合出库单
* @param map 出库数据

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

@ -768,6 +768,7 @@ public class MaterialController {
String mcode = materialService.findMaterialCodeByQrCode(qrCode);
// 根据物料编码获取物料
Material material = materialService.findMaterialByCode(mcode);
if(material != null) {
Map<String, Object> param = new HashMap<>();
List<PlaceP> placePList = new ArrayList<>();
param.put("mcode", mcode);
@ -802,6 +803,9 @@ public class MaterialController {
mp.setSplitInfoList(splitInfoByMid);
return new RestResponse(mp);
}
}else{
return new RestResponse(null);
}
}

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

@ -528,13 +528,14 @@ public class PageController {
// 专用于卡片仓库树形菜单页面
@GetMapping("/selectDepositoryByCard")
public ModelAndView selectDepositoryByCard(Integer type, String clickObj, HttpServletRequest request) {
public ModelAndView selectDepositoryByCard(Integer type, String clickObj, @RequestParam(value = "flagForGroup", required = false) boolean flagForGroup, HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
if (type == 1) {
Integer maindeparment = userToken.getMaindeparment();
mv.addObject("adminorg", maindeparment);
mv.addObject("clickObj", clickObj);
mv.addObject("flagForGroup", flagForGroup);
}
mv.setViewName("pages/material/selectDepositoryByCard");
return mv;
@ -1327,17 +1328,31 @@ public class PageController {
}
@GetMapping("/form_step_look")
public ModelAndView form_step_look(Integer id, HttpServletRequest request) {
public ModelAndView form_step_look(Integer id, Integer flagForGroup, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/application/form-step-look");
if (id != null) {
ApplicationInRecordP applicationInRecordPById = depositoryRecordService.findApplicationInRecordPById(id);
if (Integer.compare(flagForGroup, 2) != 0) {
// 如果不是组合
UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationInRecordPById.getApplicantId(), userToken);
applicationInRecordPById.setApplicantName(userByPort.getName());
applicationInRecordPById.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordPById.getApplicantTime())));
applicationInRecordPById.setPrice(applicationInRecordPById.getPrice() / 100);
mv.addObject("record", applicationInRecordPById);
} else {
// 如果是组合
// 获取组合数据
Group group = groupService.findGroupOnlyById(applicationInRecordPById.getMid());
// 获取组合详情数据
List<GroupInfo> groupInfoList = groupService.findGroupInfoByGid(applicationInRecordPById.getMid());
mv.addObject("group",group);
mv.addObject("groupInfoList",groupInfoList);
mv.addObject("record", applicationInRecordPById);
mv.setViewName("pages/application/form-step-look_group");
}
} else {
throw new MyException("缺少必要参数!");
}

9
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -48,6 +48,8 @@
<id column="airid" property="id" jdbcType="INTEGER" />
<result column="mname" property="mname" jdbcType="VARCHAR" />
<result column="quantity" property="quantity" jdbcType="INTEGER" />
<result column="mid" property="mid" jdbcType="INTEGER" />
<result column="flagForGroup" property="flagForGroup" jdbcType="INTEGER" />
<result column="price" property="price" jdbcType="VARCHAR" />
<result column="tname" property="materialTypeName" jdbcType="VARCHAR" />
<result column="applicantTime" property="applicant_time" jdbcType="INTEGER" />
@ -137,7 +139,7 @@
</sql>
<sql id="ApplicationInRecordInfo">
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit,flagForGroup,mid
</sql>
<sql id="ApplicationOutRecordInfo">
@ -626,7 +628,7 @@
<!-- 插入一条入库记录-->
<insert id="insertApplicationInRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id">
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit)
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit,flagForGroup)
values(
#{id},
#{mid},
@ -637,7 +639,8 @@
#{depositoryId},
#{code},
#{applyRemark},
#{unit}
#{unit},
#{flagForGroup}
)
</insert>

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

@ -25,6 +25,7 @@
<result column="productionPlace" property="productionPlace" jdbcType="VARCHAR"/>
<result column="brand" property="brand" jdbcType="VARCHAR"/>
<result column="remark" property="remark" jdbcType="VARCHAR"/>
<result column="tname" property="typeName" jdbcType="VARCHAR"/>
</resultMap>

11
src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java

@ -85,10 +85,19 @@ public class ApplicationInRecordP {
*/
private String mdepositoryCode;
/**
* 入库时选中的单位
*/
private String airUnit;
/**
* 1物料2组合
*/
private Integer flagForGroup;
/**
* 入库物料
*/
private Integer mid;
}

1
src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java

@ -210,6 +210,7 @@ public class MaterialP {
this.brand = material.getBrand(); // 品牌
this.remark = material.getRemark(); // 备注
this.shelfLifeForCalc = material.getShelfLife(); //保质期,用于计算
this.typeName = material.getTypeName(); // 物料类型
}
public MaterialP() {

9
src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java

@ -325,6 +325,15 @@ public interface DepositoryRecordService {
*/
Integer applicationInPlace(Map<String,Object> map);
/**
* 生成单号
*
* @param depositoryName
* @return
*/
String createCode(String depositoryName, String key, String type, String mainDeparmentName) ;
/**
* 将刚入库的记录删除
* @param map

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

@ -192,6 +192,13 @@ public interface GroupService {
*/
Integer insertApplicationOutRecord(Map<String,Object> map, UserByPort userToken);
/**
* 插入一条入库记录
* @param map 具体数据
* @return
*/
Integer insertApplicationInRecord(Map<String,Object> map, UserByPort userToken);
/**
* 根据组合编号获取组合具体信息

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

@ -67,6 +67,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
private SplitUnitService splitUnitService;
@Autowired
private GroupMapper groupMapper;
/**
* 提交申请插入一条仓库调度记录
*
@ -180,6 +184,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 将入库数量修改为realQuantity
map.put("quantity", map.get("realQuantity"));
}
if (!map.containsKey("flagForGroup")) {
// 如果不包含标志位.
map.put("flagForGroup", 1);
}
return depositoryRecordMapper.insertApplicationInRecord(map);
}
@ -481,44 +489,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return result;
}
/**
* 用于计算当前主记录下的总额与数量
*/
class CalcApplicationOutInfo implements Callable<Object> {
ApplicationOutRecordP mainRecord;
CalcApplicationOutInfo(ApplicationOutRecordP mainRecord) {
this.mainRecord = mainRecord;
}
@Override
public Object call() throws Exception {
Map<String, Object> result = new HashMap<>();
// 获取当前订单的子订单
List<ApplicationOutRecordMin> minList = depositoryRecordMapper.findApplicationOutRecordMinByParent(mainRecord.getId());
// 额度
Double price = 0.0;
// 数量
Integer count = 0;
for (int i = 0; i < minList.size(); i++) {
ApplicationOutRecordMin recordMin = minList.get(i);
count += recordMin.getQuantity();
// 获取当前出库物料
Inventory materialById = materialMapper.findInventoryById(recordMin.getMid());
// 计算当前出库金额
double price_out = materialById.getPrice() * recordMin.getQuantity();
BigDecimal bg = new BigDecimal(price_out / 100);
price_out = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
price += price_out;
}
result.put("count", count);
result.put("price", price);
return result;
}
}
/**
* 将物料入库到库位
*
@ -896,8 +866,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
restResponse.setData("");
restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足"));
}
}
else {
} else {
// 如果是拆单后的出库
// 用于获取对应的拆单记录
@ -1260,7 +1229,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return restResponse;
}
/**
* 用于有父级拆单记录的出库处理
*
@ -1513,7 +1481,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return restResponse;
}
/**
* 用于完成出库时的相关处理操作
*
@ -1810,8 +1777,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 将主订单插入到redis中
redisTemplate.opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString());
map.put("state", "仓储中心负责人审核通过");
}
else {
} else {
// 如果是不通过
updateInventoryForOutRefused(recordP);
map.put("depositoryManagerPass", 2);
@ -1928,9 +1894,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.insertApplicationOutRecordMin(map);
}
/**
* 用于修改拒绝了的出库订单中的库存记录
*
* @param recordP 拒绝的订单
*/
private void updateInventoryForOutRefused(ApplicationOutRecordP recordP) {
@ -2012,8 +1978,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}).start();*/
}
else {
} else {
// 如果没有通过
updateInventoryForOutRefused(record);
result = "驳回";
@ -2500,8 +2465,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
placeMapper.updateMaterialAndPlace(toMaterialAndPlace);
}
}
}
else {
} else {
// 如果是拆单单位
// 用于获取当前拆单记录
@ -2757,7 +2721,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 用于处理超出进制的拆单库存处理记录
*
@ -2822,7 +2785,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 根据id修改仓库调度记录
*
@ -2909,6 +2871,14 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
applicationInRecordP.setApplicantName(userByPortById.getName());
applicationInRecordP.setApplicantTime(time);
applicationInRecordP.setApplyRemark(applicationInRecordP.getApplyRemark() == null ? "" : applicationInRecordP.getApplyRemark());
if (Integer.compare(applicationInRecordP.getFlagForGroup(), 2) == 0) {
// 如果入库的是组合
Group group = groupMapper.findGroupOnlyById(applicationInRecordP.getMid());
applicationInRecordP.setMname(group.getGname());
applicationInRecordP.setAirUnit("");
applicationInRecordP.setMcode(group.getCode());
applicationInRecordP.setMversion("组合");
}
}
return list;
}
@ -3111,7 +3081,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return sum;
}
/**
* 计算物料总额
*
@ -3251,7 +3220,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
}
/**
* 获取一段时间内的入库额度
*
@ -3330,7 +3298,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return sumCount;
}
@Override
public Integer findMaterialCountByMonth2(Map<String, Object> map) {
Integer type = ObjectFormatUtil.toInteger(map.get("type"));
@ -3353,7 +3320,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return sumCount;
}
/**
* 查询仓库当天流水
*
@ -3397,7 +3363,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.deleteApplicationInRecordByIds(list);
}
/**
* 对查出来的记录进行包装包装成前端需要的数据
*
@ -3414,7 +3379,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return result;
}
/**
* 对查出来的记录进行包装包装成前端需要的数据
*
@ -3494,7 +3458,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
* @param depositoryName
* @return
*/
private String createCode(String depositoryName, String key, String type, String mainDeparmentName) {
public String createCode(String depositoryName, String key, String type, String mainDeparmentName) {
RLock lock = redissonClient.getLock(key);
// 入库单号(公司简称+仓库简称+年月日+数字(位数设置>=9))
String code = "GK";
@ -3552,7 +3516,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return false;
}
/**
* 判断当前id是否在ids中
*
@ -3570,4 +3533,41 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return false;
}
/**
* 用于计算当前主记录下的总额与数量
*/
class CalcApplicationOutInfo implements Callable<Object> {
ApplicationOutRecordP mainRecord;
CalcApplicationOutInfo(ApplicationOutRecordP mainRecord) {
this.mainRecord = mainRecord;
}
@Override
public Object call() throws Exception {
Map<String, Object> result = new HashMap<>();
// 获取当前订单的子订单
List<ApplicationOutRecordMin> minList = depositoryRecordMapper.findApplicationOutRecordMinByParent(mainRecord.getId());
// 额度
Double price = 0.0;
// 数量
Integer count = 0;
for (int i = 0; i < minList.size(); i++) {
ApplicationOutRecordMin recordMin = minList.get(i);
count += recordMin.getQuantity();
// 获取当前出库物料
Inventory materialById = materialMapper.findInventoryById(recordMin.getMid());
// 计算当前出库金额
double price_out = materialById.getPrice() * recordMin.getQuantity();
BigDecimal bg = new BigDecimal(price_out / 100);
price_out = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
price += price_out;
}
result.put("count", count);
result.put("price", price);
return result;
}
}
}

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

@ -5,6 +5,7 @@ import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.mapper.*;
import com.dreamchaser.depository_manage.pojo.GroupInfoP;
import com.dreamchaser.depository_manage.pojo.MaterialAndPlaceForView;
import com.dreamchaser.depository_manage.service.DepositoryRecordService;
import com.dreamchaser.depository_manage.service.GroupService;
import com.dreamchaser.depository_manage.service.SplitUnitService;
import com.dreamchaser.depository_manage.utils.DateUtil;
@ -32,6 +33,10 @@ public class GroupServiceImpl implements GroupService {
@Autowired
DepositoryRecordMapper depositoryRecordMapper;
@Autowired
DepositoryRecordService depositoryRecordService;
@Autowired
DepositoryMapper depositoryMapper;
@Autowired
@ -673,6 +678,134 @@ public class GroupServiceImpl implements GroupService {
return result;
}
/**
* 插入一条入库记录
* @param map 具体数据
* @return
*/
@Override
public Integer insertApplicationInRecord(Map<String, Object> map, UserByPort userToken) {
// 获取当前提交数
List<String> params = (List<String>) map.get("params");
// 用于存储申请数
Integer result = 0;
// 定义参数用与入库
Map<String,Object> insertForApplicationInRecord = new HashMap<>();
insertForApplicationInRecord.put("applicantId", userToken.getId());
// 循环参数列表
for (String temp : params) {
// 获取当前入库的组合数量
Integer quantityForGroup = ObjectFormatUtil.toInteger(map.get("quantity" + temp));
// 获取要出库的组合
Integer gid = ObjectFormatUtil.toInteger(map.get("gid"+temp));
// 获取要出库组合的具体信息
List<GroupInfo> groupInfoByGid = groupMapper.findGroupInfoByGid(gid);
// 获取入库的库位
Integer placeId = ObjectFormatUtil.toInteger(map.get("placeId" + temp));
// 获取入库的仓库
Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId" + temp));
insertForApplicationInRecord.put("depositoryId",depositoryId);
insertForApplicationInRecord.put("placeId",placeId);
insertForApplicationInRecord.put("price", String.valueOf(0));
insertForApplicationInRecord.put("applyRemark", map.get("applyRemark" + temp));
// 循环当前组合信息
for (GroupInfo groupInfo :
groupInfoByGid) {
// 获取当前组合记录中的单位
String unit = groupInfo.getUnit();
insertForApplicationInRecord.put("mid",groupInfo.getMid());
insertForApplicationInRecord.put("quantity",String.valueOf(groupInfo.getQuantity() * quantityForGroup));
insertForApplicationInRecord.put("code",groupInfo.getMcode());
if("-1".equals(unit)){
// 如果是基础单位
Material material = materialMapper.findMaterialById(groupInfo.getMid());
insertForApplicationInRecord.put("unit",material.getUnit());
result += depositoryRecordService.applicationInPlace(insertForApplicationInRecord);
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("id")));
}else{
insertForApplicationInRecord.put("unit",unit);
insertForApplicationInRecord.put("type","in");
result += splitUnitService.addSplitInventory(insertForApplicationInRecord);
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("applicationInId")));
insertForApplicationInRecord.remove("applicationInId");
}
}
insertForApplicationInRecord.put("flagForGroup",2);
insertForApplicationInRecord.put("quantity",quantityForGroup.toString());
insertForApplicationInRecord.put("mid",gid);
insertForApplicationInRecord.put("unit",-1);
Depository depository = depositoryMapper.findDepositoryById(depositoryId);
insertForApplicationInRecord.put("code",depositoryRecordService.createCode(depository.getDname(), "InOrderNumber", "in", ""));
insertForApplicationInRecord.put("applicant_time",System.currentTimeMillis());
depositoryRecordMapper.insertApplicationInRecord(insertForApplicationInRecord);
insertForApplicationInRecord.remove("id");
}
// 获取当前入库的组合数量
Integer quantityForGroup = ObjectFormatUtil.toInteger(map.get("quantity"));
// 获取要出库的组合
Integer gid = ObjectFormatUtil.toInteger(map.get("gid"));
// 获取要出库组合的具体信息
List<GroupInfo> groupInfoByGid = groupMapper.findGroupInfoByGid(gid);
// 获取入库的库位
Integer placeId = ObjectFormatUtil.toInteger(map.get("placeId"));
// 获取入库的仓库
Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId"));
insertForApplicationInRecord.put("depositoryId",depositoryId);
insertForApplicationInRecord.put("placeId",placeId);
insertForApplicationInRecord.put("applyRemark", map.get("applyRemark"));
// 循环当前组合信息
for (GroupInfo groupInfo :
groupInfoByGid) {
// 获取当前组合记录中的单位
String unit = groupInfo.getUnit();
insertForApplicationInRecord.put("mid",groupInfo.getMid());
insertForApplicationInRecord.put("quantity",String.valueOf(groupInfo.getQuantity() * quantityForGroup));
insertForApplicationInRecord.put("code",groupInfo.getMcode());
if("-1".equals(unit)){
// 如果是基础单位
insertForApplicationInRecord.put("price", String.valueOf(0));
Material material = materialMapper.findMaterialById(groupInfo.getMid());
insertForApplicationInRecord.put("unit",material.getUnit());
result += depositoryRecordService.applicationInPlace(insertForApplicationInRecord);
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("id")));
}else{
insertForApplicationInRecord.put("price", String.valueOf(0));
insertForApplicationInRecord.put("unit",unit);
insertForApplicationInRecord.put("type","in");
result += splitUnitService.addSplitInventory(insertForApplicationInRecord);
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("applicationInId")));
insertForApplicationInRecord.remove("applicationInId");
}
}
insertForApplicationInRecord.put("flagForGroup",2);
insertForApplicationInRecord.put("quantity",quantityForGroup.toString());
insertForApplicationInRecord.put("mid",gid);
insertForApplicationInRecord.put("unit",-1);
Depository depository = depositoryMapper.findDepositoryById(depositoryId);
insertForApplicationInRecord.put("code",depositoryRecordService.createCode(depository.getDname(), "InOrderNumber", "in", ""));
insertForApplicationInRecord.put("applicant_time",System.currentTimeMillis());
depositoryRecordMapper.insertApplicationInRecord(insertForApplicationInRecord);
return result;
}
/**
* 用于插入子出库订单
*

5
src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java

@ -201,6 +201,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1);
map.put("price", Double.toString(price));
depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id");
}
@ -236,6 +237,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1);
map.put("price", Double.toString(price));
result += depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id");
Map<String, Object> paramForInventoryToPlace = new HashMap<>();
paramForInventoryToPlace.put("mid", map.get("newInMid"));
@ -248,6 +250,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1);
map.put("price", Double.toString(price));
result += depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id");
}
}
@ -276,11 +279,13 @@ public class SplitUnitServiceImpl implements SplitUnitService {
// 先插入一条库存记录用于后续操作
map.put("quantity", "0");
depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id");
} else {
// 如果没有父级
depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id");
}
Map<String, Object> paramForInventoryToPlace = new HashMap<>();

771
src/main/resources/templates/pages/application/application-in.html

@ -46,6 +46,13 @@
<div class="layuimini-main">
<div class="layui-fluid">
<div class="layui-tab">
<ul class="layui-tab-title" style="text-align: center">
<li class="layui-this">物料入库</li>
<li class="layui-this">组合入库</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<!-- 入库申请提交-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; ">
<div carousel-item style="overflow: inherit">
@ -63,9 +70,11 @@
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input"
style="border-style: none"
id="openSonByMaterial" onblur="selectMaterialByName(this)"
id="openSonByMaterial"
onblur="selectMaterialByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline;"
<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"
@ -77,14 +86,18 @@
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="code" name="code" type="text" placeholder="请填写入物料编码" value=""
<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"
id="qrCodeImg"
style="margin-top: 10px" onclick="scanCodeInStorage(this)">
<input id="qrCode" name="qrCode" type="text" style="display:none;">
style="margin-top: 10px"
onclick="scanCodeInStorage(this)">
<input id="qrCode" name="qrCode" type="text"
style="display:none;">
</div>
</div>
</div>
@ -92,7 +105,8 @@
<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="请填写入条形编码"
<input id="barCode" name="barCode" type="text"
placeholder="请填写入条形编码"
value=""
class="layui-input"
style="border-style: none">
@ -102,7 +116,8 @@
</div>
</div>
</div>
<div class="layui-form-item" style="display: none" id="producedDateItem">
<div class="layui-form-item" style="display: none"
id="producedDateItem">
<label class="layui-form-label">生产日期:</label>
<div class="layui-input-block">
<input type="text" name="producedDate" id="producedDate"
@ -113,14 +128,17 @@
<div class="layui-form-item">
<label class="layui-form-label">物料单价:</label>
<div class="layui-input-block">
<input name="price" type="number" placeholder="请填写入物料单价" value="" id="price"
<input name="price" type="number" placeholder="请填写入物料单价"
value=""
id="price"
class="layui-input" lay-verify="number">
</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=""
<input name="quantity" type="number" placeholder="请填写入物料数量"
value=""
class="layui-input" lay-verify="number">
</div>
</div>
@ -144,11 +162,13 @@
<input type="text" name="depositoryId" class="layui-input"
id="depositoryId"
style="display: none" lay-verify="required"/>
<input type="text" name="placeId" class="layui-input" id="placeId"
<input type="text" name="placeId" class="layui-input"
id="placeId"
style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16"
id="scanLocation"
style="margin-top: 10px" onclick="scanLocationByQrCode(this)">
style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div>
</div>
</div>
@ -168,7 +188,8 @@
<!-- 提交按钮-->
<div class="layui-form-item" id="btn_sub">
<div class="layui-input-block" style="bottom: 15px;">
<button id="submitForm" class="layui-btn" lay-submit lay-filter="formStep"
<button id="submitForm" class="layui-btn" lay-submit
lay-filter="formStep"
style="margin-left: 15%">
&emsp;提交&emsp;
</button>
@ -195,6 +216,120 @@
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-carousel" id="stepForm2" lay-filter="stepForm2" style="margin: 0 auto;">
<div carousel-item style="overflow: inherit">
<div>
<form class="layui-form layui-form-pane" style="margin: 0 auto;max-width: 460px;">
<div class="layui-card" id="cardParentForGroup">
<div class="layui-card-body" id="cardItemForGroup">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItemForGroup(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="openGroupList" onblur="selectGroupByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search"
style="display: inline"
id="selectGroup" onclick="selectGroup(this)"></i>
</div>
<input type="text" name="gid" class="layui-input" id="gid"
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="gcode" name="code" type="text"
placeholder="请填写入组合编码"
value=""
onblur="selectCodeForGroup(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;display: none" onclick="scanCodeByOut(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">组合数量:</label>
<div class="layui-input-block">
<input type="number" name="quantity" class="layui-input" id="quantityForGroup"
required lay-verify="number" placeholder="请填写组合数量"/>
</div>
</div>
<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="selectDepository" readonly
onclick="selectDepositroy(this)"
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input"
id="did"
style="display: none" lay-verify="required"/>
<input type="text" name="placeId" class="layui-input"
id="pid"
style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16"
id="scanQrCodeForLocation"
style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<input name="applyRemark" placeholder="请填写相关原因及申请原因" value=""
class="layui-input"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline"
id="addItemForGroup"
onclick="addItemForGroup(this)"></i>
</div>
<!--提交按钮-->
<div class="layui-form-item" id="btn_sub2">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep2" type="button"
style="margin-bottom: 30px;margin-left: 15%">
&emsp;提交&emsp;
</button>
</div>
</div>
</div>
</form>
</div>
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div style="text-align: center;margin-top: 90px;">
<i class="layui-icon layui-circle"
style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i>
<div style="font-size: 24px;color: #333;font-weight: 500;margin-top: 30px;">
提交申请成功
</div>
</div>
<div style="text-align: center;margin-top: 50px;">
<button class="layui-btn next">再申请一次</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@ -225,6 +360,10 @@
function openDepositoryTree(obj) {
}
// 用于加载仓库菜单,用于组合
function selectDepositroy(object) {
}
// 用于扫码入库
function scanCodeInStorage(obj) {
}
@ -244,16 +383,47 @@
}
// 用于重新渲染页面(组合)
function CoverpageForGroup() {
}
// 用于组合名称查询
function selectGroupByName() {
}
// 用于点击搜索按钮(组合)
function selectGroup(obj) {
}
// 用于编码查询(用于组合)
function selectCodeForGroup(obj) {
}
// 实现卡片删除(组合)
function deleteItemForGroup(){
}
// 实现卡片添加(组合)
function addItemForGroup(){
}
// 用于暂存卡片个数
var params = [];
let scanValue = {};
// 用于卡片编号
var NewIdNumber = 1;
layui.use(['form', 'step', 'flow', 'laydate'], function () {
// 用于暂存卡片个数(组合)
var params2 = [];
layui.use(['form', 'step', 'flow', 'laydate','element'], function () {
var $ = layui.$,
form = layui.form,
laydate = layui.laydate,
element = layui.element,
step = layui.step;
// 用于分步表单加载
@ -268,6 +438,19 @@
title: '提交成功'
}]
});
step.render({
elem: '#stepForm2',
filter: 'stepForm2',
width: '100%', //设置容器宽度
height: '600px',
stepItems: [{
title: '填写信息'
}, {
title: '提交成功'
}]
});
// 用于提交操作
form.on('submit(formStep)', function (data) {
data = data.field;
@ -326,16 +509,46 @@
});
// 用于提交操作(组合)
form.on('submit(formStep2)', function (data) {
step.next('#stepForm');
return false;
data = data.field;
data.type = 1;
data.params = params2;
$.ajax({
url: "/group/applicationInForGroup",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(data),
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秒)
}, function () {
step.next('#stepForm2');
});
}
},
complete: function () {
layer.close(this.layerIndex);
}
});
});
$('.pre').click(function () {
step.pre('#stepForm');
step.pre('#stepForm2');
});
$('.next').click(function () {
step.next('#stepForm');
step.next('#stepForm2');
});
// 实现卡片添加
@ -948,6 +1161,33 @@
}
});
};
// 用于打开仓库树形菜单
selectDepositroy = function (obj) {
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectDepositoryByCard?type=1&flagForGroup=true&clickObj=' + parentId,
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
};
// 用于扫描入库位置
scanLocationByQrCode = function (obj) {
parent.wx.scanQRCode({
@ -995,6 +1235,507 @@
})
};
// 用于实现通过编码查询组合
selectCodeForGroup = function (obj) {
// 输入code
var code = obj.value;
// 获取搜索的对应卡片
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var pid = Number(parent.id.split("cardItemForGroup")[1]);
// 获取当前卡片中的组合名称等
let gnameParent = parent.childNodes[5].childNodes[3];
// gid
let gidItem = gnameParent.childNodes[3];
// gname
let gnameItem = gnameParent.childNodes[1].childNodes[1];
let req = {};
req.code = code;
$.ajax({
url: "/group/findGroupByCodeForIn",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
layer.msg(d.statusInfo.detail, {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gnameItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
})
} else {
let childNodes = parent.childNodes;
if (childNodes.length > 9) {
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
// 赋值给gname
gnameItem.value = data[0].gname;
gidItem.value = data[0].gid;
for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]);
}
element.init();
}
}
});
};
// 用于实现点击搜索按钮(组合)
selectGroup = function(obj){
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
// 获取对应元素
var pid = Number(parent.id.split("cardItemForGroup")[1]);
// 获取当前卡片中的组合名称等
let gnameParent = parent.childNodes[5].childNodes[3];
// 组合编码
let gcodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes[1];
// gid
let gidItem = gnameParent.childNodes[3];
// gname
let gnameItem = gnameParent.childNodes[1].childNodes[1];
let gname = gnameItem.value;
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
content: '/selectGroup?gname=' + gname + '&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 () {
let gid = gidItem.value;
if(gid !== ''){
let req = {};
req.gid = gid;
$.ajax({
url: "/group/findGroupInfoByGid",
data: JSON.stringify(req),
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
layer.msg(d.statusInfo.detail, {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gnameItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
})
} else {
let childNodes = parent.childNodes;
if (childNodes.length > 9) {
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
// 赋值给gname
gcodeItem.value = data[0].gcode;
for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]);
}
element.init();
}
}
})
}
}
})
};
// 用于实现组合名称搜索
selectGroupByName = function(obj){
let gname = obj.value;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
// 获取对应元素
var pid = Number(parent.id.split("cardItemForGroup")[1]);
// 获取当前卡片中的组合名称等
let gnameParent = parent.childNodes[5].childNodes[3];
// 组合编码
let gcodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes[1];
// gid
let gidItem = gnameParent.childNodes[3];
if(gname !== ''){
var req = {};
req.gname = gname;
$.ajax({
url: "/group/findGroupByGname",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count === -1){
// 如果当前组合名称的数量不止一个
layer.msg("请点击右侧搜索确定物品", {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gcodeItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
});
}else if(d.count === 0){
// 如果当前组合名称不存在
layer.msg("没有该组合,请确认输入是否正确", {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gcodeItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
});
}else{
// 正常
let data = d.data;
let childNodes = parent.childNodes;
if (childNodes.length > 9) {
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
// 赋值给gname
gidItem.value = data[0].gid;
gcodeItem.value = data[0].gcode;
for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]);
}
element.init();
}
}
})
}
else{
gcodeItem.value = '';
gidItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
};
// 用于扫码功能
scanCodeByOut = 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/qywxApplicationOutScanQrCode",
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;
}
})
}
})
};
// 实现卡片删除(组合)
deleteItemForGroup = function (obj) {
// 获取父节点
var parent = obj.parentNode;
var parentId = parent.id;
parentId = parseInt(parentId.split("cardItemForGroup")[1]);
// 获取祖父节点
var reparent = parent.parentNode;
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
$("#stepForm2").css("height", height - 344 + 'px');
params2 = remove(params2, parentId);
reparent.removeChild(parent);
};
// 实现卡片添加(组合)
addItemForGroup = function (obj) {
var parentId = obj.parentNode.id;
NewIdNumber = NewIdNumber + 1;
var materialItem = `
<div class="layui-card-body" id=` + "cardItemForGroup" + NewIdNumber + `>
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItemForGroup(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=`+"openGroupList"+NewIdNumber+` onblur="selectGroupByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search"
style="display: inline"
id=`+"selectGroup"+NewIdNumber+` onclick="selectGroup(this)"></i>
</div>
<input type="text" name=`+"gid"+NewIdNumber+` class="layui-input" id=`+"gid"+NewIdNumber+`
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=` + "gcode" + ` name=` + "code" + NewIdNumber + ` type="text" placeholder="请填写入组合编码" value=""
onblur="selectCodeForGroup(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;display: none" onclick="scanCodeByOut(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">组合数量:</label>
<div class="layui-input-block">
<input type="number" name=`+"quantity"+NewIdNumber+` class="layui-input" id=`+"quantityForGroup"+NewIdNumber+`
required lay-verify="number" placeholder="请填写组合数量"/>
</div>
</div>
<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=`+"selectDepository"+NewIdNumber+` readonly
onclick="selectDepositroy(this)"
lay-verify="required"/>
<input type="text" name=`+"depositoryId"+NewIdNumber+` class="layui-input"
id=`+"did"+NewIdNumber+`
style="display: none" lay-verify="required"/>
<input type="text" name=`+"placeId"+NewIdNumber+` class="layui-input"
id=`+"pid"+`
style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16"
id=`+"scanQrCodeForLocation"+NewIdNumber+`
style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<input name=`+"applyRemark"+NewIdNumber+` placeholder="请填写相关原因及申请原因" value=""
class="layui-input"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline" id=` + "addItemForGroup" + NewIdNumber + `
onclick="addItemForGroup(this)"></i>
</div>
`;
// 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
params2.push(NewIdNumber);
$("#stepForm2").css("height", height + 344 + 'px');
$("#" + parentId).after(materialItem);
};
// 用于重新渲染页面(组合)
CoverpageForGroup = function (num, obj) {
// 获取待添加父类
NewIdNumber = num;
if (num === 0) { // 如果是第一个
NewIdNumber = "";
}
var materialItem = `
<div class="layui-collapse">
<div class="layui-colla-item">
<h2 class="layui-colla-title"">${obj.mname}</h2>
<div class="layui-colla-content">
<div class="layui-form-item">
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写入物料编码" value="${obj.mcode}"
readonly
class="layui-input" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料数量:</label>
<div class="layui-input-block">
<input type="number" placeholder="请填写入物料数量" value="${obj.quantity}"
readonly
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">
<input type="text" placeholder="请填写入物料型号" value="${obj.version === null ? '' : obj.version}"
readonly
class="layui-input" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料类型:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写入物料类型" value="${obj.tname}"
readonly
class="layui-input" lay-verify="text" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写入物料计量单位" value="${obj.showUnit === null ? '' : obj.showUnit}"
readonly
class="layui-input" lay-verify="text" required>
</div>
</div>
</div>
</div>
</div>
`; // 最终
// 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
$("#stepForm2").css("height", height + 183 + 'px');
$("#" + "addItemForGroup" + NewIdNumber).before(materialItem);
};
form.on('select()', function (data) {
let elem = data.elem; //得到select原始DOM对象
let elemId = elem.id;

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

@ -699,9 +699,6 @@
// 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
if (NewIdNumber !== "") {
params2.push(NewIdNumber)
}
$("#stepForm2").css("height", height + 183 + 'px');
$("#" + "addItemForGroup" + NewIdNumber).before(materialItem);

181
src/main/resources/templates/pages/application/form-step-look_group.html

@ -0,0 +1,181 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>组合</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">
<link rel="stylesheet" href="/static/js/lay-module/step-lay/step.css" media="all">
<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;
}
</style>
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<div>
<fieldset class="table-search-fieldset">
<legend>组合入库</legend>
<div class="layui-fluid">
<div class="layui-card">
<form class="layui-form"
style="margin: 0 auto;max-width: 700px;"
lay-filter="form1" id="form1">
<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">
<input type="text" name="gname" class="layui-input" id="gname"
th:value="${group.getGname()}" readonly
lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">组合编码:</label>
<div class="layui-input-block">
<input type="text" id="gcode" name="gcode"
th:value="${group.getCode()}" readonly
class="layui-input" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">入库数量:</label>
<div class="layui-input-block">
<input type="text" id="quantity" name="quantity"
th:value="${record.getQuantity()}"
class="layui-input" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注:</label>
<div class="layui-input-block">
<input type="text" id="remark" name="remark"
th:value="${record.getApplyRemark()}"
class="layui-input" lay-verify="required"/>
</div>
</div>
</div>
<fieldset class="table-search-fieldset">
<legend>组合明细</legend>
<div class="layui-card-body" id="InventoryDetails" style="padding-right: 0px">
<hr>
<div class="layui-collapse" lay-accordion>
<div class="layui-colla-item"
th:each="groupInfo,iterStar:${groupInfoList}">
<h2 class="layui-colla-title"
th:text="${groupInfo.getMname()}"></h2>
<div class="layui-colla-content">
<div class="layui-form-item">
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请填写入物料编码"
th:value="${groupInfo.getMcode()}"
class="layui-input" lay-verify="required"
style="border-style: none">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料类型:</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择物料类型"
class="layui-input"
th:value="${groupInfo.getTname()}"
readonly
lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料数量:</label>
<div class="layui-input-block">
<input type="text"
class="layui-input"
th:value="${groupInfo.getQuantity()}"
readonly
lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材质:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写材质名称"
class="layui-input"
th:value="${groupInfo.getTexture()}"
/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">规格型号:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写规格型号"
class="layui-input"
th:value="${groupInfo.getVersion()}"
/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写计量单位"
class="layui-input"
th:value="${groupInfo.getShowUnit()}"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</form>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
layui.use(['form', 'flow', 'step', 'element'], function () {
var $ = layui.$,
step = layui.step,
element = layui.element,
form = layui.form;
})
</script>
</body>
</html>

3
src/main/resources/templates/pages/depository/table-in.html

@ -257,7 +257,6 @@
table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data;
if (obj.event === 'detail') {
var index = layer.open({
title: '入库信息详情',
@ -266,7 +265,7 @@
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/form_step_look?id=' + data.id,
content: '/form_step_look?id=' + data.id+'&flagForGroup='+data.flagForGroup,
});
$(window).on("resize", function () {
layer.full(index);

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

@ -12,6 +12,7 @@
<body>
<input id="adminorg" name="adminorg" th:value="${adminorg}" style="display: none">
<input id="clickObj" name="clickObj" th:value="${clickObj}" style="display: none">
<input id="flagForGroup" name="flagForGroup" th:value="${flagForGroup}" 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>
@ -23,6 +24,7 @@
tree = layui.tree;
var adminorg = $("#adminorg").val();
var clickObj = $("#clickObj").val();
var flagForGroup = $("#flagForGroup").val();
test = tree.render({
elem: '#test2'
, data: []
@ -40,11 +42,21 @@
}
var windowParent = $("#" + clickObj, window.parent.document)[0];
var depositoryChildren = null;
if("false" === flagForGroup){
if (windowParent.childNodes.length === 25) {
// 入库
depositoryChildren = windowParent.childNodes[19];
} else {
} else if(windowParent.childNodes.length === 23){
// 库存转移
depositoryChildren = windowParent.childNodes[17];
} else if(windowParent.childNodes.length === 21){
// 物料查询跳转入库
depositoryChildren = windowParent.childNodes[15];
}
}else{
depositoryChildren = windowParent.childNodes[11];
}
var depositoryItem = depositoryChildren.childNodes[3].childNodes[1].childNodes;
var depositoryName = depositoryItem[1];
var depositoryId = depositoryItem[3];

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

@ -54,11 +54,7 @@
var barCode = null;
layui.$(function () {
var result = "1610140012736978944";//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
outboundLogic(req);
/* parent.parent.parent.wx.scanQRCode({
parent.parent.parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
@ -77,7 +73,7 @@
}
});*/
});
});

132
src/main/resources/templates/pages/split/split_add.html

@ -38,6 +38,10 @@
width: 100%;
}
.layui-unselect {
border-right: none
}
</style>
<div class="layuimini-container">
<div class="layuimini-main">
@ -86,10 +90,10 @@
<label class="layui-form-label">条形编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="barCode" name="barCode" type="text" readonly
value=""
<select id="barCode" name="barCode" type="text" readonly
class="layui-input"
style="border-style: none">
style="border-style: none;">
</select>
<img src="/static/images/search.ico" height="16" width="16"
id="barCodeImg"
style="margin-top: 10px" onclick="scanBarCode(this)">
@ -220,7 +224,7 @@
// 通过名称查询物料
selectMaterialByName = function (obj) {
let materialName = $("#mname");
var data = materialName.val();
var data = materialName.val().split(",")[0];
var req = {};
req.mname = data;
let materialId = $("#mid");
@ -259,7 +263,7 @@
codeValue.val(material.code);
version.val(material.version);
typeName.val(material.typeName);
unit.empty();
unit.append(new Option(material.unit, material.unit));
var splitInfoList = material["splitInfoList"];
$.each(splitInfoList, function (index, item) {
@ -271,21 +275,13 @@
if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$("#barCode").remove();
var barCodeSelect = `
<select id="barCode" name= "barCode"></select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$("#barCode").empty();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
} else {
let children = $("#barCode").parent().children();
if(children.length > 2){
$("#barCode").empty();
$(children[1]).empty();
}
}
}
}
@ -329,10 +325,12 @@
}
$("#code").val(code);
$("#version").val(material.version);
$("#unit").append(new Option(material.unit,material.unit));
let unit = $("#unit");
unit.empty();
unit.append(new Option(material.unit, material.unit));
var splitInfoList = material["splitInfoList"];
$.each(splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
unit.append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
});
form.render();
$("#typeName").val(material.typeName);
@ -340,21 +338,14 @@
if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$("#barCode").remove();
var barCodeSelect = `
<select id="barCode" name= "barCode"></select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$("#barCode").empty()
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
} else {
let children = $("#barCode").parent().children();
if(children.length > 2){
$("#barCode").empty();
$(children[1]).empty();
}
}
}
});
@ -365,8 +356,7 @@
});
};
scanCodeInStorage = function (obj) {
var objIdNumber = obj.id.split("qrCodeImg")[1];
scanCode = function (obj) {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
@ -376,7 +366,6 @@
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
$("#qrCode" + objIdNumber).val(result);
$.ajax({
url: "/material/qywxApplicationInScanQrCode",
type: "post",
@ -384,7 +373,56 @@
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
// 如果没有对应关系
layer.msg("对于编码:" + result + ",并未发现对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
$("#mname").val("");
$("#code").val("");
$("#mid").val("");
$("#typeName").val("");
$("#version").val("");
$("#barCode").empty();
$("#unit").empty();
})
} else {
// 如果有对应关系
$("#mname").val(data.mname);
$("#mid").val(data.mid);
$("#code").val(data.code);
$("#version").val(data.version);
$("#typeName").val(data.typeName);
let barCode = $("#barCode");
barCode.empty();
var materialAndBarCodeList = data["materialAndBarCodeList"];
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$.each(materialAndBarCodeList, function (index, item) {
barCode.append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
}
var shelfLife = data.shelfLife;
if (shelfLife !== null && shelfLife !== undefined) {
$("#producedDateItem").show();
$("#producedDate").attr("lay-verify", "required");
} else {
$("#producedDateItem").hide();
form.render();
}
var unit = $("#unit");
unit.empty();
unit.append(new Option(data.unit, "-1"));
var unitList = data["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
unit.append(new Option(unitList[i].newUnit, unitList[i].newUnit));
}
form.render();
}
}
})
@ -402,6 +440,9 @@
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
let barCode = $("#barCode");
barCode.empty();
barCode.append(new Option(result, result));
$.ajax({
url: "/material/qywxApplicationInScanBarCode",
type: "post",
@ -409,6 +450,39 @@
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
let material = d.data.material;
let unit = $("#unit");
if (material !== null) {
$("#mname").val(material.mname);
$("#code").val(material.mcode);
$("#mid").val(material.mid);
$("#typeName").val(material.tname);
$("#version").val(material.version);
unit.empty();
unit.append(new Option(material.unit, material.unit));
let splitInfoList = material.splitInfoList;
if (splitInfoList !== null && splitInfoList.length > 0) {
$.each(splitInfoList, function (index, item) {
unit.append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
});
}
form.render();
} else {
layer.msg("对于编码:" + result + ",并未发现对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
$("#mname").val("");
$("#code").val("");
$("#mid").val("");
$("#typeName").val("");
$("#version").val("");
unit.empty();
$("#barCode").empty();
})
}
}
})

9
target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -48,6 +48,8 @@
<id column="airid" property="id" jdbcType="INTEGER" />
<result column="mname" property="mname" jdbcType="VARCHAR" />
<result column="quantity" property="quantity" jdbcType="INTEGER" />
<result column="mid" property="mid" jdbcType="INTEGER" />
<result column="flagForGroup" property="flagForGroup" jdbcType="INTEGER" />
<result column="price" property="price" jdbcType="VARCHAR" />
<result column="tname" property="materialTypeName" jdbcType="VARCHAR" />
<result column="applicantTime" property="applicant_time" jdbcType="INTEGER" />
@ -137,7 +139,7 @@
</sql>
<sql id="ApplicationInRecordInfo">
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit,flagForGroup,mid
</sql>
<sql id="ApplicationOutRecordInfo">
@ -626,7 +628,7 @@
<!-- 插入一条入库记录-->
<insert id="insertApplicationInRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id">
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit)
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit,flagForGroup)
values(
#{id},
#{mid},
@ -637,7 +639,8 @@
#{depositoryId},
#{code},
#{applyRemark},
#{unit}
#{unit},
#{flagForGroup}
)
</insert>

771
target/classes/templates/pages/application/application-in.html

@ -46,6 +46,13 @@
<div class="layuimini-main">
<div class="layui-fluid">
<div class="layui-tab">
<ul class="layui-tab-title" style="text-align: center">
<li class="layui-this">物料入库</li>
<li class="layui-this">组合入库</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<!-- 入库申请提交-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; ">
<div carousel-item style="overflow: inherit">
@ -63,9 +70,11 @@
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input"
style="border-style: none"
id="openSonByMaterial" onblur="selectMaterialByName(this)"
id="openSonByMaterial"
onblur="selectMaterialByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline;"
<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"
@ -77,14 +86,18 @@
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="code" name="code" type="text" placeholder="请填写入物料编码" value=""
<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"
id="qrCodeImg"
style="margin-top: 10px" onclick="scanCodeInStorage(this)">
<input id="qrCode" name="qrCode" type="text" style="display:none;">
style="margin-top: 10px"
onclick="scanCodeInStorage(this)">
<input id="qrCode" name="qrCode" type="text"
style="display:none;">
</div>
</div>
</div>
@ -92,7 +105,8 @@
<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="请填写入条形编码"
<input id="barCode" name="barCode" type="text"
placeholder="请填写入条形编码"
value=""
class="layui-input"
style="border-style: none">
@ -102,7 +116,8 @@
</div>
</div>
</div>
<div class="layui-form-item" style="display: none" id="producedDateItem">
<div class="layui-form-item" style="display: none"
id="producedDateItem">
<label class="layui-form-label">生产日期:</label>
<div class="layui-input-block">
<input type="text" name="producedDate" id="producedDate"
@ -113,14 +128,17 @@
<div class="layui-form-item">
<label class="layui-form-label">物料单价:</label>
<div class="layui-input-block">
<input name="price" type="number" placeholder="请填写入物料单价" value="" id="price"
<input name="price" type="number" placeholder="请填写入物料单价"
value=""
id="price"
class="layui-input" lay-verify="number">
</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=""
<input name="quantity" type="number" placeholder="请填写入物料数量"
value=""
class="layui-input" lay-verify="number">
</div>
</div>
@ -144,11 +162,13 @@
<input type="text" name="depositoryId" class="layui-input"
id="depositoryId"
style="display: none" lay-verify="required"/>
<input type="text" name="placeId" class="layui-input" id="placeId"
<input type="text" name="placeId" class="layui-input"
id="placeId"
style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16"
id="scanLocation"
style="margin-top: 10px" onclick="scanLocationByQrCode(this)">
style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div>
</div>
</div>
@ -168,7 +188,8 @@
<!-- 提交按钮-->
<div class="layui-form-item" id="btn_sub">
<div class="layui-input-block" style="bottom: 15px;">
<button id="submitForm" class="layui-btn" lay-submit lay-filter="formStep"
<button id="submitForm" class="layui-btn" lay-submit
lay-filter="formStep"
style="margin-left: 15%">
&emsp;提交&emsp;
</button>
@ -195,6 +216,120 @@
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-carousel" id="stepForm2" lay-filter="stepForm2" style="margin: 0 auto;">
<div carousel-item style="overflow: inherit">
<div>
<form class="layui-form layui-form-pane" style="margin: 0 auto;max-width: 460px;">
<div class="layui-card" id="cardParentForGroup">
<div class="layui-card-body" id="cardItemForGroup">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItemForGroup(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="openGroupList" onblur="selectGroupByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search"
style="display: inline"
id="selectGroup" onclick="selectGroup(this)"></i>
</div>
<input type="text" name="gid" class="layui-input" id="gid"
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="gcode" name="code" type="text"
placeholder="请填写入组合编码"
value=""
onblur="selectCodeForGroup(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;display: none" onclick="scanCodeByOut(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">组合数量:</label>
<div class="layui-input-block">
<input type="number" name="quantity" class="layui-input" id="quantityForGroup"
required lay-verify="number" placeholder="请填写组合数量"/>
</div>
</div>
<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="selectDepository" readonly
onclick="selectDepositroy(this)"
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input"
id="did"
style="display: none" lay-verify="required"/>
<input type="text" name="placeId" class="layui-input"
id="pid"
style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16"
id="scanQrCodeForLocation"
style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<input name="applyRemark" placeholder="请填写相关原因及申请原因" value=""
class="layui-input"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline"
id="addItemForGroup"
onclick="addItemForGroup(this)"></i>
</div>
<!--提交按钮-->
<div class="layui-form-item" id="btn_sub2">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep2" type="button"
style="margin-bottom: 30px;margin-left: 15%">
&emsp;提交&emsp;
</button>
</div>
</div>
</div>
</form>
</div>
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div style="text-align: center;margin-top: 90px;">
<i class="layui-icon layui-circle"
style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i>
<div style="font-size: 24px;color: #333;font-weight: 500;margin-top: 30px;">
提交申请成功
</div>
</div>
<div style="text-align: center;margin-top: 50px;">
<button class="layui-btn next">再申请一次</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@ -225,6 +360,10 @@
function openDepositoryTree(obj) {
}
// 用于加载仓库菜单,用于组合
function selectDepositroy(object) {
}
// 用于扫码入库
function scanCodeInStorage(obj) {
}
@ -244,16 +383,47 @@
}
// 用于重新渲染页面(组合)
function CoverpageForGroup() {
}
// 用于组合名称查询
function selectGroupByName() {
}
// 用于点击搜索按钮(组合)
function selectGroup(obj) {
}
// 用于编码查询(用于组合)
function selectCodeForGroup(obj) {
}
// 实现卡片删除(组合)
function deleteItemForGroup(){
}
// 实现卡片添加(组合)
function addItemForGroup(){
}
// 用于暂存卡片个数
var params = [];
let scanValue = {};
// 用于卡片编号
var NewIdNumber = 1;
layui.use(['form', 'step', 'flow', 'laydate'], function () {
// 用于暂存卡片个数(组合)
var params2 = [];
layui.use(['form', 'step', 'flow', 'laydate','element'], function () {
var $ = layui.$,
form = layui.form,
laydate = layui.laydate,
element = layui.element,
step = layui.step;
// 用于分步表单加载
@ -268,6 +438,19 @@
title: '提交成功'
}]
});
step.render({
elem: '#stepForm2',
filter: 'stepForm2',
width: '100%', //设置容器宽度
height: '600px',
stepItems: [{
title: '填写信息'
}, {
title: '提交成功'
}]
});
// 用于提交操作
form.on('submit(formStep)', function (data) {
data = data.field;
@ -326,16 +509,46 @@
});
// 用于提交操作(组合)
form.on('submit(formStep2)', function (data) {
step.next('#stepForm');
return false;
data = data.field;
data.type = 1;
data.params = params2;
$.ajax({
url: "/group/applicationInForGroup",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(data),
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秒)
}, function () {
step.next('#stepForm2');
});
}
},
complete: function () {
layer.close(this.layerIndex);
}
});
});
$('.pre').click(function () {
step.pre('#stepForm');
step.pre('#stepForm2');
});
$('.next').click(function () {
step.next('#stepForm');
step.next('#stepForm2');
});
// 实现卡片添加
@ -948,6 +1161,33 @@
}
});
};
// 用于打开仓库树形菜单
selectDepositroy = function (obj) {
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectDepositoryByCard?type=1&flagForGroup=true&clickObj=' + parentId,
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
};
// 用于扫描入库位置
scanLocationByQrCode = function (obj) {
parent.wx.scanQRCode({
@ -995,6 +1235,507 @@
})
};
// 用于实现通过编码查询组合
selectCodeForGroup = function (obj) {
// 输入code
var code = obj.value;
// 获取搜索的对应卡片
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var pid = Number(parent.id.split("cardItemForGroup")[1]);
// 获取当前卡片中的组合名称等
let gnameParent = parent.childNodes[5].childNodes[3];
// gid
let gidItem = gnameParent.childNodes[3];
// gname
let gnameItem = gnameParent.childNodes[1].childNodes[1];
let req = {};
req.code = code;
$.ajax({
url: "/group/findGroupByCodeForIn",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
layer.msg(d.statusInfo.detail, {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gnameItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
})
} else {
let childNodes = parent.childNodes;
if (childNodes.length > 9) {
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
// 赋值给gname
gnameItem.value = data[0].gname;
gidItem.value = data[0].gid;
for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]);
}
element.init();
}
}
});
};
// 用于实现点击搜索按钮(组合)
selectGroup = function(obj){
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
// 获取对应元素
var pid = Number(parent.id.split("cardItemForGroup")[1]);
// 获取当前卡片中的组合名称等
let gnameParent = parent.childNodes[5].childNodes[3];
// 组合编码
let gcodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes[1];
// gid
let gidItem = gnameParent.childNodes[3];
// gname
let gnameItem = gnameParent.childNodes[1].childNodes[1];
let gname = gnameItem.value;
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
content: '/selectGroup?gname=' + gname + '&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 () {
let gid = gidItem.value;
if(gid !== ''){
let req = {};
req.gid = gid;
$.ajax({
url: "/group/findGroupInfoByGid",
data: JSON.stringify(req),
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
layer.msg(d.statusInfo.detail, {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gnameItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
})
} else {
let childNodes = parent.childNodes;
if (childNodes.length > 9) {
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
// 赋值给gname
gcodeItem.value = data[0].gcode;
for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]);
}
element.init();
}
}
})
}
}
})
};
// 用于实现组合名称搜索
selectGroupByName = function(obj){
let gname = obj.value;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
// 获取对应元素
var pid = Number(parent.id.split("cardItemForGroup")[1]);
// 获取当前卡片中的组合名称等
let gnameParent = parent.childNodes[5].childNodes[3];
// 组合编码
let gcodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes[1];
// gid
let gidItem = gnameParent.childNodes[3];
if(gname !== ''){
var req = {};
req.gname = gname;
$.ajax({
url: "/group/findGroupByGname",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count === -1){
// 如果当前组合名称的数量不止一个
layer.msg("请点击右侧搜索确定物品", {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gcodeItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
});
}else if(d.count === 0){
// 如果当前组合名称不存在
layer.msg("没有该组合,请确认输入是否正确", {
icon: 0,
time: 1500
},function () {
obj.value = '';
gidItem.value = '';
gcodeItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
});
}else{
// 正常
let data = d.data;
let childNodes = parent.childNodes;
if (childNodes.length > 9) {
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
// 赋值给gname
gidItem.value = data[0].gid;
gcodeItem.value = data[0].gcode;
for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]);
}
element.init();
}
}
})
}
else{
gcodeItem.value = '';
gidItem.value = '';
let childNodes = parent.childNodes;
for (let i = 0; i < childNodes.length; i++) {
if (childNodes[i].className === "layui-collapse") {
childNodes[i].remove()
}
}
}
};
// 用于扫码功能
scanCodeByOut = 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/qywxApplicationOutScanQrCode",
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;
}
})
}
})
};
// 实现卡片删除(组合)
deleteItemForGroup = function (obj) {
// 获取父节点
var parent = obj.parentNode;
var parentId = parent.id;
parentId = parseInt(parentId.split("cardItemForGroup")[1]);
// 获取祖父节点
var reparent = parent.parentNode;
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
$("#stepForm2").css("height", height - 344 + 'px');
params2 = remove(params2, parentId);
reparent.removeChild(parent);
};
// 实现卡片添加(组合)
addItemForGroup = function (obj) {
var parentId = obj.parentNode.id;
NewIdNumber = NewIdNumber + 1;
var materialItem = `
<div class="layui-card-body" id=` + "cardItemForGroup" + NewIdNumber + `>
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItemForGroup(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=`+"openGroupList"+NewIdNumber+` onblur="selectGroupByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search"
style="display: inline"
id=`+"selectGroup"+NewIdNumber+` onclick="selectGroup(this)"></i>
</div>
<input type="text" name=`+"gid"+NewIdNumber+` class="layui-input" id=`+"gid"+NewIdNumber+`
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=` + "gcode" + ` name=` + "code" + NewIdNumber + ` type="text" placeholder="请填写入组合编码" value=""
onblur="selectCodeForGroup(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;display: none" onclick="scanCodeByOut(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">组合数量:</label>
<div class="layui-input-block">
<input type="number" name=`+"quantity"+NewIdNumber+` class="layui-input" id=`+"quantityForGroup"+NewIdNumber+`
required lay-verify="number" placeholder="请填写组合数量"/>
</div>
</div>
<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=`+"selectDepository"+NewIdNumber+` readonly
onclick="selectDepositroy(this)"
lay-verify="required"/>
<input type="text" name=`+"depositoryId"+NewIdNumber+` class="layui-input"
id=`+"did"+NewIdNumber+`
style="display: none" lay-verify="required"/>
<input type="text" name=`+"placeId"+NewIdNumber+` class="layui-input"
id=`+"pid"+`
style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16"
id=`+"scanQrCodeForLocation"+NewIdNumber+`
style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<input name=`+"applyRemark"+NewIdNumber+` placeholder="请填写相关原因及申请原因" value=""
class="layui-input"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline" id=` + "addItemForGroup" + NewIdNumber + `
onclick="addItemForGroup(this)"></i>
</div>
`;
// 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
params2.push(NewIdNumber);
$("#stepForm2").css("height", height + 344 + 'px');
$("#" + parentId).after(materialItem);
};
// 用于重新渲染页面(组合)
CoverpageForGroup = function (num, obj) {
// 获取待添加父类
NewIdNumber = num;
if (num === 0) { // 如果是第一个
NewIdNumber = "";
}
var materialItem = `
<div class="layui-collapse">
<div class="layui-colla-item">
<h2 class="layui-colla-title"">${obj.mname}</h2>
<div class="layui-colla-content">
<div class="layui-form-item">
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写入物料编码" value="${obj.mcode}"
readonly
class="layui-input" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料数量:</label>
<div class="layui-input-block">
<input type="number" placeholder="请填写入物料数量" value="${obj.quantity}"
readonly
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">
<input type="text" placeholder="请填写入物料型号" value="${obj.version === null ? '' : obj.version}"
readonly
class="layui-input" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料类型:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写入物料类型" value="${obj.tname}"
readonly
class="layui-input" lay-verify="text" required>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写入物料计量单位" value="${obj.showUnit === null ? '' : obj.showUnit}"
readonly
class="layui-input" lay-verify="text" required>
</div>
</div>
</div>
</div>
</div>
`; // 最终
// 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
$("#stepForm2").css("height", height + 183 + 'px');
$("#" + "addItemForGroup" + NewIdNumber).before(materialItem);
};
form.on('select()', function (data) {
let elem = data.elem; //得到select原始DOM对象
let elemId = elem.id;

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

@ -699,9 +699,6 @@
// 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
if (NewIdNumber !== "") {
params2.push(NewIdNumber)
}
$("#stepForm2").css("height", height + 183 + 'px');
$("#" + "addItemForGroup" + NewIdNumber).before(materialItem);

2
target/classes/templates/pages/application/application-out_min-mobile.html

@ -91,7 +91,7 @@
lis.push('<div class="layui-col-md4 my-card-context">' +
'<h4> 物料名称:' + data[i].mname + '</h4>' +
'<h4> 物料编码:' + data[i].mcode + '</h4>' +
'<h4> 出库数量:' + data[i].showQuantity + '</h4>' +
'<h4> 出库数量:' + data[i].quantity + '</h4>' +
'<h4> 处理人:' + data[i].checkerName + '</h4>' +
'<h4> 生产日期:' + producedDate+ '</h4>' +
'<h4> 所处库位:' + data[i].pcode + '</h4>' +

4
target/classes/templates/pages/application/form-step-look_minRecordOut.html

@ -42,6 +42,10 @@
<td>数量</td>
<td id="quantity" th:text="${recordMinP.getQuantity()}">409</td>
</tr>
<tr>
<td>单位</td>
<td id="unit" th:text="${recordMinP.getUnit()}">409</td>
</tr>
<tr>
<td>金额</td>
<td id="price" th:text="${recordMinP.getPrice()}">2016-11-28</td>

3
target/classes/templates/pages/depository/table-in.html

@ -257,7 +257,6 @@
table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data;
if (obj.event === 'detail') {
var index = layer.open({
title: '入库信息详情',
@ -266,7 +265,7 @@
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/form_step_look?id=' + data.id,
content: '/form_step_look?id=' + data.id+'&flagForGroup='+data.flagForGroup,
});
$(window).on("resize", function () {
layer.full(index);

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

@ -12,6 +12,7 @@
<body>
<input id="adminorg" name="adminorg" th:value="${adminorg}" style="display: none">
<input id="clickObj" name="clickObj" th:value="${clickObj}" style="display: none">
<input id="flagForGroup" name="flagForGroup" th:value="${flagForGroup}" 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>
@ -23,6 +24,7 @@
tree = layui.tree;
var adminorg = $("#adminorg").val();
var clickObj = $("#clickObj").val();
var flagForGroup = $("#flagForGroup").val();
test = tree.render({
elem: '#test2'
, data: []
@ -40,11 +42,21 @@
}
var windowParent = $("#" + clickObj, window.parent.document)[0];
var depositoryChildren = null;
if("false" === flagForGroup){
if (windowParent.childNodes.length === 25) {
// 入库
depositoryChildren = windowParent.childNodes[19];
} else {
} else if(windowParent.childNodes.length === 23){
// 库存转移
depositoryChildren = windowParent.childNodes[17];
} else if(windowParent.childNodes.length === 21){
// 物料查询跳转入库
depositoryChildren = windowParent.childNodes[15];
}
}else{
depositoryChildren = windowParent.childNodes[11];
}
var depositoryItem = depositoryChildren.childNodes[3].childNodes[1].childNodes;
var depositoryName = depositoryItem[1];
var depositoryId = depositoryItem[3];

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

@ -54,11 +54,7 @@
var barCode = null;
layui.$(function () {
var result = "1610140012736978944";//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
outboundLogic(req);
/* parent.parent.parent.wx.scanQRCode({
parent.parent.parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
@ -77,7 +73,7 @@
}
});*/
});
});

Loading…
Cancel
Save