Browse Source

[feat] 工程管理

新增开发修改单修改页面:新增开发修改单提交方法
新增开发修改单后端加载修改窗口接口
新增开发修改单修改保存后端接口
新增开发修改单 开发修改物料后端查询接口
新增开发修改单 采购修改物料后端查询接口
新增开发修改单提交审批后端接口
新增开发修改单加载审批弹窗后端接口
新增开发修改单自动绑定页面字段后端接口
新增开发修改单 完成任务后端接口
修改开发修改单和开发修改单详情 开发单号字段两者保持一致
dev
liuxiaoxu 7 months ago
parent
commit
88060fce05
  1. 167
      ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpDevelopModifyorderController.java
  2. 12
      ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpDevelopModifyorder.java
  3. 12
      ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpDevelopModifyorderDetail.java
  4. 5
      ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpDevelopModifyorderDetailMapper.java
  5. 9
      ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpDevelopModifyorderMapper.java
  6. 24
      ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpDevelopModifyorderService.java
  7. 132
      ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpDevelopModifyorderServiceImpl.java
  8. 15
      ruoyi-admin/src/main/resources/mapper/erp/ErpDevelopModifyorderDetailMapper.xml
  9. 19
      ruoyi-admin/src/main/resources/mapper/erp/ErpDevelopModifyorderMapper.xml
  10. 744
      ruoyi-admin/src/main/resources/templates/erp/developModifyOrder/edit.html

167
ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpDevelopModifyorderController.java

@ -1,17 +1,27 @@
package com.ruoyi.erp.controller;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.erp.domain.ErpDevelopModifyorderDetail;
import com.ruoyi.erp.domain.ErpMaterial;
import com.ruoyi.erp.domain.ErpMaterialVo;
import com.ruoyi.erp.domain.vo.ErpDevelopModifyorderVo;
import com.ruoyi.erp.service.IErpMaterialService;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO;
import com.ruoyi.system.domain.SysMakeOrder;
import com.ruoyi.system.domain.SysMakeorderDept;
import com.ruoyi.system.domain.SysSalesOrderChild;
import com.ruoyi.system.mapper.SysMakeOrderMapper;
import com.ruoyi.system.service.ISysSalesOrderChildService;
import com.ruoyi.system.service.ISysUserService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -26,6 +36,9 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* 开发修改单Controller
*
@ -53,6 +66,15 @@ public class ErpDevelopModifyorderController extends BaseController
@Autowired
private IErpMaterialService erpMaterialService;
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private IProcessService processService;
@RequiresPermissions("erp:developModifyOrder:view")
@GetMapping()
@ -117,7 +139,9 @@ public class ErpDevelopModifyorderController extends BaseController
@ResponseBody
public AjaxResult addSave(@RequestBody ErpDevelopModifyorder erpDevelopModifyorder)
{
return toAjax(erpDevelopModifyorderService.insertErpDevelopModifyorder(erpDevelopModifyorder));
erpDevelopModifyorderService.submitApply(erpDevelopModifyorder);
return AjaxResult.success();
}
@ -169,6 +193,96 @@ public class ErpDevelopModifyorderController extends BaseController
/**
* 加载审批弹窗
* @param taskId
* @param mmap
* @return
*/
@GetMapping("/showVerifyDialog/{taskId}")
public String showVerifyDialog(@PathVariable("taskId") String taskId, ModelMap mmap) {
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String processInstanceId = task.getProcessInstanceId();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
ErpDevelopModifyorderVo erpDevelopModifyorderVo = erpDevelopModifyorderService.selectErpDevelopModifyorderById(new Long(processInstance.getBusinessKey()));
mmap.put("formData", erpDevelopModifyorderVo);
mmap.put("taskId", taskId);
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1);
return prefix + "/task" + verifyName;
}
/**
* 自动绑定页面字段
*/
@ModelAttribute("preloadObj")
public ErpDevelopModifyorderVo getObj(@RequestParam(value = "developOrderId", required = false) Long developOrderId, HttpSession session) {
if (developOrderId != null) {
return erpDevelopModifyorderService.selectErpDevelopModifyorderById(developOrderId);
}
return new ErpDevelopModifyorderVo();
}
/**
* 完成任务
*
* @return
*/
@RequestMapping(value = "/complete/{taskId}", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public AjaxResult complete(@PathVariable("taskId") String taskId, @RequestParam(value = "saveEntity", required = false) String saveEntity,
@ModelAttribute("preloadObj") ErpDevelopModifyorderVo erpDevelopModifyorderVo, HttpServletRequest request) {
boolean saveEntityBoolean = BooleanUtils.toBoolean(saveEntity);
//获取实例id
String instanceId = erpDevelopModifyorderVo.getInstanceId();
//获取实例类型
String instanceType = erpDevelopModifyorderVo.getInstanceType();
boolean approvedFlag = processService.complete(taskId, instanceId, erpDevelopModifyorderVo.getApplyTitle(), erpDevelopModifyorderVo.getDevelopOrderCode(), "developModifyOrder", new HashMap<String, Object>(), request);
if(!approvedFlag){
// 审核状态-审核拒绝
erpDevelopModifyorderVo.setAuditStatus("2");
}
// 如果任务已结束更新业务表状态
boolean processIsFinish = processService.judgeProcessIsFinish(instanceId);
if (processIsFinish) {
// 审核通过
erpDevelopModifyorderVo.setAuditStatus("1");
String developOderCode = erpDevelopModifyorderVo.getDevelopOrderCode();
// SalesAftersalesNoticeVO tempSalesAftersalesNoticeVO = salesAftersalesNoticeService.selectSalesAftersalesNoticeByCode(aftersalesNoticeCode);
//
// //如果审核通过生成售后单
// aftersalesOrderService.generateAftersalesOrderBySalesAftersalesNotice(tempSalesAftersalesNoticeVO);
// 提交
if("submit".equals(instanceType)){
// 使用状态-是
// erpBomVo.setUseStatus("1");
}
// 作废
else if("cancel".equals(instanceType)){
// 使用状态-已作废
// erpBomVo.setUseStatus("2");
}
// 恢复
else if("restore".equals(instanceType)){
// 使用状态-是
// erpBomVo.setUseStatus("1");
}
}
erpDevelopModifyorderService.updateErpDevelopModifyorder(erpDevelopModifyorderVo);
// 驳回申请后继续申请,可能修改表单
if (saveEntityBoolean) {
erpDevelopModifyorderService.updateErpDevelopModifyorder(erpDevelopModifyorderVo);
}
return success("任务已完成");
}
/**
* 修改开发修改单
*/
@ -176,9 +290,49 @@ public class ErpDevelopModifyorderController extends BaseController
public String edit(@PathVariable("developOrderId") Long developOrderId, ModelMap mmap)
{
ErpDevelopModifyorder erpDevelopModifyorder = erpDevelopModifyorderService.selectErpDevelopModifyorderById(developOrderId);
mmap.put("beforeUpdateRemark", erpDevelopModifyorder.getBeforeUpdateRemark());
mmap.put("afterUpdateRemark", erpDevelopModifyorder.getAfterUpdateRemark());
mmap.put("erpDevelopModifyorder", erpDevelopModifyorder);
return prefix + "/edit";
}
/**
* 修改保存开发修改单
*/
@RequiresPermissions("erp:developModifyOrder:edit")
@Log(title = "开发修改单", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(@RequestBody ErpDevelopModifyorder erpDevelopModifyorder)
{
return toAjax(erpDevelopModifyorderService.updateErpDevelopModifyorder(erpDevelopModifyorder));
}
/**
* 修改开发修改单 开发修改物料查询
*/
@PostMapping("/getDevelopModifyMaterialById")
@ResponseBody
public TableDataInfo getDevelopModifyMaterialById(@RequestParam("developOrderId") Long developOrderId)
{
startPage();
List<ErpDevelopModifyorder> erpDevelopModifyorderList = erpDevelopModifyorderService.selectDevelopModifyMaterialById(developOrderId);
return getDataTable(erpDevelopModifyorderList);
}
/**
* 修改开发修改单 采购修改物料查询
*/
@PostMapping("/getDevelopModifyDetailMaterialByCode")
@ResponseBody
public TableDataInfo getDevelopModifyDetailMaterialByCode(@RequestParam("developOrderCode") String developOrderCode)
{
startPage();
List<ErpDevelopModifyorderDetail> erpDevelopModifyorderDetailList = erpDevelopModifyorderService.selectDevelopModifyDetailMaterialByCode(developOrderCode);
return getDataTable(erpDevelopModifyorderDetailList);
}
/**相关人员确认*/
@GetMapping("/confirm/{developOrderId}")
public String confrimDetail(@PathVariable("developOrderId") Long developOrderId, ModelMap mmap)
@ -195,17 +349,6 @@ public class ErpDevelopModifyorderController extends BaseController
mmap.put("erpDevelopModifyorder", erpDevelopModifyorder);
return prefix + "/pickAdd";
}
/**
* 修改保存开发修改单
*/
@RequiresPermissions("erp:developModifyOrder:edit")
@Log(title = "开发修改单", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(ErpDevelopModifyorder erpDevelopModifyorder)
{
return toAjax(erpDevelopModifyorderService.updateErpDevelopModifyorder(erpDevelopModifyorder));
}
/**
* 查看开发修改单详情

12
ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpDevelopModifyorder.java

@ -25,7 +25,7 @@ public class ErpDevelopModifyorder extends BaseEntity
/** 开发修改单号 */
@Excel(name = "开发修改单号")
private String developOderCode;
private String developOrderCode;
/** 生产单号 */
@Excel(name = "生产单号")
@ -162,14 +162,14 @@ public class ErpDevelopModifyorder extends BaseEntity
{
return developOrderId;
}
public void setDevelopOderCode(String developOderCode)
public void setDevelopOrderCode(String developOrderCode)
{
this.developOderCode = developOderCode;
this.developOrderCode = developOrderCode;
}
public String getDevelopOderCode()
public String getDevelopOrderCode()
{
return developOderCode;
return developOrderCode;
}
public void setMaterialNo(String materialNo)
{
@ -426,7 +426,7 @@ public class ErpDevelopModifyorder extends BaseEntity
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("developOrderId", getDevelopOrderId())
.append("developOderCode", getDevelopOderCode())
.append("developOrderCode", getDevelopOrderCode())
.append("makeNo",getMakeNo())
.append("materialNo", getMaterialNo())
.append("purchaseStorageStatus", getPurchaseStorageStatus())

12
ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpDevelopModifyorderDetail.java

@ -22,7 +22,7 @@ public class ErpDevelopModifyorderDetail extends BaseEntity
/** 开发修改单单号 */
@Excel(name = "开发修改单单号")
private String developOderCode;
private String developOrderCode;
/** 生产单号 */
@Excel(name = "生产单号")
@ -82,14 +82,14 @@ public class ErpDevelopModifyorderDetail extends BaseEntity
{
return developOrderDetailId;
}
public void setDevelopOderCode(String developOderCode)
public void setDevelopOrderCode(String developOrderCode)
{
this.developOderCode = developOderCode;
this.developOrderCode = developOrderCode;
}
public String getDevelopOderCode()
public String getDevelopOrderCode()
{
return developOderCode;
return developOrderCode;
}
public void setMakeNo(String makeNo)
{
@ -204,7 +204,7 @@ public class ErpDevelopModifyorderDetail extends BaseEntity
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("developOrderDetailId", getDevelopOrderDetailId())
.append("developOderCode", getDevelopOderCode())
.append("developOrderCode", getDevelopOrderCode())
.append("makeNo", getMakeNo())
.append("materialNo", getMaterialNo())
.append("materialName", getMaterialName())

5
ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpDevelopModifyorderDetailMapper.java

@ -74,4 +74,9 @@ public interface ErpDevelopModifyorderDetailMapper
* @return 结果
*/
public int restoreErpDevelopModifyorderDetailById(Long developOrderDetailId);
/**
* 根据开发修改单号查询开发修改详情物料信息
* */
List<ErpDevelopModifyorderDetail> selectDevelopModifyDetailMaterialByCode(String developOrderCode);
}

9
ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpDevelopModifyorderMapper.java

@ -2,6 +2,7 @@ package com.ruoyi.erp.mapper;
import java.util.List;
import com.ruoyi.erp.domain.ErpDevelopModifyorder;
import com.ruoyi.erp.domain.vo.ErpDevelopModifyorderVo;
/**
* 开发修改单Mapper接口
@ -17,7 +18,7 @@ public interface ErpDevelopModifyorderMapper
* @param developOrderId 开发修改单ID
* @return 开发修改单
*/
public ErpDevelopModifyorder selectErpDevelopModifyorderById(Long developOrderId);
public ErpDevelopModifyorderVo selectErpDevelopModifyorderById(Long developOrderId);
/**
* 查询开发修改单列表
@ -74,4 +75,10 @@ public interface ErpDevelopModifyorderMapper
* @return 结果
*/
public int restoreErpDevelopModifyorderById(Long developOrderId);
/**
* 根据开发修改单查询开发修改物料
* */
List<ErpDevelopModifyorder> selectDevelopModifyMaterialById(Long developOrderId);
}

24
ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpDevelopModifyorderService.java

@ -2,6 +2,10 @@ package com.ruoyi.erp.service;
import java.util.List;
import com.ruoyi.erp.domain.ErpDevelopModifyorder;
import com.ruoyi.erp.domain.ErpDevelopModifyorderDetail;
import com.ruoyi.erp.domain.vo.ErpDevelopModifyorderVo;
import com.ruoyi.system.domain.SysSalesOrder;
import org.activiti.engine.runtime.ProcessInstance;
/**
* 开发修改单Service接口
@ -17,7 +21,7 @@ public interface IErpDevelopModifyorderService
* @param developOrderId 开发修改单ID
* @return 开发修改单
*/
public ErpDevelopModifyorder selectErpDevelopModifyorderById(Long developOrderId);
public ErpDevelopModifyorderVo selectErpDevelopModifyorderById(Long developOrderId);
/**
* 查询开发修改单列表
@ -72,4 +76,22 @@ public interface IErpDevelopModifyorderService
* @return
*/
int restoreErpDevelopModifyorderById(Long developOrderId);
/**
* 审批流程启动
* */
ProcessInstance submitApply(ErpDevelopModifyorder erpDevelopModifyorder);
/**
* 根据开发修改单id查询开发修改物料
* */
List<ErpDevelopModifyorder> selectDevelopModifyMaterialById(Long developOrderId);
/**
* 根据开发修改单号查询开发修改详情物料信息
* */
List<ErpDevelopModifyorderDetail> selectDevelopModifyDetailMaterialByCode(String developOrderCode);
}

132
ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpDevelopModifyorderServiceImpl.java

@ -1,19 +1,29 @@
package com.ruoyi.erp.service.impl;
import java.util.List;
import java.util.*;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.erp.domain.ErpDevelopModifyorderDetail;
import com.ruoyi.erp.domain.vo.ErpDevelopModifyorderMaterialVo;
import com.ruoyi.erp.domain.vo.ErpDevelopModifyorderVo;
import com.ruoyi.erp.mapper.ErpDevelopModifyorderDetailMapper;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper;
import com.ruoyi.sales.domain.SalesAftersalesNotice;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysRoleService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.erp.mapper.ErpDevelopModifyorderMapper;
import com.ruoyi.erp.domain.ErpDevelopModifyorder;
import com.ruoyi.erp.service.IErpDevelopModifyorderService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;
/**
* 开发修改单Service业务层处理
@ -33,6 +43,22 @@ public class ErpDevelopModifyorderServiceImpl implements IErpDevelopModifyorderS
@Autowired
private RedisCache redisCache;
@Autowired
private IProcessService processService;
@Autowired
private ISysRoleService roleService;
@Autowired
private SysUserMapper userMapper;
@Autowired
private TaskService taskService;
@Autowired
private BizTodoItemMapper todoItemMapper;
/**
* 查询开发修改单
*
@ -40,7 +66,7 @@ public class ErpDevelopModifyorderServiceImpl implements IErpDevelopModifyorderS
* @return 开发修改单
*/
@Override
public ErpDevelopModifyorder selectErpDevelopModifyorderById(Long developOrderId)
public ErpDevelopModifyorderVo selectErpDevelopModifyorderById(Long developOrderId)
{
return erpDevelopModifyorderMapper.selectErpDevelopModifyorderById(developOrderId);
}
@ -71,7 +97,7 @@ public class ErpDevelopModifyorderServiceImpl implements IErpDevelopModifyorderS
erpDevelopModifyorder.setCreateTime(DateUtils.getNowDate());
String developOderCode = redisCache.generateBillNo("KF");
erpDevelopModifyorder.setDevelopOderCode(developOderCode);
erpDevelopModifyorder.setDevelopOrderCode(developOderCode);
ErpDevelopModifyorderMaterialVo erpDevelopModifyorderMaterialVo = erpDevelopModifyorder.getDevelopModifyorderMaterialVoList().get(0);
erpDevelopModifyorder.setMaterialNo(erpDevelopModifyorderMaterialVo.getMaterialNo());
@ -83,7 +109,7 @@ public class ErpDevelopModifyorderServiceImpl implements IErpDevelopModifyorderS
//添加采购物料相关数据
ErpDevelopModifyorderDetail erpDevelopModifyorderDetail = erpDevelopModifyorder.getDevelopModifyorderDetailList().get(0);
erpDevelopModifyorderDetail.setDevelopOderCode(developOderCode);
erpDevelopModifyorderDetail.setDevelopOrderCode(developOderCode);
developModifyorderDetailMapper.insertErpDevelopModifyorderDetail(erpDevelopModifyorderDetail);
@ -96,12 +122,20 @@ public class ErpDevelopModifyorderServiceImpl implements IErpDevelopModifyorderS
* @param erpDevelopModifyorder 开发修改单
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int updateErpDevelopModifyorder(ErpDevelopModifyorder erpDevelopModifyorder)
{
String loginName = ShiroUtils.getLoginName();
erpDevelopModifyorder.setUpdateBy(loginName);
erpDevelopModifyorder.setUpdateTime(DateUtils.getNowDate());
erpDevelopModifyorder.setUpdateTime(new Date());
//添加采购物料相关数据
ErpDevelopModifyorderDetail erpDevelopModifyorderDetail = erpDevelopModifyorder.getDevelopModifyorderDetailList().get(0);
erpDevelopModifyorderDetail.setUpdateBy(loginName);
erpDevelopModifyorderDetail.setUpdateTime(new Date());
developModifyorderDetailMapper.updateErpDevelopModifyorderDetail(erpDevelopModifyorderDetail);
return erpDevelopModifyorderMapper.updateErpDevelopModifyorder(erpDevelopModifyorder);
}
@ -152,4 +186,92 @@ public class ErpDevelopModifyorderServiceImpl implements IErpDevelopModifyorderS
{
return erpDevelopModifyorderMapper.restoreErpDevelopModifyorderById(developOrderId);
}
@Transactional(rollbackFor = Exception.class)
@Override
public ProcessInstance submitApply(ErpDevelopModifyorder erpDevelopModifyorder) {
SysUser user = ShiroUtils.getSysUser();
erpDevelopModifyorder.setAuditStatus("0");
erpDevelopModifyorder.setPurchaseStorageStatus("0");
erpDevelopModifyorder.setQualityStatus("0");
erpDevelopModifyorder.setCompleteStatus("0");
erpDevelopModifyorder.setFinshStatus("0");
//插入数据
insertErpDevelopModifyorder(erpDevelopModifyorder);
// 启动流程
String applyTitle = user.getUserName()+"发起了开发修改单提交审批-"+DateUtils.dateTimeNow();
String instanceType = "submit";
ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,erpDevelopModifyorder, user);
String processInstanceId = processInstance.getProcessInstanceId();
// 提交实例id
erpDevelopModifyorder.setSubmitInstanceId(processInstanceId);
// 存在提交完就流程结束的情况
boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId);
if(processIsFinish){
// 审核状态-审核通过
erpDevelopModifyorder.setAuditStatus("1");
}
erpDevelopModifyorderMapper.updateErpDevelopModifyorder(erpDevelopModifyorder);
return processInstance;
}
/**
* 根据开发修改单查询开发修改物料
* */
@Override
public List<ErpDevelopModifyorder> selectDevelopModifyMaterialById(Long developOrderId) {
return erpDevelopModifyorderMapper.selectDevelopModifyMaterialById(developOrderId);
}
/**
* 根据开发修改单号查询开发修改详情物料信息
* */
@Override
public List<ErpDevelopModifyorderDetail> selectDevelopModifyDetailMaterialByCode(String developOrderCode) {
return developModifyorderDetailMapper.selectDevelopModifyDetailMaterialByCode(developOrderCode);
}
/**
* 创建售后单审核流程
* @param applyTitle
* @param instanceType
* @param user
* @return
*/
private ProcessInstance startProcessInstance(String applyTitle, String instanceType, ErpDevelopModifyorder erpDevelopModifyorder, SysUser user) {
Long developOrderId = erpDevelopModifyorder.getDevelopOrderId();
String businessKey = developOrderId.toString(); // 实体类 ID,作为流程的业务 key
String key = "developModifyOrder";
Map<String,Object> variables = new HashMap<>();
// 构造authority传参
buildAuthority(user, variables);
erpDevelopModifyorder.setApplyTitle(applyTitle);
// 启动流程
ProcessInstance processInstance = processService.submitApply(user.getLoginName(), businessKey, applyTitle, erpDevelopModifyorder.getDevelopOrderCode(), key, variables);
String processInstanceId = processInstance.getId();
erpDevelopModifyorder.setInstanceId(processInstanceId); // 建立双向关系
erpDevelopModifyorder.setInstanceType(instanceType);
return processInstance;
}
/**
* 发起人节点判断
* */
private void buildAuthority(SysUser user, Map<String, Object> variables) {
Set<String> roleKeys = roleService.selectRoleKeys(user.getUserId());
// 角色不同审核人不同
if(roleKeys.contains("gcwyRole")){
variables.put("authority",1);
}else if(roleKeys.contains("gcjlRole")){
variables.put("authority",2);
}else if(roleKeys.contains("gczgRole")){
variables.put("authority",3);
}
}
}

15
ruoyi-admin/src/main/resources/mapper/erp/ErpDevelopModifyorderDetailMapper.xml

@ -6,7 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="ErpDevelopModifyorderDetail" id="ErpDevelopModifyorderDetailResult">
<result property="developOrderDetailId" column="develop_order_detail_id" />
<result property="developOderCode" column="develop_oder_code" />
<result property="developOrderCode" column="develop_order_code" />
<result property="makeNo" column="make_no" />
<result property="materialNo" column="material_no" />
<result property="materialName" column="material_name" />
@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectErpDevelopModifyorderDetailVo">
select develop_order_detail_id, develop_oder_code, make_no, material_no, material_name, material_type, material_photo_url, material_unit, material_brand, material_describe, material_process_method, bom_id, material_num, update_finish_time, create_by, create_time, update_by, update_time, remark from erp_develop_modifyorder_detail
select develop_order_detail_id, develop_order_code, make_no, material_no, material_name, material_type, material_photo_url, material_unit, material_brand, material_describe, material_process_method, bom_id, material_num, update_finish_time, create_by, create_time, update_by, update_time, remark from erp_develop_modifyorder_detail
</sql>
<select id="selectErpDevelopModifyorderDetailList" parameterType="ErpDevelopModifyorderDetail" resultMap="ErpDevelopModifyorderDetailResult">
@ -41,10 +41,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where develop_order_detail_id = #{developOrderDetailId}
</select>
<select id="selectDevelopModifyDetailMaterialByCode" parameterType="String" resultMap="ErpDevelopModifyorderDetailResult">
<include refid="selectErpDevelopModifyorderDetailVo"/>
where develop_order_code = #{developOrderCode}
</select>
<insert id="insertErpDevelopModifyorderDetail" parameterType="ErpDevelopModifyorderDetail" useGeneratedKeys="true" keyProperty="developOrderDetailId">
insert into erp_develop_modifyorder_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="developOderCode != null">develop_oder_code,</if>
<if test="developOrderCode != null">develop_order_code,</if>
<if test="makeNo != null">make_no,</if>
<if test="materialNo != null">material_no,</if>
<if test="materialName != null">material_name,</if>
@ -64,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="developOderCode != null">#{developOderCode},</if>
<if test="developOrderCode != null">#{developOrderCode},</if>
<if test="makeNo != null">#{makeNo},</if>
<if test="materialNo != null">#{materialNo},</if>
<if test="materialName != null">#{materialName},</if>
@ -88,7 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateErpDevelopModifyorderDetail" parameterType="ErpDevelopModifyorderDetail">
update erp_develop_modifyorder_detail
<trim prefix="SET" suffixOverrides=",">
<if test="developOderCode != null">develop_oder_code = #{developOderCode},</if>
<if test="developOrderCode != null">develop_order_code = #{developOrderCode},</if>
<if test="makeNo != null">make_no = #{makeNo},</if>
<if test="materialNo != null">material_no = #{materialNo},</if>
<if test="materialName != null">material_name = #{materialName},</if>

19
ruoyi-admin/src/main/resources/mapper/erp/ErpDevelopModifyorderMapper.xml

@ -6,7 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="ErpDevelopModifyorderVo" id="ErpDevelopModifyorderResult">
<result property="developOrderId" column="develop_order_id" />
<result property="developOderCode" column="develop_oder_code" />
<result property="developOrderCode" column="develop_order_code" />
<result property="makeNo" column="make_no"/>
<result property="materialNo" column="material_no" />
<result property="purchaseStorageStatus" column="purchase_storage_status" />
@ -44,16 +44,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectErpDevelopModifyorderVo">
select develop_order_id, develop_oder_code, make_no, material_no, purchase_storage_status, quality_status, audit_status, complete_status, finsh_status, use_status, material_name, material_type, material_photo_url, material_unit, material_brand, material_describe, material_process_method, user_id, update_finish_time, before_update_remark, after_update_remark, create_by, create_time, user_name, update_by, update_time, remark, instance_id, instance_type, submit_instance_id, apply_title, apply_time, apply_user, cancel_instance_id, restore_instance_id from erp_develop_modifyorder
select develop_order_id, develop_order_code, make_no, material_no, purchase_storage_status, quality_status, audit_status, complete_status, finsh_status, use_status, material_name, material_type, material_photo_url, material_unit, material_brand, material_describe, material_process_method, user_id, update_finish_time, before_update_remark, after_update_remark, create_by, create_time, user_name, update_by, update_time, remark, instance_id, instance_type, submit_instance_id, apply_title, apply_time, apply_user, cancel_instance_id, restore_instance_id from erp_develop_modifyorder
</sql>
<select id="selectErpDevelopModifyorderList" parameterType="ErpDevelopModifyorder" resultMap="ErpDevelopModifyorderResult">
select edm.develop_order_id, edm.develop_oder_code, edm.material_no, edm.purchase_storage_status, edm.quality_status, edm.audit_status, edm.complete_status, edm.finsh_status, edm.use_status, edm.material_name, edm.material_type, edm.material_photo_url, edm.material_unit, edm.material_brand, edm.material_describe, edm.material_process_method, edm.user_id, edm.create_by, edm.create_time, edm.update_by, edm.update_time, edm.remark,su.user_name
select edm.develop_order_id, edm.develop_order_code, edm.material_no, edm.purchase_storage_status, edm.quality_status, edm.audit_status, edm.complete_status, edm.finsh_status, edm.use_status, edm.material_name, edm.material_type, edm.material_photo_url, edm.material_unit, edm.material_brand, edm.material_describe, edm.material_process_method, edm.user_id, edm.create_by, edm.create_time, edm.update_by, edm.update_time, edm.remark,su.user_name
from erp_develop_modifyorder edm
left join sys_user su on su.user_id = edm.user_id
<where>
<if test="developOderCode != null and developOderCode != ''"> and edm.develop_oder_code = #{developOderCode}</if>
<if test="developOrderCode != null and developOrderCode != ''"> and edm.develop_order_code = #{developOrderCode}</if>
<if test="materialNo != null and materialNo != ''"> and edm.material_no = #{materialNo}</if>
<if test="auditStatus != null and auditStatus != ''"> and edm.audit_status = #{auditStatus}</if>
<if test="finshStatus != null and finshStatus != ''"> and edm.finsh_status = #{finshStatus}</if>
@ -68,10 +68,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where develop_order_id = #{developOrderId}
</select>
<select id="selectDevelopModifyMaterialById" parameterType="Long" resultMap="ErpDevelopModifyorderResult">
<include refid="selectErpDevelopModifyorderVo"/>
where develop_order_id = #{developOrderId}
</select>
<insert id="insertErpDevelopModifyorder" parameterType="ErpDevelopModifyorderVo" useGeneratedKeys="true" keyProperty="developOrderId">
insert into erp_develop_modifyorder
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="developOderCode != null">develop_oder_code,</if>
<if test="developOrderCode != null">develop_order_code,</if>
<if test="makeNo != null">make_no,</if>
<if test="materialNo != null">material_no,</if>
<if test="purchaseStorageStatus != null">purchase_storage_status,</if>
@ -107,7 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="restoreInstanceId != null">restore_instance_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="developOderCode != null">#{developOderCode},</if>
<if test="developOrderCode != null">#{developOrderCode},</if>
<if test="makeNo != null">#{makeNo},</if>
<if test="materialNo != null">#{materialNo},</if>
<if test="purchaseStorageStatus != null">#{purchaseStorageStatus},</if>
@ -147,7 +152,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateErpDevelopModifyorder" parameterType="ErpDevelopModifyorderVo">
update erp_develop_modifyorder
<trim prefix="SET" suffixOverrides=",">
<if test="developOderCode != null">develop_oder_code = #{developOderCode},</if>
<if test="developOrderCode != null">develop_order_code = #{developOrderCode},</if>
<if test="makeNo != null">make_no = #{makeNo},</if>
<if test="materialNo != null">material_no = #{materialNo},</if>
<if test="purchaseStorageStatus != null">purchase_storage_status = #{purchaseStorageStatus},</if>

744
ruoyi-admin/src/main/resources/templates/erp/developModifyOrder/edit.html

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('修改开发修改单')" />
<th:block th:include="include :: header('开发修改单修改')" />
<th:block th:include="include :: select2-css" />
<th:block th:include="include :: datetimepicker-css" />
<th:block th:include="include :: bootstrap-editable-css" />
@ -9,277 +9,484 @@
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-developModifyOrder-edit" th:object="${erpDevelopModifyorder}">
<input name="developOrderId" th:field="*{developOrderId}" type="hidden">
<div class="form-row">
<label class="col-sm-3 control-label">开发修改单号:</label>
<div class="col-sm-8">
<input name="developOderCode" th:field="*{developOderCode}" class="form-control" type="text">
</div>
</div>
<div class="col-xs-12">
<input id="developOrderId" name="developOrderId" th:field="*{developOrderId}" type="text" hidden>
<input id="developOrderCode" name="developOrderCode" th:field="*{developOrderCode}" type="text" hidden>
<div class="form-group">
<label class="col-sm-3 control-label is-required">生产单号:</label>
<label class="col-sm-4 control-label is-required">生产单号:</label>
<div class="col-sm-8">
<select id="makeNo" name="makeNo" class="form-control" type="text" required>
<option value="">请选择</option>
<select class="form-control" th:field="*{makeNo}" id="makeNo" name="makeNo" required disabled>
<!-- 这里动态生成生产单号选项 -->
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">修改完成时间:</label>
<label class="col-sm-5 control-label is-required">修改完成时间:</label>
<div class="col-sm-7">
<div class="input-group date">
<input name="updateInfoTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<input name="updateFinishTime" th:value="${#dates.format(erpDevelopModifyorder.updateFinishTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" required>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</form>
<div class="container">
<div class="form-row">
<div class="form-row my-5"> <!-- 添加my-4类 -->
<div class="btn-group-sm" role="group">
<span>选择开发修改单物料</span>
<a class="btn btn-success" onclick="insertRow()">
<a class="btn btn-success" onclick="insertDevelopModify()">
<i class="fa fa-plus"></i> 添加修改物料
</a>
</div>
</div>
<div class="row">
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-sub-table-developModify"></table>
<table id="bootstrap-table-developModify"></table>
</div>
</div>
</div>
<div class="container">
<div class="form-row">
<div class="btn-group-sm" role="group">
<span>选择采购物料</span>
<a class="btn btn-success" onclick="insertRow2()">
<i class="fa fa-plus"></i> 添加修改物料
</a>
<div class="form-group">
<label class="col-sm-4 control-label is-required">修改前说明:</label>
<div class="col-sm-6">
<textarea id="beforeUpdateRemark" name="beforeUpdateRemark" class="form-control" required>[[*{beforeUpdateRemark}]]</textarea>
</div>
</div>
<div class="row">
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-sub-table-material"></table>
<div class="form-group">
<label class="col-sm-4 control-label is-required">修改后说明:</label>
<div class="col-sm-6">
<textarea id="afterUpdateRemark" name="afterUpdateRemark" class="form-control" required>[[*{afterUpdateRemark}]]</textarea>
</div>
</div>
</div>
<div class="container">
<div class="form-row">
<div class="btn-group-sm" role="group">
<span>选择通知人</span>
<a class="btn btn-success" onclick="insertRow3()">
<i class="fa fa-plus"></i> 添加通知人
<span>选择采购物料</span>
<a class="btn btn-success" onclick="insertPurchase()">
<i class="fa fa-plus"></i> 添加修改物料
</a>
</div>
</div>
<div class="row">
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-sub-table-biztoitem"></table>
<table id="bootstrap-table-purchase"></table>
</div>
</div>
</div>
<!-- <div class="container">-->
<!-- <div class="form-row">-->
<!-- <div class="btn-group-sm" role="group">-->
<!-- <span>选择通知人</span>-->
<!-- <a class="btn btn-success" onclick="insertBiztoitem()">-->
<!-- <i class="fa fa-plus"></i> 添加通知人-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="row">-->
<!-- <div class="col-sm-12 select-table table-striped">-->
<!-- <table id="bootstrap-table-biztoitem"></table>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: footer" />
<th:block th:include="include :: bootstrap-table-editable-js" />
<th:block th:include="include :: datetimepicker-js" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var prefix = ctx + "erp/developModifyOrder";
var sysUnitClassDatas = [[${@dict.getType('sys_unit_class')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var levelDatas = [[${@dict.getType('bomLevel')}]];
var bomLevelSelectDatas = [[${@dict.getTypeSelect('bomLevel')}]];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var loginName = [[${@permission.getPrincipalProperty('loginName')}]];
var userName = [[${@permission.getPrincipalProperty('userName')}]];
var prefix = ctx + "erp/developModifyOrder";
$("#form-developModifyOrder-edit").validate({ focusCleanup: true});
$(function () {
$("#makeNo").select2({
theme: "bootstrap",
allowClear: true,
placeholder: "请选择生产单号",
ajax: {
url: ctx + "/system/makeorder/getAllMakeNos",
dataType: 'json',
type: "POST",
delay: 250,
processResults: function (res, params) {
var options = [];
if(res.code==0){
var resultList = res.data;
console.log(resultList);
for(var i= 0, len=resultList.length;i<len;i++){
var option = resultList[i];
option.id = resultList[i]["makeNo"];
option.text = resultList[i]["makeNo"];
options.push(option);
}
}
$("input[name='updateFinishTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
// 新增提交
function submitHandler() {
// 获取表单数据
const developModifyOrderData = $("#form-developModifyOrder-edit").serializeArray().reduce((obj, item) => {
obj[item.name] = item.value;
return obj;
}, {});
var beforeUpdateRemark = $("#beforeUpdateRemark").val();
var afterUpdateRemark = $("#afterUpdateRemark").val();
// 开发修改物料
var developModifyTable = $('#bootstrap-table-developModify').bootstrapTable('getData');
// 采购修改物料
var purchaseTable = $('#bootstrap-table-purchase').bootstrapTable('getData');
// 将表数据转换成与developModifyOrderData格式一致的数组
var developModifyMaterialDataList = developModifyTable.map(function(item) {
// 根据实际字段名调整
return {
"materialNo": item.materialNo,
"materialName": item.materialName,
"materialType": item.materialType,
"materialPhotourl": item.materialPhotourl,
"materialDescribe": item.materialDescribe,
"materialBrand": item.materialBrand,
"materialUnit": item.materialUnit,
"materialProcessMethod": item.materialProcessMethod,
// ...其他字段
};
});
// 将表数据转换成与developModifyOrderData格式一致的数组
var purchaseMaterialDataList = purchaseTable.map(function(item) {
// 根据实际字段名调整
return {
results: options
"developOrderDetailId":item.developOrderDetailId,
"materialNo": item.materialNo,
"materialName": item.materialName,
"materialType": item.materialType,
"materialPhotourl": item.materialPhotourl,
"materialDescribe": item.materialDescribe,
"materialBrand": item.materialBrand,
"materialUnit": item.materialUnit,
"materialProcessMethod": item.materialProcessMethod,
"bomId":item.bomId,
"materialNum":item.materialNum
// ...其他字段
};
});
const combinedData = Object.assign({}, developModifyOrderData, {
developModifyorderMaterialVoList: developModifyMaterialDataList,
developModifyorderDetailList:purchaseMaterialDataList,
beforeUpdateRemark:beforeUpdateRemark,
afterUpdateRemark:afterUpdateRemark
});
// 合并表单数据和表格数据
console.log(combinedData)
// 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/edit", jsonData);
}
/*加载所有的关联生产单号*/
loadAllMakeNos();
/*加载所有的关联生产单号*/
function loadAllMakeNos(){
var url = ctx + 'system/makeorder/getAllMakeNos';
$.ajax({
type:'GET',//请求类型
url:url,//后端接口url
dataType:'json', //预期服务器返回数据类型
success: function (data){
if (data && Array.isArray(data)){
var selectElement = $('#makeNo'); //获取生产编号下拉框元素
//清空下拉框现有选项
selectElement.empty();
//遍历返回的数据,添加下拉框的选项
$.each(data,function (index,item){
//赋值遍历数据中的makeNo到下拉框中
selectElement.append('<option value="'+item.makeNo+'">'+item.makeNo+'</option>');
})
}else {
$.modal.error("数据为空");
}
}
});
})
}
// 点击选择物料按钮
function insertDevelopModify() {
var selectedMakeNo = $("#makeNo").val();
if (!selectedMakeNo) {
$.modal.alertWarning("请先选择生产单号。");
return;
}
var encodedMakeNo = encodeURIComponent(selectedMakeNo);
var url = prefix + '/developModifyMaterialSelect?makeNo=' + encodedMakeNo;
var options = {
id: "bootstrap-sub-table-developModify",
// url: prefix + "/getDevelopModifyOrderList",
title: '选择物料',
url: url,
callBack: developModifyDoSubmit
};
$.modal.openOptions(options);
}
//物料信息展示列表
$(function() {
var options = {
id:'bootstrap-table-developModify',
url: prefix+'/getDevelopModifyMaterialById',
queryParams: developModifyQueryParams,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
columns: [
{checkbox: true},
{field: 'index',align: 'center', title: "序号",
formatter: function (value, row, index) {
var columnIndex = $.common.sprintf("<input type='hidden' name='index' value='%s'>", $.table.serialNumber(index));
return columnIndex + $.table.serialNumber(index);
}
pagination: false, // 设置不分页
modalName: "选择物料",
columns: [{
checkbox: true
},
{title: '物料索引id',field: 'materialId',align: 'center',visible: false},
{title: '料号',field: 'materialCode',align: 'center'},
{title: '物料名称',field: 'materialName',align: 'center'},
{title: '图片',field: 'photoUrl',
formatter: function(value, row, index) {
if(value == null || value == ""){
value = "";
return "<img src='' herf='' />";
}
return $.table.imageView(value);
}
{
title: '料号',
field: 'materialNo',
},
{title: '物料类型',field: 'materialType',align: 'center',
{
title: '图片',
field: 'materialPhotourl',
},
{
title: '物料名称',
field: 'materialName',
},
{
title: '物料类型',
field: 'materialType',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{ title: '描述',field: 'describe',align: 'center'},
{title: '品牌',field: 'brand',align: 'center'},
{ title: '单位',field: 'unit',align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(sysUnitClassDatas, value);
}
{
title: '品牌',
field: 'materialBrand',
},
{
title: '描述',
field: 'materialDescribe',
},
{title: '半成品类型',field: 'processMethod',align: 'center',
{
title: '单位',
field: 'materialUnit',
},
{
field: 'materialProcessMethod',
align: 'center',
title: '物料加工方式',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{ title: '对外售价',field: 'materialSole',},
{title: '国内税率',field: 'countTax',align: 'center',},
{ title: '美元汇率',field: 'usdTax', align: 'center',},
{field: 'materialNum',align: 'center',title: '物料的数量',},
{ title: '物料的不含税单价(RMB)',field: 'materialNoRmb',align: 'center',},
{title: '物料的不含税单价(美元)',field: 'materialNoUsd',align: 'center',},
{title: '修改详情',align: 'center',
formatter:function formatterForm(value, row, index) {
// 这里的代码会为每行生成一个表单
var form = $('<form></form>').append(
$('<input/>', { type: 'text', value: row.name, name: 'name', placeholder: 'Name' }),
$('<input/>', { type: 'email', value: row.email, name: 'email', placeholder: 'Email' }),
$('<button/>', { type: 'submit' }).text('Submit')
);
form.on('submit', function(e) {
e.preventDefault(); // 阻止表单默认提交行为
var formData = form.serializeArray(); // 序列化表单数据为数组
console.log(formData); // 在控制台输出表单数据
// 这里可以添加代码处理表单提交,例如发送到服务器等
});
return form; // 返回生成的表单HTML
}},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeDevelopModify(\'' + row.materialNo + '\')"><i class="fa fa-remove"></i>删除</a> ');
return actions.join('');
}
}
]
};
$.table.init(options);
})
function developModifyQueryParams(params) {
var curParams = {
// 传递参数查询参数
developOrderId: $("#developOrderId").val()
};
console.log(curParams);
return curParams;
}
function developModifyDoSubmit(index, layero,uniqueId){
console.log(uniqueId);
var iframeWin = window[layero.find('iframe')[0]['name']];
var rowData = iframeWin.$('#bootstrap-developModifyMaterialSelect-table').bootstrapTable('getSelections')[0];
//判断是否重复
var rows = $("#bootstrap-table-developModify").bootstrapTable('getData').length;
if (rows > 0){
$.modal.alertError("每次只能修改一条物料!");
return;
}
// for(var i=0;i<rows;i++){
// var data = $("#bootstrap-table-developModify").bootstrapTable('getData')[i];
// if(data.materialNo==rowData.materialNo){
// $.modal.alertError("不能选择已添加过的相同物料");
// return;
// }
// }
console.log("rowData: "+rowData);
$("#bootstrap-table-developModify").bootstrapTable('insertRow', {
index:1,
row: {
materialNo:rowData.materialCode,
materialPhotourl:rowData.photoUrl,
materialName: rowData.materialName,
materialType: rowData.materialType,
materialDescribe: rowData.describe,
materialBrand: rowData.brand,
materialUnit: rowData.unit,
materialProcessMethod: rowData.processMethod,
}
})
layer.close(index);
}
// 逻辑删除前端的一行数据
function removeDevelopModify(materialNo){
$("#bootstrap-table-developModify").bootstrapTable('remove', {
field: 'materialNo',
values: materialNo
})
}
// 点击选择采购物料按钮
function insertPurchase() {
var url = prefix + '/purchaseMaterialSelect';
var options = {
title: '选择物料',
url: url,
callBack: purchaseDoSubmit
};
$.modal.openOptions(options);
}
var option1 = {
id: "bootstrap-sub-table-material",
// url: prefix + "/list",
// 选择采购物料
$(function(){
var options = {
id: 'bootstrap-table-purchase',
url: prefix+'/getDevelopModifyDetailMaterialByCode',
queryParams: purchaseQueryParams,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
modalName: "bom",
uniqueId: "id",
pagination: false, // 设置不分页
sidePagination: "client",
detailView: true,
height: $(window).height() - 100,
//指定父id列
onExpandRow : function(index, row, $detail) {
$detail.html('<table class="table-container" id="all_level_table_'+row.id+'"></table>').find('table');
// 多阶
initAllLevelTable(index,row,$detail);
// $.table.bootstrapTable('resetView');
initChildTable(index, row, $detail);
},
columns: [
{checkbox: false},
{title: 'bom号',field: 'bomNo', },
{title: '关联料号',field: 'materialNo', },
{field: 'photoUrl',title: '图片',formatter: function(value, row, index) {return $.table.imageView(value);}},
{title: '物料名称',field: 'materialName', },
{field: 'materialType',title: '物料类型',formatter: function(value, row, index) { return $.table.selectCategoryLabel(materialTypeDatas, value);}},
{field: 'processMethod', title: '半成品类型',formatter: function(value, row, index) {return $.table.selectDictLabel(processMethodDatas, value);}},
{field: 'unit',title: '单位',},
{ title: '品牌',field: 'brand', },
{title: '描述',field: 'describe'},
{field: 'num',title: '订单数量',},
{field: 'parentId',title: '父级id',visible:false},
{title: '操作',align: 'center',
{
field: 'developOrderDetailId',
title: '主键id',
visible: false
},
{
field: 'bomId',
title: 'bom主键Id',
},
{
field: 'materialNo',
align: 'center',
title: '料号'
},
{
field: 'materialName',
align: 'center',
title: '物料名称',
},
{
field: 'materialType',
align: 'center',
title: '物料类型',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="remove(\'' + row.id + '\')"><i class="fa fa-eye"></i> 删除</a> ');
return actions.join('');
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
}]
};
$.table.init(option1);
var option2 = {
id: "bootstrap-sub-table-biztoitem",
// url: prefix + "/list",
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
modalName: "通知人",
detailView: true,
height: $(window).height() - 100,
//指定父id列
columns: [
{checkbox: false},
{title: '通知人',field: 'item', },
{title: '确认时间',field: 'materialNo', },
{title: '操作',align: 'center',
},
{
field: 'materialUnit',
align: 'center',
title: '单位',
formatter: function(value, row, index) {
return $.table.selectDictLabel(sysUnitClassDatas, value);
}
},
{
field: 'materialBrand',
align: 'center',
title: '品牌'
},
{
field: 'materialDescribe',
align: 'center',
title: '描述'
},
{
field: 'materialProcessMethod',
align: 'center',
title: '物料加工方式',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
field: 'materialNum',
align: 'center',
title: '订单数量',
editable:true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="remove(\'' + row.id + '\')"><i class="fa fa-eye"></i> 删除</a> ');
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removePurchase(\'' + row.materialNo + '\')"><i class="fa fa-remove"></i>删除</a> ');
return actions.join('');
}
}]
}
]
};
$.table.init(option2);
});
initAllLevelTable = function(index, row, $detail) {
$("#"+"all_level_table_"+row.id).bootstrapTable({
url: prefix + "/allLevelList",
$.table.init(options);
})
initChildTable = function(index, row, $detail) {
var parentRow = row;
var parentRowIndex = index;
var childTableId = 'child_table_' + index;
var childFormTableId = 'child_form_table_' + index;
var childTableFormId = 'child_table_form_' + index;
// $detail.html('<form id="'+childTableFormId+'"><table id="'+childTableId+'"></table><table id="'+childFormTableId+'"></table></form>');
$detail.html('<table id="' + childTableId + '"></table><table id="' + childFormTableId + '"></table>');
// BOM展示
$('#' + childTableId).bootstrapTable({
url: ctx + "erp/bom/allLevelList",
method: 'post',
sidePagination: "server",
contentType: "application/x-www-form-urlencoded",
queryParams: {
parentId: row.id
parentId: parentRow.bomId
},
columns: [{
field: 'id',
title: '主键id'
title: '主键id',
visible: false
},
{
field: 'level',
title: '层',
title: '层',
formatter: function (value, row, index) {
return $.table.selectDictLabel(levelDatas, value);
}
},
{
field: 'bomNo',
title: 'bom号',
title: 'BOM号',
formatter: function (value, row, index) {
if (value == null || value == '') {
return '/';
@ -288,13 +495,6 @@
}
}
},
{
field: 'photoUrl',
title: '图片',
formatter: function(value, row, index) {
return $.table.imageView(value);
}
},
{
field: 'materialNo',
title: '料号',
@ -306,6 +506,13 @@
}
}
},
{
field: 'photoUrl',
title: '图片',
formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
{
field: 'materialName',
title: '物料名称',
@ -335,7 +542,6 @@
}
}
},
{
field: 'brand',
title: '品牌',
@ -358,6 +564,22 @@
}
}
},
{
field: 'processMethod',
title: '加工方式',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
field: 'warehouseDept',
align: 'center',
title: '入库部门', visible: false,
formatter: function (value, row, index) {
return $.table.selectDictLabel(warehouseDates, value);
}
},
{
field: 'useNum',
title: '用量',
@ -372,18 +594,28 @@
{
field: 'lossRate',
title: '损耗率',
formatter: function (value,row,index){
if (value == null || value == ''){
return "/";
}
return value + "%";
}
// formatter: function (value,row,index){
// if (value == null || value == ''){
// return '/';
// }else{
// return value + "%";
// }
// }
},
{
field: 'processMethod',
title: '半成品类型',
field: 'materialNum',
title: '订单用量',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
// 获取父行的materialNum值,如果不存在则为0
var materialNum = parentRow.materialNum || 0;
// 获取当前行的useNum值,如果不存在则为0
var useNum = row.useNum || 0;
// 计算结果
var result = materialNum * useNum;
// 如果result为0且materialNum或useNum为null/undefined,则返回空字符串
return (materialNum === 0 || useNum === 0) && (parentRow.materialNum === null || row.useNum === null) ? '' : result;
}
},
{
@ -395,126 +627,72 @@
field: 'sortNo',
title: '排序',
visible: false
}]
});
};
initChildSonTable = function(index, row, $detail) {
var childSonTable = $detail.html('<table style="table-layout:fixed"></table>').find('table');
$(childSonTable).bootstrapTable({
url: prefix + "/subList",
method: 'post',
detailView: true,
sidePagination: "server",
contentType: "application/x-www-form-urlencoded",
queryParams : {parentId: row.id},
onExpandRow : function(index, row, $detail) {initChildSonTable(index, row, $detail);},
columns: [
{field: 'id',title: '主键id'},
{field: 'level',title: '层级',formatter: function(value, row, index) {return $.table.selectDictLabel(levelDatas, value);}},
{field: 'bomNo',title: 'bom号',formatter:function (value,row,index){if (value == null || value == ''){return '/'; }else{ return value;}}},
{field: 'photoUrl',title: '图片',formatter:function (value,row,index){if (value == null || value == ''){ return '/';}else{return $.table.imageView(value);}}},
{field: 'materialNo',title: '料号',},
{field: 'materialName',title: '物料名称',},
{field: 'materialType',title: '物料类型',formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);}},
{field: 'describe',title: '描述',},
{field: 'brand',title: '品牌',},
{field: 'unit',title: '单位',},
{field: 'lossRate',title: '损耗率(%)',formatter:function (value,row,index){return value + '%';}},
{field: 'processMethod',title: '半成品类型',formatter: function(value, row, index) {return $.table.selectDictLabel(processMethodDatas, value);}},
{field: 'useNum',title: '订单用量',},
{field: 'parentId',title: '父级id',visible: false,},
]
});
}
}],
// 当所有数据被加载时触发
onLoadSuccess: function (data) {
function insertRow() {
var url = ctx + "system/makeorder/selectMakeorder";
var options = {
title: '选择生产物料',
url: url,
data: {
"materialType": $("#makeNo").val()
},
callBack: doSubmit
};
$.modal.openOptions(options);
});
}
function insertRow2() {
var url = ctx + "erp/material/select";
var options = {
title: '选择料号',
url: url,
callBack: doSubmit2
function purchaseQueryParams(params) {
var curParams = {
// 传递参数查询参数
developOrderCode: $("#developOrderCode").val()
};
$.modal.openOptions(options);
}
function doSubmit(index, layero,uniqueId){
console.log(uniqueId);
var iframeWin = window[layero.find('iframe')[0]['name']];
var rowData = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections')[0];
var totalNum = $("#bootstrap-sub-table-developModify").bootstrapTable('getData').length;
console.log("rowData: "+rowData);
$("#bootstrap-sub-table-developModify").bootstrapTable('insertRow',{
index: 1,
row: {
id:rowData.id,
bomNo:rowData.bomNo,
materialNo: rowData.materialNo,
materialName: rowData.materialName,
materialType: rowData.materialType,
describe: rowData.describe,
processMethod: rowData.processMethod,
unit: rowData.unit,
brand: rowData.brand,
level: "1",
lossRate:'',
useNum:''
}
})
layer.close(index);
console.log(curParams);
return curParams;
}
function doSubmit2(index, layero,uniqueId){
function purchaseDoSubmit(index, layero,uniqueId){
console.log(uniqueId);
var iframeWin = window[layero.find('iframe')[0]['name']];
var rowData = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections')[0];
var totalNum = $("#bootstrap-sub-table-material").bootstrapTable('getData').length;
var rowData = iframeWin.$('#bootstrap-purchaseMaterialSelect-table').bootstrapTable('getSelections')[0];
//判断是否重复
var rows = $("#bootstrap-table-purchase").bootstrapTable('getData').length;
if (rows > 0){
$.modal.alertError("每次只能修改一条物料!");
return;
}
// for(var i=0;i<rows;i++){
// var data = $("#bootstrap-table-developModify").bootstrapTable('getData')[i];
// if(data.materialNo==rowData.materialNo){
// $.modal.alertError("不能选择已添加过的相同物料");
// return;
// }
// }
console.log("rowData: "+rowData);
$("#bootstrap-sub-table-material").bootstrapTable('insertRow',{
$("#bootstrap-table-purchase").bootstrapTable('insertRow', {
index:1,
row: {
id:rowData.id,
bomNo:rowData.bomNo,
bomId:rowData.bomId,
materialNo:rowData.materialNo,
materialPhotourl:rowData.materialPhotourl,
materialName: rowData.materialName,
materialType: rowData.materialType,
describe: rowData.describe,
processMethod: rowData.processMethod,
unit: rowData.unit,
brand: rowData.brand,
level: "1",
lossRate:'',
useNum:''
materialDescribe: rowData.describe,
materialBrand: rowData.brand,
materialUnit: rowData.unit,
materialProcessMethod:rowData.processMethod,
materialNum:'0'
}
})
layer.close(index);
}
function remove(id){
$("#bootstrap-sub-table-developModify").bootstrapTable('remove', {
field: 'id',
values: id
})
}
function removeRow(id){
$("#bootstrap-sub-table-material").bootstrapTable('remove', {
field: 'id',
values: id
// 逻辑删除前端的一行数据
function removePurchase(materialNo){
$("#bootstrap-table-purchase").bootstrapTable('remove', {
field: 'materialNo',
values: materialNo
})
}
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-developModifyOrder-edit').serialize());
}
}
</script>
</body>
</html>
Loading…
Cancel
Save