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. 68
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  4. 71
      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. 1027
      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. 20
      src/main/resources/templates/pages/material/selectDepositoryByCard.html
  19. 8
      src/main/resources/templates/pages/scanQrCode/ScanBarOrQrCodeOut.html
  20. 244
      src/main/resources/templates/pages/split/split_add.html
  21. 9
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  22. 1027
      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. 20
      target/classes/templates/pages/material/selectDepositoryByCard.html
  28. 8
      target/classes/templates/pages/scanQrCode/ScanBarOrQrCodeOut.html

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

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

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

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

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

@ -768,39 +768,43 @@ public class MaterialController {
String mcode = materialService.findMaterialCodeByQrCode(qrCode);
// 根据物料编码获取物料
Material material = materialService.findMaterialByCode(mcode);
Map<String, Object> param = new HashMap<>();
List<PlaceP> placePList = new ArrayList<>();
param.put("mcode", mcode);
InventoryP ip = null;
// 获取物料与条形码的对应关系
List<MaterialAndBarCode> materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param);
for (int j = 0; j < depositoryByAdminorg.size(); j++) {
Depository depository = depositoryByAdminorg.get(j);
param.put("mcode", material.getCode());
param.put("depositoryId", depository.getId());
// 获取当前仓库下是否有当前物料的库存
List<InventoryP> inventory = materialService.findInventory(param);
if (inventory.size() > 0) {
ip = inventory.get(0);
List<PlaceP> place = placeService.findPlaceByMidAndDid(ip.getMid(), depository.getId());
placePList.addAll(place);
if(material != null) {
Map<String, Object> param = new HashMap<>();
List<PlaceP> placePList = new ArrayList<>();
param.put("mcode", mcode);
InventoryP ip = null;
// 获取物料与条形码的对应关系
List<MaterialAndBarCode> materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param);
for (int j = 0; j < depositoryByAdminorg.size(); j++) {
Depository depository = depositoryByAdminorg.get(j);
param.put("mcode", material.getCode());
param.put("depositoryId", depository.getId());
// 获取当前仓库下是否有当前物料的库存
List<InventoryP> inventory = materialService.findInventory(param);
if (inventory.size() > 0) {
ip = inventory.get(0);
List<PlaceP> place = placeService.findPlaceByMidAndDid(ip.getMid(), depository.getId());
placePList.addAll(place);
}
}
}
if (ip != null) {
// 设置当前物料在相关仓库下的所有库位
ip.setPlacePList(placePList);
// 设置物料与条形码的对应关系
ip.setMaterialAndBarCodeList(materialByBarCodeByCondition);
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(ip.getMid());
ip.setSplitInfoList(splitInfoByMid);
return new RestResponse(ip);
} else {
MaterialP mp = new MaterialP(material);
// 设置物料与条形码的对应关系
mp.setMaterialAndBarCodeList(materialByBarCodeByCondition);
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(mp.getMid());
mp.setSplitInfoList(splitInfoByMid);
return new RestResponse(mp);
if (ip != null) {
// 设置当前物料在相关仓库下的所有库位
ip.setPlacePList(placePList);
// 设置物料与条形码的对应关系
ip.setMaterialAndBarCodeList(materialByBarCodeByCondition);
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(ip.getMid());
ip.setSplitInfoList(splitInfoByMid);
return new RestResponse(ip);
} else {
MaterialP mp = new MaterialP(material);
// 设置物料与条形码的对应关系
mp.setMaterialAndBarCodeList(materialByBarCodeByCondition);
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(mp.getMid());
mp.setSplitInfoList(splitInfoByMid);
return new RestResponse(mp);
}
}else{
return new RestResponse(null);
}

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

@ -508,15 +508,15 @@ public class PageController {
if ("-1".equals(unit)) {
// 如果转移的基础单位
mv.addObject("quantity", placeAndMaterialByMidAndPid.getQuantity());
}else{
} else {
// 获取当前的拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>();
Map<String, Object> paramForSplitInfo = new HashMap<>();
Inventory inventoryById = materialService.findInventoryById(mid);
paramForSplitInfo.put("mid",inventoryById.getMid());
paramForSplitInfo.put("newUnit",unit);
paramForSplitInfo.put("mid", inventoryById.getMid());
paramForSplitInfo.put("newUnit", unit);
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), splitInfo.getId());
mv.addObject("quantity",splitInventory.getSaveQuantity());
mv.addObject("quantity", splitInventory.getSaveQuantity());
}
mv.addObject("depositoryId", depositoryId);
mv.addObject("mid", mid);
@ -528,13 +528,14 @@ public class PageController {
// 专用于卡片仓库树形菜单页面
@GetMapping("/selectDepositoryByCard")
public ModelAndView selectDepositoryByCard(Integer type, String clickObj, HttpServletRequest request) {
public ModelAndView selectDepositoryByCard(Integer type, String clickObj, @RequestParam(value = "flagForGroup", required = false) boolean flagForGroup, HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
if (type == 1) {
Integer maindeparment = userToken.getMaindeparment();
mv.addObject("adminorg", maindeparment);
mv.addObject("clickObj", clickObj);
mv.addObject("flagForGroup", flagForGroup);
}
mv.setViewName("pages/material/selectDepositoryByCard");
return mv;
@ -821,7 +822,7 @@ public class PageController {
if (gid != null) {
mv.addObject("gid", gid);
Group groupOnlyById = groupService.findGroupOnlyById(gid);
mv.addObject("group",groupOnlyById);
mv.addObject("group", groupOnlyById);
} else {
mv.addObject("gid", -1);
}
@ -867,7 +868,7 @@ public class PageController {
if (groupInfoByMidAndGid != null) {
mv.addObject("record", groupInfoByMidAndGid);
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(groupInfoByMidAndGid.getMid());
mv.addObject("splitList",splitInfoByMid);
mv.addObject("splitList", splitInfoByMid);
} else {
throw new MyException("缺少必要参数!");
}
@ -1274,15 +1275,15 @@ public class PageController {
sumUnit.append(inventoryById.getUnit()).append(",");
} else {
// 用于获取当前拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit",unit);
paramForSplitInfo.put("mid",inventoryById.getMid());
Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit", unit);
paramForSplitInfo.put("mid", inventoryById.getMid());
// 获取拆单记录
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 获取当前拆单与基础单位的进制
int scale = splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1);
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")
public ModelAndView form_step_look(Integer id, HttpServletRequest request) {
public ModelAndView form_step_look(Integer id, Integer flagForGroup, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/application/form-step-look");
if (id != null) {
ApplicationInRecordP applicationInRecordPById = depositoryRecordService.findApplicationInRecordPById(id);
UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationInRecordPById.getApplicantId(), userToken);
applicationInRecordPById.setApplicantName(userByPort.getName());
applicationInRecordPById.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordPById.getApplicantTime())));
applicationInRecordPById.setPrice(applicationInRecordPById.getPrice() / 100);
mv.addObject("record", applicationInRecordPById);
if (Integer.compare(flagForGroup, 2) != 0) {
// 如果不是组合
UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationInRecordPById.getApplicantId(), userToken);
applicationInRecordPById.setApplicantName(userByPort.getName());
applicationInRecordPById.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordPById.getApplicantTime())));
applicationInRecordPById.setPrice(applicationInRecordPById.getPrice() / 100);
mv.addObject("record", applicationInRecordPById);
} else {
// 如果是组合
// 获取组合数据
Group group = groupService.findGroupOnlyById(applicationInRecordPById.getMid());
// 获取组合详情数据
List<GroupInfo> groupInfoList = groupService.findGroupInfoByGid(applicationInRecordPById.getMid());
mv.addObject("group",group);
mv.addObject("groupInfoList",groupInfoList);
mv.addObject("record", applicationInRecordPById);
mv.setViewName("pages/application/form-step-look_group");
}
} else {
throw new MyException("缺少必要参数!");
}
@ -1369,17 +1384,17 @@ public class PageController {
recordMinP.setMcode(inventoryById.getCode());
recordMinP.setPlaceCode(placeById.getCode());
String unit = recordMinP.getUnit();
if("-1".equals(unit)){
if ("-1".equals(unit)) {
recordMinP.setUnit(inventoryById.getUnit());
double price = (inventoryById.getPrice()) * recordMinP.getQuantity();
BigDecimal bg = new BigDecimal(price);
price = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
recordMinP.setPrice(price);
}else{
} else {
// 用于获取拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit",unit);
paramForSplitInfo.put("mid",inventoryById.getMid());
Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit", unit);
paramForSplitInfo.put("mid", inventoryById.getMid());
// 获取拆单记录
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 获取当前拆单与基础单位的进制
@ -1462,16 +1477,16 @@ public class PageController {
sumQuantity += applicationOutRecordMin.getQuantity();
// 获取当前计量单位
String unit = recordMinP.getUnit();
if("-1".equals(unit)){
if ("-1".equals(unit)) {
// 如果是基础单位
sumPrice += (inventoryById.getPrice() * applicationOutRecordMin.getQuantity());
}else{
} else {
// 如果是拆单
// 用于获取拆单记录
Map<String,Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit",unit);
paramForSplitInfo.put("mid",inventoryById.getMid());
Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("newUnit", unit);
paramForSplitInfo.put("mid", inventoryById.getMid());
// 查询拆单记录
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" />
<result column="mname" property="mname" jdbcType="VARCHAR" />
<result column="quantity" property="quantity" jdbcType="INTEGER" />
<result column="mid" property="mid" jdbcType="INTEGER" />
<result column="flagForGroup" property="flagForGroup" jdbcType="INTEGER" />
<result column="price" property="price" jdbcType="VARCHAR" />
<result column="tname" property="materialTypeName" jdbcType="VARCHAR" />
<result column="applicantTime" property="applicant_time" jdbcType="INTEGER" />
@ -137,7 +139,7 @@
</sql>
<sql id="ApplicationInRecordInfo">
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit,flagForGroup,mid
</sql>
<sql id="ApplicationOutRecordInfo">
@ -626,7 +628,7 @@
<!-- 插入一条入库记录-->
<insert id="insertApplicationInRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id">
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit)
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit,flagForGroup)
values(
#{id},
#{mid},
@ -637,7 +639,8 @@
#{depositoryId},
#{code},
#{applyRemark},
#{unit}
#{unit},
#{flagForGroup}
)
</insert>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

File diff suppressed because it is too large

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

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

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

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

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

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

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

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

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

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

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

@ -34,10 +34,14 @@
padding-right: 0px;
}
.layui-form-select{
.layui-form-select {
width: 100%;
}
.layui-unselect {
border-right: none
}
</style>
<div class="layuimini-container">
<div class="layuimini-main">
@ -86,10 +90,10 @@
<label class="layui-form-label">条形编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="barCode" name="barCode" type="text" readonly
value=""
class="layui-input"
style="border-style: none">
<select id="barCode" name="barCode" type="text" readonly
class="layui-input"
style="border-style: none;">
</select>
<img src="/static/images/search.ico" height="16" width="16"
id="barCodeImg"
style="margin-top: 10px" onclick="scanBarCode(this)">
@ -149,13 +153,13 @@
</button>
</div>
</div>
</form>
</form>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</fieldset>
</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>
@ -188,28 +192,28 @@
form.on('submit(formStep)', function (data) {
data = data.field;
$.ajax({
url:"/split/splitAdd",
data:JSON.stringify(data),
dataType:"json",
type:"post",
url: "/split/splitAdd",
data: JSON.stringify(data),
dataType: "json",
type: "post",
contentType: "application/json;charset=utf-8",
success:function (res) {
success: function (res) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.detail,{
icon:6,
time:1000
},function () {
window.location="/split_add"
layer.msg(data.statusInfo.detail, {
icon: 6,
time: 1000
}, function () {
window.location = "/split_add"
});//失败的表情
} else {
layer.msg("添加成功!", {
icon: 6,//成功的表情
time: 1000
}, //1秒关闭(如果不配置,默认是3秒)
function(){
function () {
//do something
window.location="/split_add"
window.location = "/split_add"
});
}
}
@ -220,7 +224,7 @@
// 通过名称查询物料
selectMaterialByName = function (obj) {
let materialName = $("#mname");
var data = materialName.val();
var data = materialName.val().split(",")[0];
var req = {};
req.mname = data;
let materialId = $("#mid");
@ -259,10 +263,10 @@
codeValue.val(material.code);
version.val(material.version);
typeName.val(material.typeName);
unit.append(new Option(material.unit,material.unit));
unit.empty();
unit.append(new Option(material.unit, material.unit));
var splitInfoList = material["splitInfoList"];
$.each(splitInfoList,function (index,item) {
$.each(splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
});
form.render();
@ -271,21 +275,13 @@
if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$("#barCode").remove();
var barCodeSelect = `
<select id="barCode" name= "barCode"></select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$("#barCode").empty();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
}else{
let children = $("#barCode").parent().children();
if(children.length > 2){
$("#barCode").empty();
$(children[1]).empty();
}
} else {
$("#barCode").empty();
}
}
}
@ -329,10 +325,12 @@
}
$("#code").val(code);
$("#version").val(material.version);
$("#unit").append(new Option(material.unit,material.unit));
let unit = $("#unit");
unit.empty();
unit.append(new Option(material.unit, material.unit));
var splitInfoList = material["splitInfoList"];
$.each(splitInfoList,function (index,item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
$.each(splitInfoList, function (index, item) {
unit.append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
});
form.render();
$("#typeName").val(material.typeName);
@ -340,21 +338,14 @@
if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$("#barCode").remove();
var barCodeSelect = `
<select id="barCode" name= "barCode"></select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$("#barCode").empty()
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
}else{
let children = $("#barCode").parent().children();
if(children.length > 2){
$("#barCode").empty();
$(children[1]).empty();
}
} else {
$("#barCode").empty();
}
}
});
@ -365,8 +356,7 @@
});
};
scanCodeInStorage = function (obj) {
var objIdNumber = obj.id.split("qrCodeImg")[1];
scanCode = function (obj) {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
@ -376,7 +366,6 @@
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
$("#qrCode" + objIdNumber).val(result);
$.ajax({
url: "/material/qywxApplicationInScanQrCode",
type: "post",
@ -384,7 +373,56 @@
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
// 如果没有对应关系
layer.msg("对于编码:" + result + ",并未发现对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
$("#mname").val("");
$("#code").val("");
$("#mid").val("");
$("#typeName").val("");
$("#version").val("");
$("#barCode").empty();
$("#unit").empty();
})
} else {
// 如果有对应关系
$("#mname").val(data.mname);
$("#mid").val(data.mid);
$("#code").val(data.code);
$("#version").val(data.version);
$("#typeName").val(data.typeName);
let barCode = $("#barCode");
barCode.empty();
var materialAndBarCodeList = data["materialAndBarCodeList"];
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$.each(materialAndBarCodeList, function (index, item) {
barCode.append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
}
var shelfLife = data.shelfLife;
if (shelfLife !== null && shelfLife !== undefined) {
$("#producedDateItem").show();
$("#producedDate").attr("lay-verify", "required");
} else {
$("#producedDateItem").hide();
form.render();
}
var unit = $("#unit");
unit.empty();
unit.append(new Option(data.unit, "-1"));
var unitList = data["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
unit.append(new Option(unitList[i].newUnit, unitList[i].newUnit));
}
form.render();
}
}
})
@ -394,34 +432,70 @@
scanBarCode = function (obj) {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
$.ajax({
url: "/material/qywxApplicationInScanBarCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
}
})
},
error: function (res) {
if (res.errMsg.indexOf('function_not_exist') > 0) {
alert('版本过低请升级')
}
alert(res)
}
});
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
let barCode = $("#barCode");
barCode.empty();
barCode.append(new Option(result, result));
$.ajax({
url: "/material/qywxApplicationInScanBarCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
let material = d.data.material;
let unit = $("#unit");
if (material !== null) {
$("#mname").val(material.mname);
$("#code").val(material.mcode);
$("#mid").val(material.mid);
$("#typeName").val(material.tname);
$("#version").val(material.version);
unit.empty();
unit.append(new Option(material.unit, material.unit));
let splitInfoList = material.splitInfoList;
if (splitInfoList !== null && splitInfoList.length > 0) {
$.each(splitInfoList, function (index, item) {
unit.append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
});
}
form.render();
} else {
layer.msg("对于编码:" + result + ",并未发现对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
$("#mname").val("");
$("#code").val("");
$("#mid").val("");
$("#typeName").val("");
$("#version").val("");
unit.empty();
$("#barCode").empty();
})
}
}
})
},
error: function (res) {
if (res.errMsg.indexOf('function_not_exist') > 0) {
alert('版本过低请升级')
}
alert(res)
}
});
};
// 用于实现通过编码查询物料
@ -452,12 +526,12 @@
} else {
$("#mname").val(d.mname);
$("#mid").val( d.mid);
$("#mid").val(d.mid);
$("#version").val(d.version);
$("#unit").empty();
$('#unit').append(new Option(d.unit,d.unit));
$('#unit').append(new Option(d.unit, d.unit));
var splitInfoList = d["splitInfoList"];
$.each(splitInfoList,function (index,item) {
$.each(splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
});
form.render();
@ -480,7 +554,7 @@
form.render();
} else {
let children = $("#barCode").parent().children();
if(children.length > 2){
if (children.length > 2) {
$("#barCode").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" />
<result column="mname" property="mname" jdbcType="VARCHAR" />
<result column="quantity" property="quantity" jdbcType="INTEGER" />
<result column="mid" property="mid" jdbcType="INTEGER" />
<result column="flagForGroup" property="flagForGroup" jdbcType="INTEGER" />
<result column="price" property="price" jdbcType="VARCHAR" />
<result column="tname" property="materialTypeName" jdbcType="VARCHAR" />
<result column="applicantTime" property="applicant_time" jdbcType="INTEGER" />
@ -137,7 +139,7 @@
</sql>
<sql id="ApplicationInRecordInfo">
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit,flagForGroup,mid
</sql>
<sql id="ApplicationOutRecordInfo">
@ -626,7 +628,7 @@
<!-- 插入一条入库记录-->
<insert id="insertApplicationInRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id">
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit)
insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit,flagForGroup)
values(
#{id},
#{mid},
@ -637,7 +639,8 @@
#{depositoryId},
#{code},
#{applyRemark},
#{unit}
#{unit},
#{flagForGroup}
)
</insert>

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

File diff suppressed because it is too large

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

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

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save