|
@@ -1568,6 +1568,7 @@ class WorkOrder extends Api
|
|
|
$params = $this->request->param();
|
|
$params = $this->request->param();
|
|
|
$updateData = [
|
|
$updateData = [
|
|
|
'mod_rq' => date('Y-m-d H:i:s'),
|
|
'mod_rq' => date('Y-m-d H:i:s'),
|
|
|
|
|
+ 'mod_id' => $params['登录用户'],
|
|
|
];
|
|
];
|
|
|
$res = \db('工单_相关附件')->where('UniqId', $params['UniqId'])->update($updateData);
|
|
$res = \db('工单_相关附件')->where('UniqId', $params['UniqId'])->update($updateData);
|
|
|
if ($res) {
|
|
if ($res) {
|
|
@@ -2432,10 +2433,15 @@ class WorkOrder extends Api
|
|
|
->join('工单_面料资料 b','a.order_id = b.BOM_工单编号 AND b.BOM_物料编码 = a.物料编码')
|
|
->join('工单_面料资料 b','a.order_id = b.BOM_工单编号 AND b.BOM_物料编码 = a.物料编码')
|
|
|
->join('物料_库存 c','a.物料编码 = c.物料编号 AND a.批次号 = c.批次号')
|
|
->join('物料_库存 c','a.物料编码 = c.物料编号 AND a.批次号 = c.批次号')
|
|
|
->where('a.receipt_number',$param['receipt'])
|
|
->where('a.receipt_number',$param['receipt'])
|
|
|
- ->field('a.order_id as 订单编号,a.款号,a.物料名称,a.number as 数量,a.rq as 日期,a.sys_id as 操作机台,
|
|
|
|
|
- a.departname,a.remark,
|
|
|
|
|
- a.receipt_number as 出库单据编号,a.recipient as 领用人员,b.BOM_颜色,c.单位,b.BOM_计划门幅 as 计划门幅,
|
|
|
|
|
- b.BOM_定额门幅 as 定额门幅,c.实际门幅,c.状态,c.库存数量,c.入仓总量')
|
|
|
|
|
|
|
+ ->field('a.id,a.order_id as 订单编号,a.款号,a.物料名称,a.number as 数量,a.rq as 日期,a.sys_rq as 创建日期,a.sys_id as 操作机台,
|
|
|
|
|
+ a.departname,a.remark,a.type as 退还类型,
|
|
|
|
|
+ a.receipt_number as 出库单据编号,a.recipient as 领用人员,b.BOM_颜色,c.单位,
|
|
|
|
|
+ b.BOM_计划用量 as 计划用料,
|
|
|
|
|
+ b.BOM_计划门幅 as 计划门幅,
|
|
|
|
|
+ b.BOM_标准用量 as 定额用料,
|
|
|
|
|
+ b.BOM_定额门幅 as 定额门幅,
|
|
|
|
|
+ c.实际门幅,c.状态,c.库存数量,c.入仓总量
|
|
|
|
|
+ ')
|
|
|
->whereNull('a.Mod_rq')
|
|
->whereNull('a.Mod_rq')
|
|
|
->select();
|
|
->select();
|
|
|
if (empty($list)){
|
|
if (empty($list)){
|
|
@@ -2470,7 +2476,7 @@ class WorkOrder extends Api
|
|
|
->where('Mod_rq', null)
|
|
->where('Mod_rq', null)
|
|
|
->where($where)
|
|
->where($where)
|
|
|
->where('name',$param['code'])
|
|
->where('name',$param['code'])
|
|
|
- ->order('rq desc')
|
|
|
|
|
|
|
+ ->order('sys_rq desc')
|
|
|
->limit(($page-1)*$limit,$limit)
|
|
->limit(($page-1)*$limit,$limit)
|
|
|
->select();
|
|
->select();
|
|
|
// 初始化一个合并后的数组
|
|
// 初始化一个合并后的数组
|
|
@@ -2489,6 +2495,7 @@ class WorkOrder extends Api
|
|
|
'物料名称' => $item['物料名称'],
|
|
'物料名称' => $item['物料名称'],
|
|
|
'总数' => floatval($item['number']),
|
|
'总数' => floatval($item['number']),
|
|
|
'日期' => $item['rq'],
|
|
'日期' => $item['rq'],
|
|
|
|
|
+ '创建日期' => $item['sys_rq'],
|
|
|
'操作机台' => $item['sys_id'],
|
|
'操作机台' => $item['sys_id'],
|
|
|
'领料人员' => $item['recipient'],
|
|
'领料人员' => $item['recipient'],
|
|
|
];
|
|
];
|
|
@@ -2603,10 +2610,6 @@ class WorkOrder extends Api
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 面料批次列表
|
|
* 面料批次列表
|
|
|
- * @return void
|
|
|
|
|
- * @throws \think\db\exception\DataNotFoundException
|
|
|
|
|
- * @throws \think\db\exception\ModelNotFoundException
|
|
|
|
|
- * @throws \think\exception\DbException
|
|
|
|
|
*/
|
|
*/
|
|
|
public function FabricLotList()
|
|
public function FabricLotList()
|
|
|
{
|
|
{
|
|
@@ -2653,4 +2656,219 @@ class WorkOrder extends Api
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 仓库管理
|
|
|
|
|
+ * 入库、出库、退还更新
|
|
|
|
|
+ */
|
|
|
|
|
+ public function rApictedit()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!$this->request->isPost()) {
|
|
|
|
|
+ $this->error('请求错误');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $param = Request::instance()->post();
|
|
|
|
|
+ if (empty($param)) {
|
|
|
|
|
+ $this->error('参数错误');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $logData = []; // 日志记录数组
|
|
|
|
|
+ $now = date('Y-m-d H:i:s');
|
|
|
|
|
+
|
|
|
|
|
+ foreach ($param as $item) {
|
|
|
|
|
+ $id = $item['id'] ?? null;
|
|
|
|
|
+ $newQty = floatval($item['数量'] ?? 0);
|
|
|
|
|
+ $name = $item['name'] ?? '';
|
|
|
|
|
+ $returnType = $item['退还类型'] ?? '';
|
|
|
|
|
+ $sysId = $item['sys_id'] ?? '未知用户';
|
|
|
|
|
+
|
|
|
|
|
+ if (!$id || !$name) {
|
|
|
|
|
+ $this->error('缺少必要参数');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 获取设备_报工日志 原记录
|
|
|
|
|
+ $record = \db('设备_报工日志')
|
|
|
|
|
+ ->field('id, 批次号, number, type')
|
|
|
|
|
+ ->where('name', $name)
|
|
|
|
|
+ ->where('id', $id)
|
|
|
|
|
+ ->find();
|
|
|
|
|
+
|
|
|
|
|
+ if (!$record) {
|
|
|
|
|
+ $this->error("未找到 ID 为 {$id} 的记录");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $batchNo = $record['批次号'];
|
|
|
|
|
+ $oldQty = floatval($record['number']);
|
|
|
|
|
+ $diff = $newQty - $oldQty;
|
|
|
|
|
+
|
|
|
|
|
+ // === 修改设备_报工日志.number(如果有变化) ===
|
|
|
|
|
+ if ($diff != 0) {
|
|
|
|
|
+ $updateSql = \db('设备_报工日志')
|
|
|
|
|
+ ->where('id', $id)
|
|
|
|
|
+ ->where('name', $name)
|
|
|
|
|
+ ->fetchSql(true)
|
|
|
|
|
+ ->update(['number' => $newQty]);
|
|
|
|
|
+
|
|
|
|
|
+ \db()->query($updateSql); // 执行 SQL
|
|
|
|
|
+
|
|
|
|
|
+ // 写入日志,增加 ids 字段
|
|
|
|
|
+ $logData[] = [
|
|
|
|
|
+ '批次号' => $batchNo,
|
|
|
|
|
+ '操作字段' => 'number',
|
|
|
|
|
+ '原值' => $oldQty,
|
|
|
|
|
+ '新值' => $newQty,
|
|
|
|
|
+ '操作人' => $sysId,
|
|
|
|
|
+ '操作类型' => $name,
|
|
|
|
|
+ '操作时间' => $now,
|
|
|
|
|
+ '修改表' => '设备_报工日志',
|
|
|
|
|
+ 'ids' => $id
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // === 获取同批次的记录以统计新合计 ===
|
|
|
|
|
+ $sameBatchList = \db('设备_报工日志')
|
|
|
|
|
+ ->field('number')
|
|
|
|
|
+ ->where('name', $name)
|
|
|
|
|
+ ->where('批次号', $batchNo)
|
|
|
|
|
+ ->select();
|
|
|
|
|
+
|
|
|
|
|
+ $newTotal = array_sum(array_column($sameBatchList, 'number'));
|
|
|
|
|
+
|
|
|
|
|
+ // === 获取物料_库存信息(加上 id 字段) ===
|
|
|
|
|
+ $inventory = \db('物料_库存')
|
|
|
|
|
+ ->field('id, 入仓总量, 领用数量, 库存数量, 退还数量')
|
|
|
|
|
+ ->where('批次号', $batchNo)
|
|
|
|
|
+ ->find();
|
|
|
|
|
+
|
|
|
|
|
+ if ($inventory) {
|
|
|
|
|
+ $stockId = $inventory['id']; // 记录当前库存表的 id
|
|
|
|
|
+ $inQty = floatval($inventory['入仓总量']);
|
|
|
|
|
+ $stockQty = floatval($inventory['库存数量']);
|
|
|
|
|
+ $useQty = floatval($inventory['领用数量']);
|
|
|
|
|
+ $returnQty = floatval($inventory['退还数量']);
|
|
|
|
|
+
|
|
|
|
|
+ if ($name == '入库') {
|
|
|
|
|
+ $newIn = $inQty + $diff;
|
|
|
|
|
+ $newStock = $stockQty + $diff;
|
|
|
|
|
+
|
|
|
|
|
+ $updateFields = [];
|
|
|
|
|
+
|
|
|
|
|
+ if ($newIn != $inQty) {
|
|
|
|
|
+ $updateFields['入仓总量'] = $newIn;
|
|
|
|
|
+
|
|
|
|
|
+ $logData[] = [
|
|
|
|
|
+ '批次号' => $batchNo,
|
|
|
|
|
+ '操作字段' => '入仓总量',
|
|
|
|
|
+ '原值' => $inQty,
|
|
|
|
|
+ '新值' => $newIn,
|
|
|
|
|
+ '操作人' => $sysId,
|
|
|
|
|
+ '操作类型' => '入库',
|
|
|
|
|
+ '操作时间' => $now,
|
|
|
|
|
+ '修改表' => '物料_库存',
|
|
|
|
|
+ 'ids' => $stockId
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($newStock != $stockQty) {
|
|
|
|
|
+ $updateFields['库存数量'] = $newStock;
|
|
|
|
|
+
|
|
|
|
|
+ $logData[] = [
|
|
|
|
|
+ '批次号' => $batchNo,
|
|
|
|
|
+ '操作字段' => '库存数量',
|
|
|
|
|
+ '原值' => $stockQty,
|
|
|
|
|
+ '新值' => $newStock,
|
|
|
|
|
+ '操作人' => $sysId,
|
|
|
|
|
+ '操作类型' => '入库',
|
|
|
|
|
+ '操作时间' => $now,
|
|
|
|
|
+ '修改表' => '物料_库存',
|
|
|
|
|
+ 'ids' => $stockId
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!empty($updateFields)) {
|
|
|
|
|
+ $updateStockSql = \db('物料_库存')
|
|
|
|
|
+ ->where('id', $stockId)
|
|
|
|
|
+ ->fetchSql(true)
|
|
|
|
|
+ ->update($updateFields);
|
|
|
|
|
+
|
|
|
|
|
+ \db()->query($updateStockSql);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ elseif ($name == '出库') {
|
|
|
|
|
+ if ($newTotal != $useQty) {
|
|
|
|
|
+ // 计算新的库存数量
|
|
|
|
|
+ $newStock = $inQty - $newTotal + $returnQty; // 入仓 - 领用 + 退还(可选)
|
|
|
|
|
+
|
|
|
|
|
+ $updateFields = [
|
|
|
|
|
+ '领用数量' => $newTotal,
|
|
|
|
|
+ '库存数量' => $newStock
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ $updateStockSql = \db('物料_库存')
|
|
|
|
|
+ ->where('id', $stockId)
|
|
|
|
|
+ ->fetchSql(true)
|
|
|
|
|
+ ->update($updateFields);
|
|
|
|
|
+
|
|
|
|
|
+ \db()->query($updateStockSql);
|
|
|
|
|
+
|
|
|
|
|
+ $logData[] = [
|
|
|
|
|
+ '批次号' => $batchNo,
|
|
|
|
|
+ '操作字段' => '领用数量',
|
|
|
|
|
+ '原值' => $useQty,
|
|
|
|
|
+ '新值' => $newTotal,
|
|
|
|
|
+ '操作人' => $sysId,
|
|
|
|
|
+ '操作类型' => '出库',
|
|
|
|
|
+ '操作时间' => $now,
|
|
|
|
|
+ '修改表' => '物料_库存',
|
|
|
|
|
+ 'ids' => $stockId
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ $logData[] = [
|
|
|
|
|
+ '批次号' => $batchNo,
|
|
|
|
|
+ '操作字段' => '库存数量',
|
|
|
|
|
+ '原值' => $stockQty,
|
|
|
|
|
+ '新值' => $newStock,
|
|
|
|
|
+ '操作人' => $sysId,
|
|
|
|
|
+ '操作类型' => '出库',
|
|
|
|
|
+ '操作时间' => $now,
|
|
|
|
|
+ '修改表' => '物料_库存',
|
|
|
|
|
+ 'ids' => $stockId
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ elseif ($name == '退还') {
|
|
|
|
|
+ if ($returnType == '退面料' && $newTotal != $returnQty) {
|
|
|
|
|
+ $updateStockSql = \db('物料_库存')
|
|
|
|
|
+ ->where('id', $stockId)
|
|
|
|
|
+ ->fetchSql(true)
|
|
|
|
|
+ ->update(['退还数量' => $newTotal]);
|
|
|
|
|
+
|
|
|
|
|
+ \db()->query($updateStockSql);
|
|
|
|
|
+
|
|
|
|
|
+ $logData[] = [
|
|
|
|
|
+ '批次号' => $batchNo,
|
|
|
|
|
+ '操作字段' => '退还数量',
|
|
|
|
|
+ '原值' => $returnQty,
|
|
|
|
|
+ '新值' => $newTotal,
|
|
|
|
|
+ '操作人' => $sysId,
|
|
|
|
|
+ '操作类型' => '退还',
|
|
|
|
|
+ '操作时间' => $now,
|
|
|
|
|
+ '修改表' => '物料_库存',
|
|
|
|
|
+ 'ids' => $stockId
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 批量写入日志
|
|
|
|
|
+ if (!empty($logData)) {
|
|
|
|
|
+ \db('物料_库存日志')->insertAll($logData);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $this->success('更新成功');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|