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. 61
      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. 126
      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. 791
      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. 178
      src/main/resources/templates/pages/split/split_add.html
  21. 9
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  22. 791
      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()); map.put("applicantId", userToken.getId());
List<ApplicationInRecordP> applicationInRecordPlist = depositoryRecordService.findApplicationInRecordPByCondition(map, request); List<ApplicationInRecordP> applicationInRecordPlist = depositoryRecordService.findApplicationInRecordPByCondition(map, request);
Integer InCount = depositoryRecordService.findApplicationInRecordPCountByCondition(map); Integer InCount = depositoryRecordService.findApplicationInRecordPCountByCondition(map);
for (int i = 0; i < applicationInRecordPlist.size(); i++) { for (ApplicationInRecordP applicationInRecordP : applicationInRecordPlist) {
if (applicationInRecordPlist.get(i).getPrice() != null) { if (applicationInRecordP.getPrice() != null) {
applicationInRecordPlist.get(i).setPrice(applicationInRecordPlist.get(i).getPrice() / 100); applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100);
} }
} }
List<ApplicationOutRecordP> applicationOutRecordPlist = depositoryRecordService.findApplicationOutRecordPByCondition(map, request); List<ApplicationOutRecordP> applicationOutRecordPlist = depositoryRecordService.findApplicationOutRecordPByCondition(map, request);
Integer OutCount = depositoryRecordService.findApplicationOutRecordPCountByCondition(map); Integer OutCount = depositoryRecordService.findApplicationOutRecordPCountByCondition(map);
for (int i = 0; i < applicationOutRecordPlist.size(); i++) { for (ApplicationOutRecordP recordP : applicationOutRecordPlist) {
if (applicationOutRecordPlist.get(i).getPrice() != null) { if (recordP.getPrice() != null) {
applicationOutRecordPlist.get(i).setPrice(applicationOutRecordPlist.get(i).getPrice() / 100); recordP.setPrice(recordP.getPrice() / 100);
} }
} }
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
@ -461,8 +461,8 @@ public class DepositoryRecordController {
@GetMapping("/applicationInView") @GetMapping("/applicationInView")
public RestResponse findApplicationInRecordByCondition(@RequestParam Map<String, Object> map, HttpServletRequest request) { public RestResponse findApplicationInRecordByCondition(@RequestParam Map<String, Object> map, HttpServletRequest request) {
List<ApplicationInRecordP> list = depositoryRecordService.findApplicationInRecordPByCondition(map, request); List<ApplicationInRecordP> list = depositoryRecordService.findApplicationInRecordPByCondition(map, request);
for (int i = 0; i < list.size(); i++) { for (ApplicationInRecordP applicationInRecordP : list) {
list.get(i).setPrice(list.get(i).getPrice() / 100); applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100);
} }
return new RestResponse(list, depositoryRecordService.findApplicationInRecordPCountByCondition(map), 200); 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); 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") @PostMapping("/findGroupByCode")
public RestResponse findGroupByCode(@RequestBody Map<String, Object> map, HttpServletRequest request) { public RestResponse findGroupByCode(@RequestBody Map<String, Object> map, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken"); 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 出库数据 * @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); String mcode = materialService.findMaterialCodeByQrCode(qrCode);
// 根据物料编码获取物料 // 根据物料编码获取物料
Material material = materialService.findMaterialByCode(mcode); Material material = materialService.findMaterialByCode(mcode);
if(material != null) {
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
List<PlaceP> placePList = new ArrayList<>(); List<PlaceP> placePList = new ArrayList<>();
param.put("mcode", mcode); param.put("mcode", mcode);
@ -802,6 +803,9 @@ public class MaterialController {
mp.setSplitInfoList(splitInfoByMid); mp.setSplitInfoList(splitInfoByMid);
return new RestResponse(mp); return new RestResponse(mp);
} }
}else{
return new RestResponse(null);
}
} }

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

@ -508,15 +508,15 @@ public class PageController {
if ("-1".equals(unit)) { if ("-1".equals(unit)) {
// 如果转移的基础单位 // 如果转移的基础单位
mv.addObject("quantity", placeAndMaterialByMidAndPid.getQuantity()); mv.addObject("quantity", placeAndMaterialByMidAndPid.getQuantity());
}else{ } else {
// 获取当前的拆单记录 // 获取当前的拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>(); Map<String, Object> paramForSplitInfo = new HashMap<>();
Inventory inventoryById = materialService.findInventoryById(mid); Inventory inventoryById = materialService.findInventoryById(mid);
paramForSplitInfo.put("mid",inventoryById.getMid()); paramForSplitInfo.put("mid", inventoryById.getMid());
paramForSplitInfo.put("newUnit",unit); paramForSplitInfo.put("newUnit", unit);
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), splitInfo.getId()); SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), splitInfo.getId());
mv.addObject("quantity",splitInventory.getSaveQuantity()); mv.addObject("quantity", splitInventory.getSaveQuantity());
} }
mv.addObject("depositoryId", depositoryId); mv.addObject("depositoryId", depositoryId);
mv.addObject("mid", mid); mv.addObject("mid", mid);
@ -528,13 +528,14 @@ public class PageController {
// 专用于卡片仓库树形菜单页面 // 专用于卡片仓库树形菜单页面
@GetMapping("/selectDepositoryByCard") @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(); ModelAndView mv = new ModelAndView();
UserByPort userToken = (UserByPort) request.getAttribute("userToken"); UserByPort userToken = (UserByPort) request.getAttribute("userToken");
if (type == 1) { if (type == 1) {
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
mv.addObject("adminorg", maindeparment); mv.addObject("adminorg", maindeparment);
mv.addObject("clickObj", clickObj); mv.addObject("clickObj", clickObj);
mv.addObject("flagForGroup", flagForGroup);
} }
mv.setViewName("pages/material/selectDepositoryByCard"); mv.setViewName("pages/material/selectDepositoryByCard");
return mv; return mv;
@ -821,7 +822,7 @@ public class PageController {
if (gid != null) { if (gid != null) {
mv.addObject("gid", gid); mv.addObject("gid", gid);
Group groupOnlyById = groupService.findGroupOnlyById(gid); Group groupOnlyById = groupService.findGroupOnlyById(gid);
mv.addObject("group",groupOnlyById); mv.addObject("group", groupOnlyById);
} else { } else {
mv.addObject("gid", -1); mv.addObject("gid", -1);
} }
@ -867,7 +868,7 @@ public class PageController {
if (groupInfoByMidAndGid != null) { if (groupInfoByMidAndGid != null) {
mv.addObject("record", groupInfoByMidAndGid); mv.addObject("record", groupInfoByMidAndGid);
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(groupInfoByMidAndGid.getMid()); List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(groupInfoByMidAndGid.getMid());
mv.addObject("splitList",splitInfoByMid); mv.addObject("splitList", splitInfoByMid);
} else { } else {
throw new MyException("缺少必要参数!"); throw new MyException("缺少必要参数!");
} }
@ -1274,15 +1275,15 @@ public class PageController {
sumUnit.append(inventoryById.getUnit()).append(","); sumUnit.append(inventoryById.getUnit()).append(",");
} else { } else {
// 用于获取当前拆单记录 // 用于获取当前拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>(); Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit",unit); paramForSplitInfo.put("newUnit", unit);
paramForSplitInfo.put("mid",inventoryById.getMid()); paramForSplitInfo.put("mid", inventoryById.getMid());
// 获取拆单记录 // 获取拆单记录
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 获取当前拆单与基础单位的进制 // 获取当前拆单与基础单位的进制
int scale = splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1); int scale = splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1);
sumUnit.append(unit).append(","); sumUnit.append(unit).append(",");
sumPrice+= (inventoryById.getPrice() / scale * applicationOutRecordMin.getQuantity()); sumPrice += (inventoryById.getPrice() / scale * applicationOutRecordMin.getQuantity());
} }
} }
// 申请人 // 申请人
@ -1327,17 +1328,31 @@ public class PageController {
} }
@GetMapping("/form_step_look") @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"); UserByPort userToken = (UserByPort) request.getAttribute("userToken");
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
mv.setViewName("pages/application/form-step-look"); mv.setViewName("pages/application/form-step-look");
if (id != null) { if (id != null) {
ApplicationInRecordP applicationInRecordPById = depositoryRecordService.findApplicationInRecordPById(id); ApplicationInRecordP applicationInRecordPById = depositoryRecordService.findApplicationInRecordPById(id);
if (Integer.compare(flagForGroup, 2) != 0) {
// 如果不是组合
UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationInRecordPById.getApplicantId(), userToken); UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationInRecordPById.getApplicantId(), userToken);
applicationInRecordPById.setApplicantName(userByPort.getName()); applicationInRecordPById.setApplicantName(userByPort.getName());
applicationInRecordPById.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordPById.getApplicantTime()))); applicationInRecordPById.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordPById.getApplicantTime())));
applicationInRecordPById.setPrice(applicationInRecordPById.getPrice() / 100); applicationInRecordPById.setPrice(applicationInRecordPById.getPrice() / 100);
mv.addObject("record", applicationInRecordPById); 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 { } else {
throw new MyException("缺少必要参数!"); throw new MyException("缺少必要参数!");
} }
@ -1369,17 +1384,17 @@ public class PageController {
recordMinP.setMcode(inventoryById.getCode()); recordMinP.setMcode(inventoryById.getCode());
recordMinP.setPlaceCode(placeById.getCode()); recordMinP.setPlaceCode(placeById.getCode());
String unit = recordMinP.getUnit(); String unit = recordMinP.getUnit();
if("-1".equals(unit)){ if ("-1".equals(unit)) {
recordMinP.setUnit(inventoryById.getUnit()); recordMinP.setUnit(inventoryById.getUnit());
double price = (inventoryById.getPrice()) * recordMinP.getQuantity(); double price = (inventoryById.getPrice()) * recordMinP.getQuantity();
BigDecimal bg = new BigDecimal(price); BigDecimal bg = new BigDecimal(price);
price = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); price = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
recordMinP.setPrice(price); recordMinP.setPrice(price);
}else{ } else {
// 用于获取拆单记录 // 用于获取拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>(); Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit",unit); paramForSplitInfo.put("newUnit", unit);
paramForSplitInfo.put("mid",inventoryById.getMid()); paramForSplitInfo.put("mid", inventoryById.getMid());
// 获取拆单记录 // 获取拆单记录
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 获取当前拆单与基础单位的进制 // 获取当前拆单与基础单位的进制
@ -1462,16 +1477,16 @@ public class PageController {
sumQuantity += applicationOutRecordMin.getQuantity(); sumQuantity += applicationOutRecordMin.getQuantity();
// 获取当前计量单位 // 获取当前计量单位
String unit = recordMinP.getUnit(); String unit = recordMinP.getUnit();
if("-1".equals(unit)){ if ("-1".equals(unit)) {
// 如果是基础单位 // 如果是基础单位
sumPrice += (inventoryById.getPrice() * applicationOutRecordMin.getQuantity()); sumPrice += (inventoryById.getPrice() * applicationOutRecordMin.getQuantity());
}else{ } else {
// 如果是拆单 // 如果是拆单
// 用于获取拆单记录 // 用于获取拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>(); Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit",unit); paramForSplitInfo.put("newUnit", unit);
paramForSplitInfo.put("mid",inventoryById.getMid()); paramForSplitInfo.put("mid", inventoryById.getMid());
// 查询拆单记录 // 查询拆单记录
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 获取当前拆单记录与基础单位的进制 // 获取当前拆单记录与基础单位的进制

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

@ -48,6 +48,8 @@
<id column="airid" property="id" jdbcType="INTEGER" /> <id column="airid" property="id" jdbcType="INTEGER" />
<result column="mname" property="mname" jdbcType="VARCHAR" /> <result column="mname" property="mname" jdbcType="VARCHAR" />
<result column="quantity" property="quantity" jdbcType="INTEGER" /> <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="price" property="price" jdbcType="VARCHAR" />
<result column="tname" property="materialTypeName" jdbcType="VARCHAR" /> <result column="tname" property="materialTypeName" jdbcType="VARCHAR" />
<result column="applicantTime" property="applicant_time" jdbcType="INTEGER" /> <result column="applicantTime" property="applicant_time" jdbcType="INTEGER" />
@ -137,7 +139,7 @@
</sql> </sql>
<sql id="ApplicationInRecordInfo"> <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>
<sql id="ApplicationOutRecordInfo"> <sql id="ApplicationOutRecordInfo">
@ -626,7 +628,7 @@
<!-- 插入一条入库记录--> <!-- 插入一条入库记录-->
<insert id="insertApplicationInRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id"> <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( values(
#{id}, #{id},
#{mid}, #{mid},
@ -637,7 +639,8 @@
#{depositoryId}, #{depositoryId},
#{code}, #{code},
#{applyRemark}, #{applyRemark},
#{unit} #{unit},
#{flagForGroup}
) )
</insert> </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="productionPlace" property="productionPlace" jdbcType="VARCHAR"/>
<result column="brand" property="brand" jdbcType="VARCHAR"/> <result column="brand" property="brand" jdbcType="VARCHAR"/>
<result column="remark" property="remark" jdbcType="VARCHAR"/> <result column="remark" property="remark" jdbcType="VARCHAR"/>
<result column="tname" property="typeName" jdbcType="VARCHAR"/>
</resultMap> </resultMap>

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

@ -85,10 +85,19 @@ public class ApplicationInRecordP {
*/ */
private String mdepositoryCode; private String mdepositoryCode;
/** /**
* 入库时选中的单位 * 入库时选中的单位
*/ */
private String airUnit; 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.brand = material.getBrand(); // 品牌
this.remark = material.getRemark(); // 备注 this.remark = material.getRemark(); // 备注
this.shelfLifeForCalc = material.getShelfLife(); //保质期,用于计算 this.shelfLifeForCalc = material.getShelfLife(); //保质期,用于计算
this.typeName = material.getTypeName(); // 物料类型
} }
public MaterialP() { 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); Integer applicationInPlace(Map<String,Object> map);
/**
* 生成单号
*
* @param depositoryName
* @return
*/
String createCode(String depositoryName, String key, String type, String mainDeparmentName) ;
/** /**
* 将刚入库的记录删除 * 将刚入库的记录删除
* @param map * @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); Integer insertApplicationOutRecord(Map<String,Object> map, UserByPort userToken);
/**
* 插入一条入库记录
* @param map 具体数据
* @return
*/
Integer insertApplicationInRecord(Map<String,Object> map, UserByPort userToken);
/** /**
* 根据组合编号获取组合具体信息 * 根据组合编号获取组合具体信息

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

@ -67,6 +67,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
private SplitUnitService splitUnitService; private SplitUnitService splitUnitService;
@Autowired
private GroupMapper groupMapper;
/** /**
* 提交申请插入一条仓库调度记录 * 提交申请插入一条仓库调度记录
* *
@ -180,6 +184,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 将入库数量修改为realQuantity // 将入库数量修改为realQuantity
map.put("quantity", map.get("realQuantity")); map.put("quantity", map.get("realQuantity"));
} }
if (!map.containsKey("flagForGroup")) {
// 如果不包含标志位.
map.put("flagForGroup", 1);
}
return depositoryRecordMapper.insertApplicationInRecord(map); return depositoryRecordMapper.insertApplicationInRecord(map);
} }
@ -481,44 +489,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return result; 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.setData("");
restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足")); restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足"));
} }
} } else {
else {
// 如果是拆单后的出库 // 如果是拆单后的出库
// 用于获取对应的拆单记录 // 用于获取对应的拆单记录
@ -1260,7 +1229,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return restResponse; return restResponse;
} }
/** /**
* 用于有父级拆单记录的出库处理 * 用于有父级拆单记录的出库处理
* *
@ -1513,7 +1481,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return restResponse; return restResponse;
} }
/** /**
* 用于完成出库时的相关处理操作 * 用于完成出库时的相关处理操作
* *
@ -1810,8 +1777,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 将主订单插入到redis中 // 将主订单插入到redis中
redisTemplate.opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString()); redisTemplate.opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString());
map.put("state", "仓储中心负责人审核通过"); map.put("state", "仓储中心负责人审核通过");
} } else {
else {
// 如果是不通过 // 如果是不通过
updateInventoryForOutRefused(recordP); updateInventoryForOutRefused(recordP);
map.put("depositoryManagerPass", 2); map.put("depositoryManagerPass", 2);
@ -1928,23 +1894,23 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.insertApplicationOutRecordMin(map); return depositoryRecordMapper.insertApplicationOutRecordMin(map);
} }
/** /**
* 用于修改拒绝了的出库订单中的库存记录 * 用于修改拒绝了的出库订单中的库存记录
*
* @param recordP 拒绝的订单 * @param recordP 拒绝的订单
*/ */
private void updateInventoryForOutRefused(ApplicationOutRecordP recordP){ private void updateInventoryForOutRefused(ApplicationOutRecordP recordP) {
// 获取该订单下的子订单 // 获取该订单下的子订单
List<ApplicationOutRecordMin> recordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId()); List<ApplicationOutRecordMin> recordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId());
// 循环该记录 // 循环该记录
for (ApplicationOutRecordMin recordMin: for (ApplicationOutRecordMin recordMin :
recordMinByParent) { recordMinByParent) {
// 获取出库时的计量单位 // 获取出库时的计量单位
String unit = recordMin.getUnit(); String unit = recordMin.getUnit();
// 获取库存记录 // 获取库存记录
Integer mid = recordMin.getMid(); Integer mid = recordMin.getMid();
if("-1".equals(unit)){ if ("-1".equals(unit)) {
// 如果出库时选中的为基础单位 // 如果出库时选中的为基础单位
// 获取库存记录 // 获取库存记录
@ -2012,8 +1978,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}).start();*/ }).start();*/
} } else {
else {
// 如果没有通过 // 如果没有通过
updateInventoryForOutRefused(record); updateInventoryForOutRefused(record);
result = "驳回"; result = "驳回";
@ -2455,7 +2420,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("mid", material.getMid()); map.put("mid", material.getMid());
map.put("depositoryId", transferRecord.getToId()); map.put("depositoryId", transferRecord.getToId());
map.put("placeId", transferRecord.getToPlaceId()); map.put("placeId", transferRecord.getToPlaceId());
map.put("unit",unit); map.put("unit", unit);
if ("-1".equals(unit)) { if ("-1".equals(unit)) {
// 如果是基础单位 // 如果是基础单位
@ -2500,8 +2465,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
placeMapper.updateMaterialAndPlace(toMaterialAndPlace); placeMapper.updateMaterialAndPlace(toMaterialAndPlace);
} }
} }
} } else {
else {
// 如果是拆单单位 // 如果是拆单单位
// 用于获取当前拆单记录 // 用于获取当前拆单记录
@ -2757,7 +2721,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
/** /**
* 用于处理超出进制的拆单库存处理记录 * 用于处理超出进制的拆单库存处理记录
* *
@ -2822,7 +2785,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
/** /**
* 根据id修改仓库调度记录 * 根据id修改仓库调度记录
* *
@ -2909,6 +2871,14 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
applicationInRecordP.setApplicantName(userByPortById.getName()); applicationInRecordP.setApplicantName(userByPortById.getName());
applicationInRecordP.setApplicantTime(time); applicationInRecordP.setApplicantTime(time);
applicationInRecordP.setApplyRemark(applicationInRecordP.getApplyRemark() == null ? "" : applicationInRecordP.getApplyRemark()); 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; return list;
} }
@ -3111,7 +3081,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return sum; return sum;
} }
/** /**
* 计算物料总额 * 计算物料总额
* *
@ -3251,7 +3220,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
} }
/** /**
* 获取一段时间内的入库额度 * 获取一段时间内的入库额度
* *
@ -3330,7 +3298,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return sumCount; return sumCount;
} }
@Override @Override
public Integer findMaterialCountByMonth2(Map<String, Object> map) { public Integer findMaterialCountByMonth2(Map<String, Object> map) {
Integer type = ObjectFormatUtil.toInteger(map.get("type")); Integer type = ObjectFormatUtil.toInteger(map.get("type"));
@ -3353,7 +3320,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return sumCount; return sumCount;
} }
/** /**
* 查询仓库当天流水 * 查询仓库当天流水
* *
@ -3397,7 +3363,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.deleteApplicationInRecordByIds(list); return depositoryRecordMapper.deleteApplicationInRecordByIds(list);
} }
/** /**
* 对查出来的记录进行包装包装成前端需要的数据 * 对查出来的记录进行包装包装成前端需要的数据
* *
@ -3414,7 +3379,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return result; return result;
} }
/** /**
* 对查出来的记录进行包装包装成前端需要的数据 * 对查出来的记录进行包装包装成前端需要的数据
* *
@ -3494,7 +3458,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
* @param depositoryName * @param depositoryName
* @return * @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); RLock lock = redissonClient.getLock(key);
// 入库单号(公司简称+仓库简称+年月日+数字(位数设置>=9)) // 入库单号(公司简称+仓库简称+年月日+数字(位数设置>=9))
String code = "GK"; String code = "GK";
@ -3552,7 +3516,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return false; return false;
} }
/** /**
* 判断当前id是否在ids中 * 判断当前id是否在ids中
* *
@ -3570,4 +3533,41 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return false; 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.mapper.*;
import com.dreamchaser.depository_manage.pojo.GroupInfoP; import com.dreamchaser.depository_manage.pojo.GroupInfoP;
import com.dreamchaser.depository_manage.pojo.MaterialAndPlaceForView; 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.GroupService;
import com.dreamchaser.depository_manage.service.SplitUnitService; import com.dreamchaser.depository_manage.service.SplitUnitService;
import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.DateUtil;
@ -32,6 +33,10 @@ public class GroupServiceImpl implements GroupService {
@Autowired @Autowired
DepositoryRecordMapper depositoryRecordMapper; DepositoryRecordMapper depositoryRecordMapper;
@Autowired
DepositoryRecordService depositoryRecordService;
@Autowired @Autowired
DepositoryMapper depositoryMapper; DepositoryMapper depositoryMapper;
@Autowired @Autowired
@ -673,6 +678,134 @@ public class GroupServiceImpl implements GroupService {
return result; 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); price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1);
map.put("price", Double.toString(price)); map.put("price", Double.toString(price));
depositoryRecordService.applicationInPlace(map); depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id"); map.remove("id");
} }
@ -236,6 +237,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1); price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1);
map.put("price", Double.toString(price)); map.put("price", Double.toString(price));
result += depositoryRecordService.applicationInPlace(map); result += depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id"); map.remove("id");
Map<String, Object> paramForInventoryToPlace = new HashMap<>(); Map<String, Object> paramForInventoryToPlace = new HashMap<>();
paramForInventoryToPlace.put("mid", map.get("newInMid")); paramForInventoryToPlace.put("mid", map.get("newInMid"));
@ -248,6 +250,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1); price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1);
map.put("price", Double.toString(price)); map.put("price", Double.toString(price));
result += depositoryRecordService.applicationInPlace(map); result += depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id"); map.remove("id");
} }
} }
@ -276,11 +279,13 @@ public class SplitUnitServiceImpl implements SplitUnitService {
// 先插入一条库存记录用于后续操作 // 先插入一条库存记录用于后续操作
map.put("quantity", "0"); map.put("quantity", "0");
depositoryRecordService.applicationInPlace(map); depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id"); map.remove("id");
} else { } else {
// 如果没有父级 // 如果没有父级
depositoryRecordService.applicationInPlace(map); depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
map.remove("id"); map.remove("id");
} }
Map<String, Object> paramForInventoryToPlace = new HashMap<>(); Map<String, Object> paramForInventoryToPlace = new HashMap<>();

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

@ -46,6 +46,13 @@
<div class="layuimini-main"> <div class="layuimini-main">
<div class="layui-fluid"> <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 class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; ">
<div carousel-item style="overflow: inherit"> <div carousel-item style="overflow: inherit">
@ -63,9 +70,11 @@
<div class="inputdiv"> <div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" <input type="text" placeholder="请选择物料" class="layui-input"
style="border-style: none" style="border-style: none"
id="openSonByMaterial" onblur="selectMaterialByName(this)" id="openSonByMaterial"
onblur="selectMaterialByName(this)"
lay-verify="required"/> 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> id="selectMaterial" onclick="selectMaterial(this)"></i>
</div> </div>
<input type="text" name="mid" class="layui-input" id="mid" <input type="text" name="mid" class="layui-input" id="mid"
@ -77,14 +86,18 @@
<label class="layui-form-label">物料编码:</label> <label class="layui-form-label">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;"> <div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv"> <div class="inputdiv">
<input id="code" name="code" type="text" placeholder="请填写入物料编码" value="" <input id="code" name="code" type="text"
placeholder="请填写入物料编码"
value=""
onblur="selectCode(this)" onblur="selectCode(this)"
class="layui-input" lay-verify="required" class="layui-input" lay-verify="required"
style="border-style: none"> style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16" <img src="/static/images/search.ico" height="16" width="16"
id="qrCodeImg" id="qrCodeImg"
style="margin-top: 10px" onclick="scanCodeInStorage(this)"> style="margin-top: 10px"
<input id="qrCode" name="qrCode" type="text" style="display:none;"> onclick="scanCodeInStorage(this)">
<input id="qrCode" name="qrCode" type="text"
style="display:none;">
</div> </div>
</div> </div>
</div> </div>
@ -92,7 +105,8 @@
<label class="layui-form-label">条形编码:</label> <label class="layui-form-label">条形编码:</label>
<div class="layui-input-block" style="margin: 0px;"> <div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv"> <div class="inputdiv">
<input id="barCode" name="barCode" type="text" placeholder="请填写入条形编码" <input id="barCode" name="barCode" type="text"
placeholder="请填写入条形编码"
value="" value=""
class="layui-input" class="layui-input"
style="border-style: none"> style="border-style: none">
@ -102,7 +116,8 @@
</div> </div>
</div> </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> <label class="layui-form-label">生产日期:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="text" name="producedDate" id="producedDate" <input type="text" name="producedDate" id="producedDate"
@ -113,14 +128,17 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">物料单价:</label> <label class="layui-form-label">物料单价:</label>
<div class="layui-input-block"> <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"> class="layui-input" lay-verify="number">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">物料数量:</label> <label class="layui-form-label">物料数量:</label>
<div class="layui-input-block"> <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"> class="layui-input" lay-verify="number">
</div> </div>
</div> </div>
@ -144,11 +162,13 @@
<input type="text" name="depositoryId" class="layui-input" <input type="text" name="depositoryId" class="layui-input"
id="depositoryId" id="depositoryId"
style="display: none" lay-verify="required"/> 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"/> style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16" <img src="/static/images/search.ico" height="16" width="16"
id="scanLocation" id="scanLocation"
style="margin-top: 10px" onclick="scanLocationByQrCode(this)"> style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div> </div>
</div> </div>
</div> </div>
@ -168,7 +188,8 @@
<!-- 提交按钮--> <!-- 提交按钮-->
<div class="layui-form-item" id="btn_sub"> <div class="layui-form-item" id="btn_sub">
<div class="layui-input-block" style="bottom: 15px;"> <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%"> style="margin-left: 15%">
&emsp;提交&emsp; &emsp;提交&emsp;
</button> </button>
@ -195,6 +216,120 @@
</div> </div>
</div> </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>
</div> </div>
@ -225,6 +360,10 @@
function openDepositoryTree(obj) { function openDepositoryTree(obj) {
} }
// 用于加载仓库菜单,用于组合
function selectDepositroy(object) {
}
// 用于扫码入库 // 用于扫码入库
function scanCodeInStorage(obj) { function scanCodeInStorage(obj) {
} }
@ -244,16 +383,47 @@
} }
// 用于重新渲染页面(组合)
function CoverpageForGroup() {
}
// 用于组合名称查询
function selectGroupByName() {
}
// 用于点击搜索按钮(组合)
function selectGroup(obj) {
}
// 用于编码查询(用于组合)
function selectCodeForGroup(obj) {
}
// 实现卡片删除(组合)
function deleteItemForGroup(){
}
// 实现卡片添加(组合)
function addItemForGroup(){
}
// 用于暂存卡片个数 // 用于暂存卡片个数
var params = []; var params = [];
let scanValue = {}; let scanValue = {};
// 用于卡片编号 // 用于卡片编号
var NewIdNumber = 1; var NewIdNumber = 1;
layui.use(['form', 'step', 'flow', 'laydate'], function () {
// 用于暂存卡片个数(组合)
var params2 = [];
layui.use(['form', 'step', 'flow', 'laydate','element'], function () {
var $ = layui.$, var $ = layui.$,
form = layui.form, form = layui.form,
laydate = layui.laydate, laydate = layui.laydate,
element = layui.element,
step = layui.step; step = layui.step;
// 用于分步表单加载 // 用于分步表单加载
@ -268,6 +438,19 @@
title: '提交成功' title: '提交成功'
}] }]
}); });
step.render({
elem: '#stepForm2',
filter: 'stepForm2',
width: '100%', //设置容器宽度
height: '600px',
stepItems: [{
title: '填写信息'
}, {
title: '提交成功'
}]
});
// 用于提交操作 // 用于提交操作
form.on('submit(formStep)', function (data) { form.on('submit(formStep)', function (data) {
data = data.field; data = data.field;
@ -326,16 +509,46 @@
}); });
// 用于提交操作(组合) // 用于提交操作(组合)
form.on('submit(formStep2)', function (data) { form.on('submit(formStep2)', function (data) {
step.next('#stepForm'); data = data.field;
return false; 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 () { $('.pre').click(function () {
step.pre('#stepForm'); step.pre('#stepForm');
step.pre('#stepForm2');
}); });
$('.next').click(function () { $('.next').click(function () {
step.next('#stepForm'); step.next('#stepForm');
step.next('#stepForm2');
}); });
// 实现卡片添加 // 实现卡片添加
@ -356,7 +569,7 @@
id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/> id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i> <i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div> </div>
<input type="text" name=` + "mid" + NewIdNumber + ` class="layui-input" id=`+"mid"+NewIdNumber+` <input type="text" name=` + "mid" + NewIdNumber + ` class="layui-input" id=` + "mid" + NewIdNumber + `
style="display: none" lay-verify="required" /> style="display: none" lay-verify="required" />
</div> </div>
</div> </div>
@ -393,7 +606,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">物料单价:</label> <label class="layui-form-label">物料单价:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input name=` + "price" + NewIdNumber + ` type="number" placeholder="请填写入物料单价" id=`+"price"+NewIdNumber+` <input name=` + "price" + NewIdNumber + ` type="number" placeholder="请填写入物料单价" id=` + "price" + NewIdNumber + `
class="layui-input" lay-verify="number" > class="layui-input" lay-verify="number" >
</div> </div>
</div> </div>
@ -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) { scanLocationByQrCode = function (obj) {
parent.wx.scanQRCode({ parent.wx.scanQRCode({
@ -995,26 +1235,527 @@
}) })
}; };
// 用于实现通过编码查询组合
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) { form.on('select()', function (data) {
let elem = data.elem; //得到select原始DOM对象 let elem = data.elem; //得到select原始DOM对象
let elemId = elem.id; let elemId = elem.id;
if(elemId.indexOf("unit") === 0){ if (elemId.indexOf("unit") === 0) {
// 如果进行选择的是计量单位 // 如果进行选择的是计量单位
let id = elemId.split("unit")[1]; let id = elemId.split("unit")[1];
let mid = $("#mid"+id).val(); let mid = $("#mid" + id).val();
let unit = data.value; let unit = data.value;
let req = {}; let req = {};
req.newUnit = unit; req.newUnit = unit;
req.mid = mid; req.mid = mid;
$.ajax({ $.ajax({
url:"/split/calcPriceForSplit", url: "/split/calcPriceForSplit",
data:JSON.stringify(req), data: JSON.stringify(req),
dataType:"json", dataType: "json",
type:"post", type: "post",
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success:function (res) { success: function (res) {
let data = res.data; let data = res.data;
$("#price"+id).val(data); $("#price" + id).val(data);
} }
}); });
} }

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

@ -699,9 +699,6 @@
// 获取当前高度 // 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]); var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
if (NewIdNumber !== "") {
params2.push(NewIdNumber)
}
$("#stepForm2").css("height", height + 183 + 'px'); $("#stepForm2").css("height", height + 183 + 'px');
$("#" + "addItemForGroup" + NewIdNumber).before(materialItem); $("#" + "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) { table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data; let data = obj.data;
if (obj.event === 'detail') { if (obj.event === 'detail') {
var index = layer.open({ var index = layer.open({
title: '入库信息详情', title: '入库信息详情',
@ -266,7 +265,7 @@
maxmin: true, maxmin: true,
shadeClose: true, shadeClose: true,
area: ['100%', '100%'], area: ['100%', '100%'],
content: '/form_step_look?id=' + data.id, content: '/form_step_look?id=' + data.id+'&flagForGroup='+data.flagForGroup,
}); });
$(window).on("resize", function () { $(window).on("resize", function () {
layer.full(index); layer.full(index);

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

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

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

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

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

@ -34,10 +34,14 @@
padding-right: 0px; padding-right: 0px;
} }
.layui-form-select{ .layui-form-select {
width: 100%; width: 100%;
} }
.layui-unselect {
border-right: none
}
</style> </style>
<div class="layuimini-container"> <div class="layuimini-container">
<div class="layuimini-main"> <div class="layuimini-main">
@ -86,10 +90,10 @@
<label class="layui-form-label">条形编码:</label> <label class="layui-form-label">条形编码:</label>
<div class="layui-input-block" style="margin: 0px;"> <div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv"> <div class="inputdiv">
<input id="barCode" name="barCode" type="text" readonly <select id="barCode" name="barCode" type="text" readonly
value=""
class="layui-input" class="layui-input"
style="border-style: none"> style="border-style: none;">
</select>
<img src="/static/images/search.ico" height="16" width="16" <img src="/static/images/search.ico" height="16" width="16"
id="barCodeImg" id="barCodeImg"
style="margin-top: 10px" onclick="scanBarCode(this)"> style="margin-top: 10px" onclick="scanBarCode(this)">
@ -155,7 +159,7 @@
</div> </div>
</div> </div>
</fieldset> </fieldset>
</div> </div>
</div> </div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script> <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 src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
@ -188,28 +192,28 @@
form.on('submit(formStep)', function (data) { form.on('submit(formStep)', function (data) {
data = data.field; data = data.field;
$.ajax({ $.ajax({
url:"/split/splitAdd", url: "/split/splitAdd",
data:JSON.stringify(data), data: JSON.stringify(data),
dataType:"json", dataType: "json",
type:"post", type: "post",
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success:function (res) { success: function (res) {
layer.close(this.layerIndex); layer.close(this.layerIndex);
if (data.status >= 300) { if (data.status >= 300) {
layer.msg(data.statusInfo.detail,{ layer.msg(data.statusInfo.detail, {
icon:6, icon: 6,
time:1000 time: 1000
},function () { }, function () {
window.location="/split_add" window.location = "/split_add"
});//失败的表情 });//失败的表情
} else { } else {
layer.msg("添加成功!", { layer.msg("添加成功!", {
icon: 6,//成功的表情 icon: 6,//成功的表情
time: 1000 time: 1000
}, //1秒关闭(如果不配置,默认是3秒) }, //1秒关闭(如果不配置,默认是3秒)
function(){ function () {
//do something //do something
window.location="/split_add" window.location = "/split_add"
}); });
} }
} }
@ -220,7 +224,7 @@
// 通过名称查询物料 // 通过名称查询物料
selectMaterialByName = function (obj) { selectMaterialByName = function (obj) {
let materialName = $("#mname"); let materialName = $("#mname");
var data = materialName.val(); var data = materialName.val().split(",")[0];
var req = {}; var req = {};
req.mname = data; req.mname = data;
let materialId = $("#mid"); let materialId = $("#mid");
@ -259,10 +263,10 @@
codeValue.val(material.code); codeValue.val(material.code);
version.val(material.version); version.val(material.version);
typeName.val(material.typeName); typeName.val(material.typeName);
unit.empty();
unit.append(new Option(material.unit,material.unit)); unit.append(new Option(material.unit, material.unit));
var splitInfoList = material["splitInfoList"]; var splitInfoList = material["splitInfoList"];
$.each(splitInfoList,function (index,item) { $.each(splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素 $("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
}); });
form.render(); form.render();
@ -271,21 +275,13 @@
if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) { if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) {
// 如果有对应的条形码 // 如果有对应的条形码
$("#barCode").remove(); $("#barCode").empty();
var barCodeSelect = `
<select id="barCode" name= "barCode"></select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$.each(materialAndBarCodeList, function (index, item) { $.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 $("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
}); });
form.render(); form.render();
}else{ } else {
let children = $("#barCode").parent().children();
if(children.length > 2){
$("#barCode").empty(); $("#barCode").empty();
$(children[1]).empty();
}
} }
} }
} }
@ -329,10 +325,12 @@
} }
$("#code").val(code); $("#code").val(code);
$("#version").val(material.version); $("#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"]; var splitInfoList = material["splitInfoList"];
$.each(splitInfoList,function (index,item) { $.each(splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素 unit.append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
}); });
form.render(); form.render();
$("#typeName").val(material.typeName); $("#typeName").val(material.typeName);
@ -340,21 +338,14 @@
if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) { if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) {
// 如果有对应的条形码 // 如果有对应的条形码
$("#barCode").remove(); $("#barCode").empty()
var barCodeSelect = `
<select id="barCode" name= "barCode"></select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$.each(materialAndBarCodeList, function (index, item) { $.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 $("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
}); });
form.render(); form.render();
}else{ } else {
let children = $("#barCode").parent().children();
if(children.length > 2){
$("#barCode").empty(); $("#barCode").empty();
$(children[1]).empty();
}
} }
} }
}); });
@ -365,8 +356,7 @@
}); });
}; };
scanCodeInStorage = function (obj) { scanCode = function (obj) {
var objIdNumber = obj.id.split("qrCodeImg")[1];
parent.wx.scanQRCode({ parent.wx.scanQRCode({
desc: 'scanQRCode desc', desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
@ -376,7 +366,6 @@
var result = res.resultStr;//当needResult为1时返回处理结果 var result = res.resultStr;//当needResult为1时返回处理结果
var req = {}; var req = {};
req.qrCode = result; req.qrCode = result;
$("#qrCode" + objIdNumber).val(result);
$.ajax({ $.ajax({
url: "/material/qywxApplicationInScanQrCode", url: "/material/qywxApplicationInScanQrCode",
type: "post", type: "post",
@ -384,7 +373,56 @@
data: JSON.stringify(req), data: JSON.stringify(req),
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success: function (d) { 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 result = res.resultStr;//当needResult为1时返回处理结果
var req = {}; var req = {};
req.qrCode = result; req.qrCode = result;
let barCode = $("#barCode");
barCode.empty();
barCode.append(new Option(result, result));
$.ajax({ $.ajax({
url: "/material/qywxApplicationInScanBarCode", url: "/material/qywxApplicationInScanBarCode",
type: "post", type: "post",
@ -409,6 +450,39 @@
data: JSON.stringify(req), data: JSON.stringify(req),
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success: function (d) { 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();
})
}
} }
}) })
@ -452,12 +526,12 @@
} else { } else {
$("#mname").val(d.mname); $("#mname").val(d.mname);
$("#mid").val( d.mid); $("#mid").val(d.mid);
$("#version").val(d.version); $("#version").val(d.version);
$("#unit").empty(); $("#unit").empty();
$('#unit').append(new Option(d.unit,d.unit)); $('#unit').append(new Option(d.unit, d.unit));
var splitInfoList = d["splitInfoList"]; var splitInfoList = d["splitInfoList"];
$.each(splitInfoList,function (index,item) { $.each(splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素 $("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
}); });
form.render(); form.render();
@ -480,7 +554,7 @@
form.render(); form.render();
} else { } else {
let children = $("#barCode").parent().children(); let children = $("#barCode").parent().children();
if(children.length > 2){ if (children.length > 2) {
$("#barCode").empty(); $("#barCode").empty();
$(children[1]).empty(); $(children[1]).empty();
} }

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

@ -48,6 +48,8 @@
<id column="airid" property="id" jdbcType="INTEGER" /> <id column="airid" property="id" jdbcType="INTEGER" />
<result column="mname" property="mname" jdbcType="VARCHAR" /> <result column="mname" property="mname" jdbcType="VARCHAR" />
<result column="quantity" property="quantity" jdbcType="INTEGER" /> <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="price" property="price" jdbcType="VARCHAR" />
<result column="tname" property="materialTypeName" jdbcType="VARCHAR" /> <result column="tname" property="materialTypeName" jdbcType="VARCHAR" />
<result column="applicantTime" property="applicant_time" jdbcType="INTEGER" /> <result column="applicantTime" property="applicant_time" jdbcType="INTEGER" />
@ -137,7 +139,7 @@
</sql> </sql>
<sql id="ApplicationInRecordInfo"> <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>
<sql id="ApplicationOutRecordInfo"> <sql id="ApplicationOutRecordInfo">
@ -626,7 +628,7 @@
<!-- 插入一条入库记录--> <!-- 插入一条入库记录-->
<insert id="insertApplicationInRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id"> <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( values(
#{id}, #{id},
#{mid}, #{mid},
@ -637,7 +639,8 @@
#{depositoryId}, #{depositoryId},
#{code}, #{code},
#{applyRemark}, #{applyRemark},
#{unit} #{unit},
#{flagForGroup}
) )
</insert> </insert>

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

@ -46,6 +46,13 @@
<div class="layuimini-main"> <div class="layuimini-main">
<div class="layui-fluid"> <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 class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; ">
<div carousel-item style="overflow: inherit"> <div carousel-item style="overflow: inherit">
@ -63,9 +70,11 @@
<div class="inputdiv"> <div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" <input type="text" placeholder="请选择物料" class="layui-input"
style="border-style: none" style="border-style: none"
id="openSonByMaterial" onblur="selectMaterialByName(this)" id="openSonByMaterial"
onblur="selectMaterialByName(this)"
lay-verify="required"/> 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> id="selectMaterial" onclick="selectMaterial(this)"></i>
</div> </div>
<input type="text" name="mid" class="layui-input" id="mid" <input type="text" name="mid" class="layui-input" id="mid"
@ -77,14 +86,18 @@
<label class="layui-form-label">物料编码:</label> <label class="layui-form-label">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;"> <div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv"> <div class="inputdiv">
<input id="code" name="code" type="text" placeholder="请填写入物料编码" value="" <input id="code" name="code" type="text"
placeholder="请填写入物料编码"
value=""
onblur="selectCode(this)" onblur="selectCode(this)"
class="layui-input" lay-verify="required" class="layui-input" lay-verify="required"
style="border-style: none"> style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16" <img src="/static/images/search.ico" height="16" width="16"
id="qrCodeImg" id="qrCodeImg"
style="margin-top: 10px" onclick="scanCodeInStorage(this)"> style="margin-top: 10px"
<input id="qrCode" name="qrCode" type="text" style="display:none;"> onclick="scanCodeInStorage(this)">
<input id="qrCode" name="qrCode" type="text"
style="display:none;">
</div> </div>
</div> </div>
</div> </div>
@ -92,7 +105,8 @@
<label class="layui-form-label">条形编码:</label> <label class="layui-form-label">条形编码:</label>
<div class="layui-input-block" style="margin: 0px;"> <div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv"> <div class="inputdiv">
<input id="barCode" name="barCode" type="text" placeholder="请填写入条形编码" <input id="barCode" name="barCode" type="text"
placeholder="请填写入条形编码"
value="" value=""
class="layui-input" class="layui-input"
style="border-style: none"> style="border-style: none">
@ -102,7 +116,8 @@
</div> </div>
</div> </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> <label class="layui-form-label">生产日期:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="text" name="producedDate" id="producedDate" <input type="text" name="producedDate" id="producedDate"
@ -113,14 +128,17 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">物料单价:</label> <label class="layui-form-label">物料单价:</label>
<div class="layui-input-block"> <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"> class="layui-input" lay-verify="number">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">物料数量:</label> <label class="layui-form-label">物料数量:</label>
<div class="layui-input-block"> <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"> class="layui-input" lay-verify="number">
</div> </div>
</div> </div>
@ -144,11 +162,13 @@
<input type="text" name="depositoryId" class="layui-input" <input type="text" name="depositoryId" class="layui-input"
id="depositoryId" id="depositoryId"
style="display: none" lay-verify="required"/> 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"/> style="display: none" lay-verify="required"/>
<img src="/static/images/search.ico" height="16" width="16" <img src="/static/images/search.ico" height="16" width="16"
id="scanLocation" id="scanLocation"
style="margin-top: 10px" onclick="scanLocationByQrCode(this)"> style="margin-top: 10px"
onclick="scanLocationByQrCode(this)">
</div> </div>
</div> </div>
</div> </div>
@ -168,7 +188,8 @@
<!-- 提交按钮--> <!-- 提交按钮-->
<div class="layui-form-item" id="btn_sub"> <div class="layui-form-item" id="btn_sub">
<div class="layui-input-block" style="bottom: 15px;"> <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%"> style="margin-left: 15%">
&emsp;提交&emsp; &emsp;提交&emsp;
</button> </button>
@ -195,6 +216,120 @@
</div> </div>
</div> </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>
</div> </div>
@ -225,6 +360,10 @@
function openDepositoryTree(obj) { function openDepositoryTree(obj) {
} }
// 用于加载仓库菜单,用于组合
function selectDepositroy(object) {
}
// 用于扫码入库 // 用于扫码入库
function scanCodeInStorage(obj) { function scanCodeInStorage(obj) {
} }
@ -244,16 +383,47 @@
} }
// 用于重新渲染页面(组合)
function CoverpageForGroup() {
}
// 用于组合名称查询
function selectGroupByName() {
}
// 用于点击搜索按钮(组合)
function selectGroup(obj) {
}
// 用于编码查询(用于组合)
function selectCodeForGroup(obj) {
}
// 实现卡片删除(组合)
function deleteItemForGroup(){
}
// 实现卡片添加(组合)
function addItemForGroup(){
}
// 用于暂存卡片个数 // 用于暂存卡片个数
var params = []; var params = [];
let scanValue = {}; let scanValue = {};
// 用于卡片编号 // 用于卡片编号
var NewIdNumber = 1; var NewIdNumber = 1;
layui.use(['form', 'step', 'flow', 'laydate'], function () {
// 用于暂存卡片个数(组合)
var params2 = [];
layui.use(['form', 'step', 'flow', 'laydate','element'], function () {
var $ = layui.$, var $ = layui.$,
form = layui.form, form = layui.form,
laydate = layui.laydate, laydate = layui.laydate,
element = layui.element,
step = layui.step; step = layui.step;
// 用于分步表单加载 // 用于分步表单加载
@ -268,6 +438,19 @@
title: '提交成功' title: '提交成功'
}] }]
}); });
step.render({
elem: '#stepForm2',
filter: 'stepForm2',
width: '100%', //设置容器宽度
height: '600px',
stepItems: [{
title: '填写信息'
}, {
title: '提交成功'
}]
});
// 用于提交操作 // 用于提交操作
form.on('submit(formStep)', function (data) { form.on('submit(formStep)', function (data) {
data = data.field; data = data.field;
@ -326,16 +509,46 @@
}); });
// 用于提交操作(组合) // 用于提交操作(组合)
form.on('submit(formStep2)', function (data) { form.on('submit(formStep2)', function (data) {
step.next('#stepForm'); data = data.field;
return false; 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 () { $('.pre').click(function () {
step.pre('#stepForm'); step.pre('#stepForm');
step.pre('#stepForm2');
}); });
$('.next').click(function () { $('.next').click(function () {
step.next('#stepForm'); step.next('#stepForm');
step.next('#stepForm2');
}); });
// 实现卡片添加 // 实现卡片添加
@ -356,7 +569,7 @@
id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/> id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i> <i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div> </div>
<input type="text" name=` + "mid" + NewIdNumber + ` class="layui-input" id=`+"mid"+NewIdNumber+` <input type="text" name=` + "mid" + NewIdNumber + ` class="layui-input" id=` + "mid" + NewIdNumber + `
style="display: none" lay-verify="required" /> style="display: none" lay-verify="required" />
</div> </div>
</div> </div>
@ -393,7 +606,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">物料单价:</label> <label class="layui-form-label">物料单价:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input name=` + "price" + NewIdNumber + ` type="number" placeholder="请填写入物料单价" id=`+"price"+NewIdNumber+` <input name=` + "price" + NewIdNumber + ` type="number" placeholder="请填写入物料单价" id=` + "price" + NewIdNumber + `
class="layui-input" lay-verify="number" > class="layui-input" lay-verify="number" >
</div> </div>
</div> </div>
@ -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) { scanLocationByQrCode = function (obj) {
parent.wx.scanQRCode({ parent.wx.scanQRCode({
@ -995,26 +1235,527 @@
}) })
}; };
// 用于实现通过编码查询组合
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) { form.on('select()', function (data) {
let elem = data.elem; //得到select原始DOM对象 let elem = data.elem; //得到select原始DOM对象
let elemId = elem.id; let elemId = elem.id;
if(elemId.indexOf("unit") === 0){ if (elemId.indexOf("unit") === 0) {
// 如果进行选择的是计量单位 // 如果进行选择的是计量单位
let id = elemId.split("unit")[1]; let id = elemId.split("unit")[1];
let mid = $("#mid"+id).val(); let mid = $("#mid" + id).val();
let unit = data.value; let unit = data.value;
let req = {}; let req = {};
req.newUnit = unit; req.newUnit = unit;
req.mid = mid; req.mid = mid;
$.ajax({ $.ajax({
url:"/split/calcPriceForSplit", url: "/split/calcPriceForSplit",
data:JSON.stringify(req), data: JSON.stringify(req),
dataType:"json", dataType: "json",
type:"post", type: "post",
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success:function (res) { success: function (res) {
let data = res.data; let data = res.data;
$("#price"+id).val(data); $("#price" + id).val(data);
} }
}); });
} }

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

@ -699,9 +699,6 @@
// 获取当前高度 // 获取当前高度
var height = parseInt(($("#stepForm2").css('height')).split("px")[0]); var height = parseInt(($("#stepForm2").css('height')).split("px")[0]);
if (NewIdNumber !== "") {
params2.push(NewIdNumber)
}
$("#stepForm2").css("height", height + 183 + 'px'); $("#stepForm2").css("height", height + 183 + 'px');
$("#" + "addItemForGroup" + NewIdNumber).before(materialItem); $("#" + "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">' + lis.push('<div class="layui-col-md4 my-card-context">' +
'<h4> 物料名称:' + data[i].mname + '</h4>' + '<h4> 物料名称:' + data[i].mname + '</h4>' +
'<h4> 物料编码:' + data[i].mcode + '</h4>' + '<h4> 物料编码:' + data[i].mcode + '</h4>' +
'<h4> 出库数量:' + data[i].showQuantity + '</h4>' + '<h4> 出库数量:' + data[i].quantity + '</h4>' +
'<h4> 处理人:' + data[i].checkerName + '</h4>' + '<h4> 处理人:' + data[i].checkerName + '</h4>' +
'<h4> 生产日期:' + producedDate+ '</h4>' + '<h4> 生产日期:' + producedDate+ '</h4>' +
'<h4> 所处库位:' + data[i].pcode + '</h4>' + '<h4> 所处库位:' + data[i].pcode + '</h4>' +

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

@ -42,6 +42,10 @@
<td>数量</td> <td>数量</td>
<td id="quantity" th:text="${recordMinP.getQuantity()}">409</td> <td id="quantity" th:text="${recordMinP.getQuantity()}">409</td>
</tr> </tr>
<tr>
<td>单位</td>
<td id="unit" th:text="${recordMinP.getUnit()}">409</td>
</tr>
<tr> <tr>
<td>金额</td> <td>金额</td>
<td id="price" th:text="${recordMinP.getPrice()}">2016-11-28</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) { table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data; let data = obj.data;
if (obj.event === 'detail') { if (obj.event === 'detail') {
var index = layer.open({ var index = layer.open({
title: '入库信息详情', title: '入库信息详情',
@ -266,7 +265,7 @@
maxmin: true, maxmin: true,
shadeClose: true, shadeClose: true,
area: ['100%', '100%'], area: ['100%', '100%'],
content: '/form_step_look?id=' + data.id, content: '/form_step_look?id=' + data.id+'&flagForGroup='+data.flagForGroup,
}); });
$(window).on("resize", function () { $(window).on("resize", function () {
layer.full(index); layer.full(index);

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

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

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

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

Loading…
Cancel
Save